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”,发布此页面即可。

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

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

雁过留声,人过留名

您的电子邮箱地址不会被公开。 必填项已用 * 标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>