今天发现一个奇怪的问题,我用了Loper主题自带的“最新发表”和“随机文章”边栏,但边栏的列表里总是存在置顶的文章,这让人很郁闷。然后我尝试用了一下官方自带的“最新发表”边栏,发现没有出现置顶的文章,看了这又是Loper的一个Bug。

那么我就来找边栏的定义文件,其实我对php不熟,虽然找到了文件,但不怎么看的懂。

官方默认的文件在\wp-includes\default-widgets.php。

Loper主题的边栏定义文件在\functions\loperwidget.php。

然后找到对应的widget,对比下源码:

/**
 * Recent_Posts widget class
 *
 * @since 2.8.0
 */
class WP_Widget_Recent_Posts extends WP_Widget {
	function __construct() {
...
		$r = new WP_Query(array('posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true));
		if ($r->have_posts()) :

 

   ///////////////////最新文章////////////
class loper_widget3 extends WP_Widget {
...
					<?php $posts = query_posts($query_string . "orderby=date&showposts=$limit" ); ?>
					<?php while(have_posts()) : the_post(); ?>

相比而言,官方的筛选条件更科学,包括文章状态必须是公开的,忽略置顶。所以我们要把忽略置顶也加到筛选条件里,加好后如下:

<?php $posts = query_posts($query_string . "orderby=date&showposts=$limit&ignore_sticky_posts=true" ); ?>

当然随机文章那个边栏也需要改一下,这样大家应该能明白了吧。

Loper