我尝试为用户构建一个选项,以突出显示"相关帖子"要显示在单个帖子的底部,所以我将此代码放在" content-single.php"的底部:
<div class="related-post">
<?php
$args = array( 'post__in' => array(38328, 38359, 21321) );//it's going to be the user choice, for example, I put three id's
$related_query = new WP_Query($args);
if ($related_query):
echo '<div class="row">';
while ($related_query->have_posts()): $related_query->the_post();?>
<div class="col-sm-4">
<?php
if (has_post_thumbnail()):
the_post_thumbnail();
endif;
?>
<?php the_title() . '<br/>'; ?>
</div>
<?php endwhile;
echo '</div>';
wp_reset_postdata();
?>
</div>
但在某些帖子中,我收到了8个不同的帖子,在某些帖子中我没有收到任何帖子(虽然我只在帖子中放了三个id)。
我想问题是我尝试在主循环内循环。
我尝试使用query_posts
并使用get_posts
,但无法正常工作。
任何帮助都将不胜感激!
答案 0 :(得分:0)
我认为这与缺少的post_type
参数有关。但是你需要在循环结构中进行一些修正:
<div class="related-post">
<?php
$args = array( 'post_type' => 'your_post_type', 'post__in' => array(38328, 38359, 21321) );
$related_query = new WP_Query($args);
if( $related_query->have_posts() ){ ?>
<div class="row"><?php
while( $related_query->have_posts() ){ $related_query->the_post();?>
<div class="col-sm-4"><?php
if( has_post_thumbnail() ) the_post_thumbnail();
the_title();?>
</div><?php
}
wp_reset_postdata();?>
</div><?php
}?>
</div>
<强>更新强>
请尝试将'posts_per_page' => 3
添加到args
阵列。
答案 1 :(得分:0)
我有这个帖子的解决方案。希望你的查询帖子错了。
<div class="related-post">
<?php
$args = array(
'post_type' => 'your_post_type',
'post__in' => array(38328, 38359, 21321),
'post_status'=>'publish'
);
$related_query = new WP_Query( $args );
?>
<?php if ( $related_query->have_posts() ) : ?>
<div class="row">
<?php while ( $related_query->have_posts() ) : $related_query->the_post(); ?>
<div class="col-sm-4">
<!-- do stuff ... -->
the_post_thumbnail();
the_title();
</div>
<?php endwhile; ?>
</div>
<?php endif; wp_reset_postdata(); ?>
</div>
希望这样可以帮助您获取所需的输出。 确保您在post_in部分中提到的ID中发布了帖子。
答案 2 :(得分:0)
好吧,我设法通过在参数中添加'ignore_sticky_posts' => 1
来解决这个问题。谢谢@Pieter Goosen