当我对$parents to $parents[]
public static function get_parents($post_id = false){
if (!$post_id){
$post_id = get_the_ID();
}
if (!$post_id){
global $wpdb;
if ($wpdb->last_result && count($wpdb->last_result) == 1){
$post_id = $wpdb->last_result[0]->ID;
}
}
$parents[]= get_metadata(\'post\', $post_id, WPKWP::$META_CHILD, false);
$something=count($parents);
if (count($parents) > 0){
return $parents;
}
return false;
}
查询监视器插件显示
Undefined offset: 0-wp-includes/meta.php:488 -Melding下面的代码似乎就是问题所在。如果我设置最后一行return $meta;
到return null;
错误似乎消失了。
public static function get_post_metadata($meta_value, $post_id, $meta_key, $single){
if (is_admin()){
return null;
}
remove_filter(\'get_post_metadata\', array(WPKWP::CLASS_NAME, \'get_post_metadata\'), 0);
$child_meta = get_metadata(\'post\', $post_id, $meta_key, false);
if (WPKWP::get_parent()){
$parent_meta = get_metadata(\'post\', WPKWP::get_parent(), $meta_key, false);
if (is_array($parent_meta) && is_array($child_meta)) {
$meta = array_merge($parent_meta, $child_meta);
} else {
$meta = $parent_meta;
}
} else {
$meta = $child_meta;
}
add_filter(\'get_post_metadata\', array(WPKWP::CLASS_NAME, \'get_post_metadata\'), 0, 4);
return $meta;
}
最合适的回答,由SO网友:nmr 整理而成
你应该改变$parents[]
到$parents
在get\\u parents()函数中:
$parents = get_metadata(\'post\', $post_id, WPKWP::$META_CHILD, false);
if ($parents !== FALSE && count($parents) > 0)
return $parents;
return false;
因为
get_metadata
在本例中返回数组。如果
$post_id
参数无效,
false
已返回。如果未设置元值,函数将返回空数组。因此
$parents
数组始终包含一个元素-false、空数组或带值数组。情况
count($parents) > 0
永远是真的。
定义变量$meta = null;
之前if (WPKWP::get_parent())
. 如果条件为true,则仅本地$meta
创建变量(在返回行中不可见)。
您定义函数get_parents
但在get_post_metadata()
你有WPKWP::get_parent()
.