WordPress的循环由元滤除(Wordpress loop to filter out by m

2019-10-17 13:45发布

的这种从以前的问题,下面就其中JanW: http://bit.ly/VQy9hb

我试图隐藏包含特定的元数据,在这种情况下meta_name =“smartPrivate”的帖子。

下面的函数工作,但遗憾的是还会影响菜单循环(它只是消失)。

有谁知道我怎么能出现在所有的循环隐藏这些职位,但不会影响到菜单(和谁知道什么...)

在此先感谢罗布

function hide_some_posts( $query ) {

    if (!is_user_logged_in()) {

        $query->set( 'meta_query', array(

            array(
                  'key' => 'smartPrivate',
                  'value' => 'smartPrivate_loggedIn',
                  'compare' => '!='
            ),
            array(
                  'key' => 'smartPrivate',
                  'value' => 'smartPrivate_loggedInMentors',
                  'compare' => '!='
            )

        ));
    }

  return $query;
}
add_filter( 'pre_get_posts', 'hide_some_posts' );

Answer 1:

所以,你的问题是,它会影响其他查询比主查询,如果我正确地理解你的处境。 这是相当多的,为什么is_main_query存在。 所以,试试这个:

function hide_some_posts( $query ) {


    if (!is_user_logged_in() && $query->is_main_query() ) {

        $query->set( 'meta_query', array(

            array(
                  'key' => 'smartPrivate',
                  'value' => 'smartPrivate_loggedIn',
                  'compare' => '!='
            ),
            array(
                  'key' => 'smartPrivate',
                  'value' => 'smartPrivate_loggedInMentors',
                  'compare' => '!='
            )

        ));
    }

  return $query;
}
add_filter( 'pre_get_posts', 'hide_some_posts' );


文章来源: Wordpress loop to filter out by meta