首先,这不是特定于插件的问题。我想知道为什么会发生这种情况?我正在使用@bainternet的Tax Meta类保存分类法Meta,使用options
桌子我从localhost(XAMPP Windows 5.5.19环境)上传了我的内容,我在选项表中找到了我的数据。一切正常。
现在我将我的站点上载到服务器(Linux | PHP 5.2.17),它无法从选项表中检索数据。
$type_icon_array = get_tax_meta( $type->term_id, \'offer_type_icon\' );
var_dump( $type->term_id ); //showing the id nicely
var_dump( $type_icon_array ); //showing null
函数检索数据失败。功能如何:
//get term meta field
public function get_tax_meta($term_id,$key,$multi = false){
$t_id = (is_object($term_id))? $term_id->term_id: $term_id;
$m = get_option( \'tax_meta_\'.$t_id);
if (isset($m[$key])){
return $m[$key];
}else{
return \'\';
}
}
我绕过了Tax元函数,尝试了WP的基本功能:
$tst1 = get_option( \'tax_meta_6\' );
var_dump($tst1); //showing null
如您所见,数据库的值为
options
表格:
但你可以看到发生了什么:
然后,我在Taxonomy ID#2中上载了一个图像(我在远程服务器上时),您可以看到该图像显示在那里。
这里会发生什么,值以db为单位,但是get_option()
没有那个价值?(但在我更新that particular environment) 我甚至试过:
get_option( \'tax_meta_6\', array() );
没有运气!:(
我知道WordPress的最低要求是PHP 5.2.4,但缺少开发版本会导致这样的大屠杀吗?
编辑我找到了这样做的原因COULD/MIGHT 发生:我检查了本地和服务器序列化数据,发现其中有一点不匹配,假设我的本地数据是:
a: 1: {
s: 15: "offer_type_icon";
a: 2: {
s: 2: "id";
s: 3: "428";
s: 3: "url";
s: 61: "http://localhost/example/wp-content/uploads/2015/04/image.png";
}
}
当我将所有基本URL上载到服务器时,服务器数据将变为:
a: 1: {
s: 15: "offer_type_icon";
a: 2: {
s: 2: "id";
s: 3: "428";
s: 3: "url";
s: 61: "http://example.com/wp-content/uploads/2015/04/image.png";
}
}
URL正在更改,但更改的URL的字符串计数与localhost的相同。但它应该是
44
因为新的基本URL少了17个字符。
如果这是原因,那么当db使用站点URL序列化数据时,如何解决此类WP迁移?
编辑2
YES, this IS the reason.
序列化的URL数据正在更改,但其字符串计数没有更改。