由于我的模板是用的是XIU,置顶文章已经设置了专门的模块,变成了首页最上面的4个豆腐块样式,由于某些原因,我想让置顶文章显示在文章列表里,所以自己研究了一下,最终在index.php里增加了一些代码,实现了这个功能。
首先我要了解wordpress是如何调用置顶文章的,所以搜索到了以下内容。
<?php $sticky = get_option('sticky_posts'); rsort( $sticky ); $sticky = array_slice( $sticky, 0, 5); query_posts( array( 'post__in' => $sticky, 'caller_get_posts' => 1 ) ); if (have_posts()) :while (have_posts()) : the_post(); ?> <li><a href="<?php the_permalink(); ?>" target="_blank"><?php the_title(); ?></a></li> <?php endwhile; endif; ?>
代码解释如下:
- rsort( $sticky ); 对置顶文章数组逆向排序,即大ID在前;
- $sticky = array_slice( $sticky, 0, 5);控制显示置顶文章的数量,输出置顶文章数,请修改5,0不要动,如果需要全部置顶文章输出,可以把这句注释掉;
- ‘post__in’ => get_option(‘sticky_posts’)确定了该LOOP调用的是置顶文章列表。
- ‘caller_get_posts’的作用是排除非指定性文章,即除了置顶文章之外,不显示其他的文章。
- <li></li>这是最终显示样式,当然可以自定义
按照以上的内容把需要的东西提取出来
$sticky = get_option('sticky_posts'); rsort( $sticky ); $sticky = array_slice( $sticky, 0, 1); query_posts( array( 'post__in' => $sticky, 'caller_get_posts' => 1 ) );
这是我需要的内容,仅显示一个置顶文章,最后加上自己的需要显示的样式,放在index.php里的文章列表中,由于这个代码和调用其他文章的代码属于并存的,所以在文章列表其他页也会显示这篇置顶文章,所以需要增加一个页码判断,代码如下
if( $paged && $paged > 1 ){}else{ 上面的调用代码 }
最终算是实现这个功能,还有其他好的方法正在进一步发掘中,有高手请回复谢谢!