Axiu Blog
ky()` 判断或者 `query(...)` 来输出。 但是在具体实施过程中遇到了三个问题: * 不显示置顶文章则每页文章有多有少,看着不爽。 * 前一页、后一页功能失效。 * archive等归档页面失效。 <!-- google\_ad\_client = "ca-pub-1851998914253091"; /\* 单页文章 \*/
置顶文章是wp2.7引进的一个功能,具体作用如名称“置顶”。由于设置方便,样式多样并且合乎很多人的偏好,所以用处比较大。昨天折腾的时候想添加一个功能:首页的顶部框框里滚动显示置顶文章,首页内容区隐藏置顶文章。解决办法可以用 `is_sticky()` 判断或者 `query(...)` 来输出。 但是在具体实施过程中遇到了三个问题: * 不显示置顶文章则每页文章有多有少,看着不爽。 *
置顶文章是wp2.7引进的一个功能,具体作用如名称“置顶”。由于设置方便,样式多样并且合乎很多人的偏好,所以用处比较大。昨天折腾的时候想添加一个功能:首页的顶部框框里滚动显示置顶文章,首页内容区隐藏置顶文章。解决办法可以用 `is_sticky()` 判断或者 `query(...)` 来输出。 但是在具体实施过程中遇到了三个问题: * 不显示置顶文章则每页文章有多有少,看着不爽。 *
不显示(只显示)置顶文章
Max

置顶文章是wp2.7引进的一个功能,具体作用如名称“置顶”。由于设置方便,样式多样并且合乎很多人的偏好,所以用处比较大。昨天折腾的时候想添加一个功能:首页的顶部框框里滚动显示置顶文章,首页内容区隐藏置顶文章。解决办法可以用 is_sticky() 判断或者 query(...) 来输出。

但是在具体实施过程中遇到了三个问题:

  • 不显示置顶文章则每页文章有多有少,看着不爽。
  • 前一页、后一页功能失效。
  • archive等归档页面失效。
<!-- google\_ad\_client = "ca-pub-1851998914253091"; /\* 单页文章 \*/ google\_ad\_slot = "4510400700"; google\_ad\_width = 468; google\_ad\_height = 15; //-->

**一、首先可以肯定,直接判定 !is_sticky() 就输出的办法是可行的。**但是分页依旧按照原来的,比如第一页的9篇文章中有4篇置顶的,除去置顶文章,第一页就只显示4篇文章,对于边栏内容比较丰富的同学们,主要内容部分必然会空出一大片。

**二、其次,用 query_posts() 可以吗?**当然,这也是官方给出的解决方案。只需按需要在while(…)前加入

$paged = get_query_var( 'page' ) ? get_query_var( 'page' ) : 1; $sticky = get_option( 'sticky_posts' ); $args = array( 'ignore_sticky_posts' => 1,//忽略sticky_posts,不置顶,但是输出置顶文章 'post__not_in' => $sticky,//排除置顶文章,不输出 'paged' => $paged ); query_posts( $args );

这里遇到了一个问题,由于这个主题脱胎于twenty ten,所以文章列表显示用的是loop.php文件,稍微看看可以知道,所有需要列表文章的地方全是在这一个文件中实现的,所以在这里面改明显是不行的,直接影响的是所有页面。所以最后的解决办法还是在index.php里面的 get_template_part( 'loop', 'index' ); 的前面加入上述的语句,后面记得 wp_reset_query(); 以防不测。

三、附上只输出置顶文章的解决办法:

/* 获取所有置顶文章 */ $sticky = get_option( 'sticky_posts' ); /* 对这些文章排序, 日期最新的在最上 */ rsort( $sticky ); /* 获取5篇文章 */ $sticky = array_slice( $sticky, 0, 5 ); /* 输出这些文章 */ query_posts( array( 'post__in' => $sticky, 'ignore_sticky_posts' => 1 ) ); while ( have_posts() ) : the_post();
/* 输出内容 */ endwhile; wp_reset_query();

Comments