我想设置我的模板,以便页面显示一个类别slug与页面slug匹配的帖子列表。因此,在“关于我们”(“About”)的页面上,贴上了类别slug“About”的帖子。边栏应该显示这些帖子的列表(我需要硬编码,没有插件)。指数php应该显示所有帖子,不包括页面上显示的帖子。
这是一个自定义循环,生成我将添加到侧栏的最近帖子列表。php。这需要修改,以便只显示与页面匹配的类别中的帖子。
<ul>
<?php
query_posts( \'posts_per_page=5\' );
if ( have_posts() ) :
while ( have_posts() ) : the_post();
?><li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li><?php
endwhile;
endif;
wp_reset_query();
?>
</ul>
我试着尽可能清楚地解释,但有点混乱,所以请告诉我需要更清楚地解释什么。
SO网友:mrwweb
如果这是在一页。php(或类似)模板,然后使用query_posts()
这是个坏主意,可能会产生一些非常糟糕的后果。我也更喜欢WP_Query
结束get_posts()
因为它很容易让您使用模板标记,而且它明确存在于页面上运行二次循环。
<?php
global $post;
$my_query_args = array(
\'posts_per_page\' => 5, // change this to any number or \'0\' for all
\'tax_query\' => array(
array(
\'taxonomy\' => \'category\',
\'field\' => \'slug\',
\'terms\' => $post->post_name // this gets the page slug
)
)
);
// a new instance of the WP_query class
$my_query = new WP_Query( $my_query_args );
if( $my_query->have_posts() ) : while( $my_query->have_posts() ) : $my_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>
<?php endwhile; endif; wp_reset_postdata(); ?>