我如何才能获得将为存档页面运行的查询?

时间:2016-04-18 作者:Jeremy Warne

当用户访问我网站上的post-type归档页面时,我有一堆钩子和过滤器,它们运行在该查询上,结果就是这样。在不同的请求中,我如何说“我希望在转到/存档时运行查询”,以便在不同的上下文中获得相同的帖子?

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

在每个挂钩和;过滤器处理程序,除了检查存档条件外,还检查自定义查询变量,然后可以为自定义/手动查询设置该变量。例如,您可能有:

function wpse_223991_pre_get_posts( $wp_query ) {
    if ( $wp_query->is_main_query() && $wp_query->is_post_type_archive( \'my_post_type\' ) ) {
        // Awesome custom stuff
    }
}

add_action( \'pre_get_posts\', \'wpse_223991_pre_get_posts\' );
。。。将其更改为:

function wpse_223991_pre_get_posts( $wp_query ) {
    if ( ! $do_it = $wp_query->is_main_query() && $wp_query->is_post_type_archive( \'my_post_type\' ) )
        $do_it = $wp_query->get( \'custom_stuff_please\' );

    if ( $do_it ) {
        // Awesome custom stuff
    }
}

add_action( \'pre_get_posts\', \'wpse_223991_pre_get_posts\' );
现在,除了运行主自定义帖子类型归档之外,您还可以在设置custom_stuff_please 在自定义查询中:

$query = new WP_Query([ \'custom_stuff_please\' => true ]);

相关推荐

将wp_Query替换为wp_User_Query

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