首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过另一个wp过滤器过滤meta_query Wordpress结果

通过另一个wp过滤器过滤meta_query Wordpress结果
EN

Stack Overflow用户
提问于 2013-04-16 03:27:48
回答 1查看 327关注 0票数 0

首先,很抱歉这个标题,我不知道如何用几句话来解释这个问题!

我有一个查询,它从具有元键的main_query中删除帖子/页面。

然而,在一个特定的页面(首页)上,我也想按一个类别(首页新闻)进行过滤。我试着添加下面的代码,但它崩溃了。

有人能帮我改进一下吗?

为了清楚起见,我只想按全局的meta_keys和meta_keys以及一个模板的类别进行过滤,front-page.php

`函数hide_private_posts( $query ){

代码语言:javascript
复制
// If user isn't logged in, hide all private posts / pages
if( !is_user_logged_in() ) {

    if ( $query->is_main_query() ) {

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

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

        ));
    }

    // If user is logged in but a learner, show logged in posts / pages
    } else if( is_user_sso_role( array('learner') ) ) {

    if ( $query->is_main_query() ) {

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

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

        ));
        }

    } // Else don't filter posts and pages

    if ( is_front_page() ) {
        query_posts( $query . '&category_name=front-page-news' );
    }

return $query;
}
add_filter('pre-get-posts' , 'hide_private_posts');`
EN

回答 1

Stack Overflow用户

发布于 2013-04-16 20:47:21

好的--为了结束这一切。

我使用的查询query_posts似乎重置了循环并覆盖了之前放置的meta_queries。

因此,这可以很好地工作,并保留meta_query过滤。

代码语言:javascript
复制
if ( $query->is_home() && $query->is_main_query() ) {
    $query->set( 'category_name', 'front-page-news');
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16023270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档