我的情况是:我有一个类别和一些单独定义的帖子列表,这些帖子列表始终显示在类别页面的顶部。实际的或默认的帖子将在稍后的第2页或通过ajax显示。 通过简单地创建一个新的WP_Query即可解决此问题,但是wordpress实际上在主查询执行之前就执行了整个不必要的过程,只有在用户请求第2页或通过ajax请求时才应执行。 我使用钩子“ pre_get_posts”来更改主查询本身,但是只能按类别显示这些帖子,而不能通过定义帖子列表来显示。
答案 0 :(得分:0)
您的实现可能很混乱……您可以张贴您编写的代码并描述添加代码的位置吗?
快速问题:您是否尝试过创建返回所需帖子的简码?然后,您可以使用[your-shortcode]在后端内部使用简码,还是使用do_shortcode('your-shortcode')使用代码?
答案 1 :(得分:0)
实际上这是一个错误测试,这是我的代码,它可以正常工作:
function rewrite_main_query ($query ){
if( $query->is_main_query() && $query->is_category){
global $wp_query;
$postid=37; //the post id wanted
$query->set('p',$postid);
}
}
add_action('pre_get_posts', 'rewrite_main_query');
以前,我改用'post__in'而不起作用,我认为它们对'post__in'和'p'的功能相同,并且没有对其进行测试。现在可以与“ p”一起使用了。