我们的wordpress post loop结合并显示来自特定类别和自定义帖子类型的帖子。这有效,但不显示所有帖子。我认为post循环迭代特定类别中的帖子数量,而不是特定类别中的帖子数量+自定义帖子类型中的帖子数量。如何确保显示正确数量的帖子?
<?php
/*
Template Name: Articles & Cases
*/
get_header(); ?>
<div class="center-holder">
<div id="content">
<?php while ( have_posts() ) : the_post(); ?>
<?php the_title( '<h1>', '</h1>' ); ?>
<?php the_post_thumbnail( 'full' ); ?>
<?php the_content(); ?>
<?php if ( $cats = get_field( 'category' ) ) : ?>
<?php
$args = array(
'post_type' => array( 'post' ),
'category__in' => $cats,
'fields' => 'ids',
);
$articles = new WP_Query( $args );
wp_reset_postdata();
$args = array(
'post_type' => array( 'case_study' ),
'fields' => 'ids',
);
$case_study = new WP_Query( $args );
wp_reset_postdata();
$all_posts_ids = array_merge( $articles->posts, $case_study->posts );
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$args = array(
'post_type' => array( 'post', 'case_study' ),
'post__in' => $all_posts_ids,
'paged' => $paged,
);
query_posts( $args );
?>
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'blocks/content', get_post_type() ); ?>
<?php endwhile; ?>
<?php get_template_part( 'blocks/pager' ); ?>
<?php else: ?>
<?php get_template_part( 'blocks/not_found' ); ?>
<?php endif; wp_reset_query(); ?>
<?php endif; ?>
<?php endwhile; ?>
</div>
<?php get_sidebar( 'blog' ); ?>
</div>
<?php get_footer(); ?>
答案 0 :(得分:0)
有很多事情你做错了。
您正在使用页面模板,然后使用the loop
进行循环。
这可能会提取所有帖子,因为页面模板的最后一个回退是index.php
(如图here中所示)。
然后你在循环中进行3个额外的查询(因此,对于你循环的每个帖子,你进行3次额外的查询)。
最后一个查询,您正在使用覆盖主查询的query_posts()
。只是不要使用它。
所以攻击计划应该是:
我想展示什么?
我希望如何以及在何处展示它?
我需要做些什么来实现这个目标?
开始写下实现这一目标所需的东西。
???
利润!!!
如果您想控制特定的分类,请使用$taxonomy.php
模板($taxonomy
是分类法的名称。)。
希望这有帮助。