您不应该使用query_posts
总之,这只是个问题,而且很容易失败
Note: 此功能不适用于插件或主题。如后文所述,有更好、性能更好的选项来更改主查询。query\\u posts()是一种过于简单且有问题的方法,通过将页面的主查询替换为新的查询实例来修改它。它效率低下(重新运行SQL查询),并且在某些情况下会彻底失败(尤其是在处理POST分页时)
我甚至不认为您需要在这里运行自定义查询,更不用说两个了。我认为您在这里要做的是将实际查询一分为二,以便在post 1和post 2之间添加自定义字段
我将返回到主查询并按原样使用它。内置循环计数器$wp_query->current_post
在模板中的任何位置都可用,因此您可以使用它来统计您的帖子
这是未经测试的,但您很可能可以这样做。只需将此添加到循环之后*请记住,循环计数器从零开始,而不是从一开始
if( 0 == $wp_query->current_post ) {
// Add whatever you need to add to appear after post one
}
如果你需要分页,并且在每页的第一篇文章之后需要这样做,我想这样的方法会管用的
if( 0 == $wp_query->current_post || 0 == $wp_query->current_post%JUST_ADD_YOUR_POSTS_PER_PAGE_VALUE_HERE ) {
// Add whatever you need to add to appear after post one
}
EDIT
动态发生了巨大的变化,所以我的第一种方法行不通。您需要运行两个自定义循环,因为这两个循环完全不同。我建议使用
WP_Query
代替
query_posts
. 你甚至可以使用
get_posts
作为另一种选择。
这里有一个非常重要的注意事项,无论何时运行自定义查询,都必须重置它们,否则它们将影响后面的任何其他查询,我认为这可能是您首先遇到的问题。
试试这样的
<?php $query_one = new WP_Query(\'cat=4&posts_per_page=5\'); ?>
<?php if ( $query_one->have_posts() ) : while ( $query_one->have_posts() ) : $query_one->the_post(); ?>
<h1><?php the_title() ;?></h1>
<?php the_post_thumbnail(); ?>
<?php the_excerpt(); ?>
<?php endwhile; else: ?>
<p>Sorry, there are no posts to display</p>
<?php endif; ?>
<?php wp_reset_postdata(); // VERY VERY IMPORTANT?>
<hr>
<?php // PLACE YOUR FIELD HERE ?>
<?php $query_two = new WP_Query(\'cat=5&posts_per_page=5\'); ?>
<?php if ( $query_two->have_posts() ) : while ( $query_two->have_posts() ) : $query_two->the_post(); ?>
<h2><?php the_title() ;?></h2>
<?php the_excerpt(); ?>
<?php endwhile; else: ?>
<p>Sorry, there are no posts to display</p>
<?php endif; ?>
<?php wp_reset_postdata(); // VERY VERY IMPORTANT?>