我能做什么:
当当前类别中有粘性帖子时,我已经能够显示它了。当没有粘性帖子时就会出现问题:它不会像应该的那样显示最新的帖子(实际上id不会显示任何内容)。
它就像主页上的一个符咒:当有粘性帖子时,它会显示出来;当没有粘性帖子时,它会显示最新的帖子。
这是我的代码:
<?php
$current_object = get_queried_object_id(); // Get the category ID and store it in a variable
// Display sticky post or latest post :
$args = array(
\'posts_per_page\' => 1,
\'post__in\' => get_option( \'sticky_posts\' ),
\'cat\' => $current_object, // Current category ID
\'ignore_sticky_posts\' => true,
);
$featured_query = new WP_query( $args );
if ( $featured_query->have_posts() ) : ?>
<div class="featured-post">
<?php
while ( $featured_query->have_posts() ) :
$featured_query->the_post();
the_title(\'<h2>\', \'</h2>\');
the_excerpt();
endwhile;
wp_reset_postdata();
?>
</div>
<?php endif; ?>
我想要实现的目标:
我希望我的分类页面显示属于该分类的粘性帖子(如果存在),如果没有,我希望分类页面显示该分类中发布的最新帖子。
我错过了什么?
最合适的回答,由SO网友:PhpDoe 整理而成
该代码当然并不完美,但它确实起到了作用:
<?php
// Store the current category ID :
$current_object = get_queried_object_id();
// Get sticky post :
$args = array(
\'posts_per_page\' => 1,
\'post__in\' => get_option( \'sticky_posts\' ),
\'cat\' => $current_object,
\'ignore_sticky_posts\' => true,
);
$sticky_query = new WP_query( $args );
// Get latest post :
$args = array(
\'posts_per_page\' => 1,
\'cat\' => $current_object,
\'ignore_sticky_posts\' => true,
);
$latest_query = new WP_query( $args );
// If there is a sticky post in the current category :
if ( $sticky_query->have_posts() ) : ?>
<div class="sticky-post">
<?php
while ( $sticky_query->have_posts() ) :
$sticky_query->the_post();
the_title();
endwhile;
wp_reset_postdata();
?>
</div>
<?php
// If there is no sticky post, display the latest published post :
elseif ( $latest_query->have_posts() ) : ?>
<div class="latest-post">
<?php
while ( $latest_query->have_posts() ) :
$latest_query->the_post();
the_title();
endwhile;
wp_reset_postdata();
?>
</div>
<?php endif; ?>
这里有两个查询。第一个用于获取和显示属于当前类别的贴子,第二个用于获取和显示同一类别中的最新贴子(如果没有要显示的贴子)。