Wordpress中PHP后查询代码的奇怪副作用

时间:2017-11-07 11:13:22

标签: php wordpress menu blogs posts

为什么functions.php中的这段代码会产生这种奇怪的副作用,即在wordpress的非主页中将菜单切换到移动版本?

function my_blog_category( $query ) {
 if ( $query->is_home() && !is_front_page() || is_archive()) {
 $query->set( 'cat', '6');
 }
}
add_action( 'pre_get_posts', 'my_blog_category' );

此代码应仅影响博客和存档页面中的帖子,为什么会这样?

1 个答案:

答案 0 :(得分:0)

它不起作用的原因是因为你问:

  • 如果$query->is_home() && !is_front_page()
  • 或,is_archive()

使用括号对条件表达式进行分组。

function my_blog_category( $query ) {
    if ( $query->is_home() && ( !is_front_page() || is_archive() ) ) {
        $query->set( 'cat', '6');
    }
}
add_action( 'pre_get_posts', 'my_blog_category' );

现在你问:

  • 如果$query->is_home()
    • 并且,如果!is_front_page()is_archive()