WordPress 最新修改过的文章列表

制作了一个 WordPress 归档(Archive)页面模板,将博客中所有后期修改过的文章,按照最后更新日期存档到一起,并可以分页显示。

模板使用 WordPress query_posts 函数进行数据查询。虽然 Codex 上介绍说最好使用 WP_Query,但是我无法将分页(paged)参数传进去,或者让之其作用。

之前曾经简单介绍过 WordPress 中页面(page)模板的制作。如果对页面模板不甚了解,可以先看看。下面简要介绍这方面的东西,主要还是记录我这里用的文章数据查询方法。

首先,将自己所用的主题的首页模板,一般是主题文件夹中的 index.php,复制一份,并改名为 template-lastupdated.php。顺便编辑该文件,在开头的 <?php 下面增加下面的内容,目的是给这个模板起个名字,好在 WordPress 的管理后台的“页面管理”中容易认出这个模板。

/**
Template Name: Template - Last Updated Posts Page
*/

其次,将下面的代码插入到该文件开头的 get_header(); ?> 前面。

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
    'post_status' => 'publish',
    'post_type' => 'post',
    'posts_per_page' => 10, // 每页文章数目
    'orderby' => 'modified', // 排序方式
    'order' => 'DESC',
    'paged' => $paged
 );

// 创建一个新的 filter 函数,用于确定那些经过修改的文章
// 实际上就是修改日期大于文章发表日期的那些文章
function filter_where( $where = '' ) {
    // 数据库查询条件:post_modified > post_date
    $where .= " AND DATE(post_modified) > DATE(post_date)";
    return $where;
}

// 主查询
add_filter( 'posts_where', 'filter_where' );
query_posts( $args );
remove_filter( 'posts_where', 'filter_where' );

// 为了在文章列表的时候只显示文章的的摘要
// 如果想显示文章全文,删除下面的 2 行
// 所以全局 $more 参数为 0
global $more;
$more = 0;

第三,保险起见,在该文件的靠近结尾的位置,或者更准确地说,在最后一个 endif; ?> 那里,在 endif;?> 之间回车换行,插入下面的代码:

// Reset Query
 wp_reset_query();

这是因为,前面通过 $args 设置更改了主查询 query_posts 的查询参数,现在给它重置一下。实际上没有这一步也没多大关系。

最后,将上述修改后的文件上传到主题文件夹中,然后到 WordPress 后台创建一个页面,根据需要写上标题,比如,最新更新过的的文章,在编辑页面“页面属性” -> “模板”那里选择“Template – Last Updated Posts Page”,发布此页面即可。

有兴趣的话请看看我这里的最近修改过的文章页面。©

本文发表于水景一页。永久链接:<http://cnzhx.net/blog/wordpress-updated-posts-archive/>。转载请保留此信息及相应链接。

时间过去太久,评论已关闭。
如果您有话要说,请到讨论区留言并给出此文章链接。
谢谢您的理解 :-)