如何在WordPress帖子列表中添加可排序的上次更新时间列
如果您管理的博客或网站内容会定期更新,那么快速查看每篇文章的最后修改时间会很有帮助。默认情况下,WordPress 的管理面板只显示发布日期,但您可以轻松添加“上次更新”列,并通过几行代码实现可排序。
在本教程中,我将向您展示如何在WordPress 管理仪表板的“ 帖子 ”->“ 所有帖子 ”屏幕中添加“ 上次更新 ”列。
别担心!这很适合新手。您可以将下面的代码复制粘贴到主题文件中,或者使用像Code Snippets这样的代码片段插件,这样就无需直接编辑主题文件了。
推荐:[最新版]Filter Everything插件下载WordPress通用过滤器插件
添加“上次更新”列的分步代码
1、将列添加到帖子列表
此功能在 WordPress 管理员的帖子列表中添加了一个名为“上次更新”的新列。
function custom_add_last_updated_column( $columns ) {
$columns['last_updated'] = 'Last Updated';
return $columns;
}
add_filter( 'manage_posts_columns', 'custom_add_last_updated_column' );
2、在新列中显示上次修改日期
这里,我们使用 来填充每篇文章的修改日期列get_the_modified_date()
。
function custom_show_last_updated_column( $column_name, $post_id ) {
if ( 'last_updated' === $column_name ) {
echo esc_html( get_the_modified_date( 'M d, Y', $post_id ) );
}
}
add_action( 'manage_posts_custom_column', 'custom_show_last_updated_column', 10, 2 );
3、使列可排序
我们通过将其映射到字段来告诉 WordPress 允许对该新列进行排序post_modified
。
function custom_sortable_last_updated_column( $columns ) {
$columns['last_updated'] = 'modified';
return $columns;
}
add_filter( 'manage_edit-post_sortable_columns', 'custom_sortable_last_updated_column' );
推荐:使用WordPress函数update_metadata()更新指定对象的元数据
4、调整查询以按上次修改日期排序
当您单击“上次更新”列标题时,此步骤会使排序真正起作用。
function custom_sort_last_updated_column( $query ) {
if ( ! is_admin() || ! $query->is_main_query() ) {
return;
}
if ( $query->get( 'orderby' ) === 'modified' ) {
$query->set( 'orderby', 'modified' );
}
}
add_action( 'pre_get_posts', 'custom_sort_last_updated_column' );
工作原理(简单来说)
让我们分解一下:
manage_posts_columns
:向帖子表添加一个新列。manage_posts_custom_column
:用数据填充该列(在本例中为最后更新日期)。manage_edit-post_sortable_columns
:让 WordPress 知道该列是可排序的。pre_get_posts
:修改管理查询以根据post_modified
触发排序的日期进行排序。
结果
添加此代码后:
- 您会在帖子标题旁边看到一个标有“上次更新”的新列。
- 您可以单击它来对帖子进行排序,从最近更新到最旧,反之亦然。
提示
- 使用子主题或代码片段插件在主题更新期间保证更改的安全。
- 您可以对其他帖子类型(如页面或自定义帖子类型)使用相同的技术 – 只需
manage_posts_columns
用相应的钩子替换(例如manage_page_columns
)。
推荐:Cachify缓存插件教程简单免费的WordPress缓存插件