【将完整的帖子和来自两种不同帖子类型的4个摘录结合起来】我正在尝试使最新的帖子成为完整的帖子。该帖子可以来自两种不同的帖子类型”
post”
和”
tutorial”
。我还想显示四个摘录, 两个摘录来自”
post”
帖子类型, 两个摘录自”
tutorial”
post类型。我不想在摘要中重复完整的帖子。
我尝试使用一个WP_Query, 这几乎使我明白了。我也尝试过使用多个WP_Query, 但这并不是那么幸运。
$args= array(
'post_type' =>
array( 'post', 'tutorial' ), 'post_per_page' =>
5
);
$query = new WP_Query( $args );
if ( $query->
have_posts() ) :
$count = 0;
while ( $query->
have_posts() ) : $query->
the_post();
if ( $count == 0 ) { ?>
<
h2>
<
?php the_title();
?>
<
/h2>
<
?php the_content();
$count ++;
} else { ?>
<
h2>
<
?php the_title();
?>
<
/h2>
<
?php the_excerpt();
}
endwhile;
endif;
wp_reset_postdata();
?>
所以这段代码使我非常接近。但是摘录不是我想要的。我希望它显示两个” 帖子” 摘录和两个” 教程” 摘录。现在显示的是” 指南” 的一个摘录和” 帖子” 的三个摘录。
#1要在一个查询中进行设置, 该任务会有些复杂。我为你编写了一个代码, 其中包含每个步骤的注释。请检查一下。
// first get last published post
$last_post = get_posts(
array(
'post_type' =>
array( 'post', 'tutorial' ), 'numberposts' =>
1
)
);
// get two posts excluding $last_post which might be a post
$last_two_posts = get_posts(
array(
'post_type' =>
array( 'post' ), 'numberposts' =>
2, 'exclude' =>
array($last_post[0]->
ID)
)
);
// get two tutorial excluding $last_post which might be a tutorial
$last_two_tutorials = get_posts(
array(
'post_type' =>
array( 'tutorial' ), 'numberposts' =>
2, 'exclude' =>
array($last_post[0]->
ID)
)
);
$posts = array_merge($last_post, $last_two_posts, $last_two_tutorials);
foreach( $posts as $post ) {
setup_postdata($post);
// print content only for first post and excerpt for others
if ($post->
ID == $last_post[0]->
ID) {
the_content();
} else {
if($post->
post_type == 'post') {
echo '<
div class="post-excerpt">
' . get_the_excerpt() . '<
/div>
';
} else {
echo '<
div class="tutorial-excerpt">
' . get_the_excerpt() . '<
/div>
';
}
}
}wp_reset_postdata();
推荐阅读
- 评论未在WordPress中显示-single.php似乎没有通过comment.php
- WordPress主题开发中的代码块和滑块
- 子主题functions.php无法正常工作
- 解决问题(子style.css不会覆盖父style.css)
- 使用钩子更改分类法”分层”设置
- 更改previous_post_link中的WordPress%title变量输出
- 更改网站默认语言(WordPress)
- 将搜索结果页面更改为自定义post类型的单页
- ansible异步任务