默认固定链接结构导致通知:未定义属性:WP_QUERY::$POST

时间:2013-01-10 作者:dev-jim

我使用wp作为会员网站。我使用页面进行用户登录、管理帖子、编辑个人资料等。

当我应用默认的permalink结构时,我发现调试模式会在每个页面(而不是post页面)上显示此通知。

Notice: Undefined property: WP_Query::$post in /var/www/example/wp-includes/query.php on line 2986 Notice: Trying to get property of non-object in /var/www/example/wp-includes/query.php on line 3349 
但是,当我为permalink结构使用post名称时,这个通知就消失了。

虽然这似乎不是一个严重的问题(是吗?),但我想知道是什么导致了这个警告?

谢谢

1 个回复
最合适的回答,由SO网友:dev-jim 整理而成

最后我找到了导致这个问题的原因pre_get_post 钩因为我使用is_page 检查特定页面,这是不合适的。

这就是我所做的

function check_page($wp_query){
   if($wp_query->is_page(array(\'1\',\'2\',\'3\')) ){
           //do something here
     }
  return $wp_query;
}
add_action( \'pre_get_posts\', \'check_page\' );
因此,我的解决方案是:

 function check_page($wp_query){
    $pageidarray = array(\'1\',\'2\',\'3\');
   if($wp_query->is_page() && in_array($wp_query->query_vars[\'page_id\'], $pageidarray) ){
           //do something here
     }
  return $wp_query;
}
add_action( \'pre_get_posts\', \'check_page\' );
问题已解决。

结束

相关推荐

WooCommerce permalinks

我有以下问题:当我转到WooCommerce类别时,链接显示如下:http://www.example.com/product-category/category/其中粗体文本是链接,其余是需要显示的产品类别。当我进入WooCommerce设置并进入pages选项卡时,我可以选择更改productcategory slug。如果我在此文本字段中填写以下内容:%product_cat% 链接显示如下:http://www.example.com/category/category/我想在我的链接中显示的是: