试图在wordpress中获取非对象的属性

时间:2013-04-23 05:53:24

标签: php wordpress properties

我的wordpress function.php文件中有一个函数,它应该用slug而不是ID来排除页面。现在它工作正常,但在某些情况下会导致:尝试在第128行的/Users/kailoon/Sites/wordpress/wp-content/themes/ebookie-wp/functions.php中获取非对象的属性:

array_push($ids, $page->ID)

问题是我无法在我自己的localhost上重现此错误。这个函数的完整代码是这样的。有人可以帮忙吗?

function exclude_by_slug($slugs){
    $slugs = preg_split("/,s?/", $slugs);
    $ids = array();

    foreach($slugs as $page_slug){
        $page = get_page_by_path($page_slug);
        array_push($ids, $page->ID);
    }
    return implode(",", $ids);
}

1 个答案:

答案 0 :(得分:0)

该错误意味着有时get_page_by_path没有获取页面,因此$page为空。在尝试获取ID并推送它之前,您需要进行测试以确保它不为null。

你的分裂正则表达式是可疑的:你正在分裂一个逗号后面跟一个可选的小写字母''。你确定你的意思不是'\ s'吗?如果那实际上是在你的代码中,那么就会删掉任何以它开头的slu',这会导致get_page_by_path失败。