未定义的偏移量:0-wp-includes/meta.php:488-Melding

时间:2018-07-24 作者:Alt C

当我对$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;
    }

1 个回复
最合适的回答,由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().

结束