Pre_Get_Posts:仅通过wp_usermeta值获取帖子

时间:2016-08-31 作者:Max

我在我的作者上添加了一个元字段(company). 如何仅显示具有特定公司价值的作者撰写的帖子(company1company2 例如)?

我想在pre_get_posts 滤器

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

这个WP_Query Object 不支持通过检索帖子author_meta 因此pre_get_posts hook. 下一个最好的办法是快速WP_User_Query 并通过特定的author_meta 然后将我们的查询限制为仅从这些作者那里获取帖子。下面是它的样子:

/**
 * Modify Queries 
 *
 * @param WP_Query Object $query
 */
function theme_pgp( $query ) {

    // If we\'re on admin side, return
    if( is_admin() ) {
        return;
    }

    // Only apply to main queries
    if( $query->is_main_query() ) {

        // Get all users with a Company field
        $users = new WP_User_Query( array(
            \'meta_key\'      => \'company\',
            \'meta_value\'    => \'company1\',
            \'fields\'        => \'ID\',
        ) );
        $authors = $users->get_results();

        if( ! empty( $authors ) ) {
            $query->set( \'author__in\', $authors );
        }
    }
}
add_action( \'pre_get_posts\', \'theme_pgp\' );

相关推荐

将wp_Query替换为wp_User_Query

我在插件中制作了一些订阅者档案和单曲(个人资料页),其中我还包括了一个“用户单曲”模板,通过template_include. 不过,我正在尝试从插件中删除一些模板,以使其使用主题模板。我用了locate_template( \'single.php\' ) 从活动主题中选择单个模板。我没有使用全局wp_query 在本例中显示我的内容,但页面显示了基于查询默认值的循环(十篇帖子)。我想知道的是,我是否可以完全放弃默认查询,用wp_user_query 我可以将查询到的用户ID输入其中。然后我想筛选the