2013-04-23 103 views
0

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

array_push($ids, $page->ID) 

的问题是,我不能在我的本地主机重现此错误。这个函数的完整代码就像这样。有人可以帮忙吗?

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); 
} 
+0

在循环中每次调试var $ page_slug的值以查看值是多少。 – 2013-04-23 11:51:06

回答

0

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

你的分割正则表达式是可疑的:你在分割逗号后跟一个可选的小写's'。你确定你不是指'\ s'吗?如果这实际上是在你的代码中,那么将会从其开始的任何段落中删除's',这将导致get_page_by_path失败。

相关问题