WordPress后台文章列表可以按照发布日期排序,点击日期表头可以切换排序方向,非常方便。我们知道,和发布时间类似,WordPress文章数据表里面还有一个修改时间的字段,是否可以把「修改时间」这个字段显示到文章列表里面,并使文章列表支持按修改时间进行排序呢?当然是可以的,本文将为您介绍添加修改时间数据列到文章列表,并使其支持点击排序的功能。
添加「修改日期」数据列
首先我们需要使用「manage_posts_columns」这个Hook 添加「修改日期」数据列到WordPress文章列表数据表中。
add_filter( 'manage_posts_columns', static function ( $cols )
$cols[ 'modified' ] = __( '修改日期' );
return $cols;
} );
添加了修改日期数据列之后,我们还需要告诉WordPress在这一列显示什么数据。
添加修改日期数据到新增的修改日期数据列
这一步,我们需要用到「manage_posts_custom_column」这个hook,来告诉WordPress列表类如何显示「modified」这一列的数据。
add_action( 'manage_posts_custom_column', static function ( $column_name )
{
if ( $column_name === 'modified' ) {
echo get_post_modified_time( get_option( 'date_format' ), '', get_the_ID() );
}
} );
执行了上面两步之后,我们就可以在文章列表中看到「修改日期」这一列数据,显示的是文章的最新修改日期。
下面让我们需要再做一些处理,让修改日期这一列数据支持点击排序功能。
使修改日期数据支持点击排序功能
使修改日期数据支持点击排序功能需要使用「manage_edit-post_sortable_columns」这个 Hook,示例代码如下。
add_filter( "manage_edit-post_sortable_columns", function ( $sortable_columns )
{
$sortable_columns[ 'modified' ] = [ 'modified', true, '修改日期', '按修改日期排序', 'desc' ];
return $sortable_columns;
} );
做完这一步之后,我们只是在文章列表中让「修改日期」这一列数据显示了支持排序的UI,排序的逻辑还没有实现。
点击修改日期排序时,执行排序处理
要实现文章列表按修改日期排序的逻辑,我们需要使用「pre_get_posts」这个Hook,在执行获取文章查询之前,修改查询,把按日期排序的逻辑添加进去,代码如下:
add_filter( 'pre_get_posts', function ( $wp_query )
{
global $pagenow;
if ( is_admin() && 'edit.php' == $pagenow && wprs_input_get( 'orderby' ) === 'modified' ) {
$wp_query->set( 'orderby', 'modified' );
$wp_query->set( 'order', wprs_input_get( 'order' ) );
}
} );
执行完上面的步骤后,我们就可以使WordPress文章列表按修改日期排序了。
本站之前的文章WordPress 在后台文章列表页面显示文章字数数据列 中介绍了添加文章字数数据列的方法,但是并不支持按照文章字数排序的功能,有兴趣的朋友可以参考本文的方法为其添加按照文字数排序的功能。