WordPress 6.1 新增 get_views_links() 生成视图链接方法详解

问题解决方案用法核心子类更新

以往在开发WordPress后台列表表格时,开发者需要在每个子类的get_views()方法中手动编写为视图链接生成标记的代码。这种做法不仅导致大量重复代码的出现,还使得代码风格难以统一,极大地增加了内核及各类扩展器维护的难度。

为了解决这一长期存在的问题,WordPress在工单#42066中提出了一种全新的解决方案——引入WP_List_Table::get_views_links()方法。该方法将链接生成的逻辑从子类中抽离出来,由父类统一处理,从而显著提升了代码的复用性和一致性。

get_views_links()是一个protected级别的静态方法,它接受一个名为$link_data的数组参数作为输入。该数组详细定义了每个视图(view)的相关信息,具体包含以下三个核心元素:

1. $url(字符串类型):表示链接的完整URL地址
2. $label(字符串类型):用于显示的链接文本标签
3. $current(布尔类型,可选):指示当前是否选中该视图。当该参数为true时,会在生成的HTML标签中自动添加aria-current=”page”和class=”current”属性,实现高亮显示当前选中的视图

使用方法示例

在自定义列表表格类中实现视图链接功能时,开发者需要按照以下步骤操作:

class My_List_Table extends WP_List_Table {
protected function get_views() {
// 创建链接数据数组
$base_url = add_query_arg( ‘post_type’, ‘my_cpt’, admin_url( ‘edit.php’ ) );
$link_data = array(
‘all’ => array(
‘url’ => $base_url,
‘label’ => __( ‘全部’, ‘my_textdomain’ ),
‘current’ => true, // 可选参数
),
‘trash’ => array(
‘url’ => add_query_arg( ‘post_status’, ‘trash’, $base_url ),
‘label’ => __( ‘回收站’, ‘my_text_domain’ ),
),
);

// 调用新方法生成链接标记
return $this->get_views_links( $link_data );
}
}

核心子类更新情况

目前WordPress核心已经更新了多个关键子类,使其采用新的get_views_links()方法。这些受影响的子类包括:

– WP_Posts_List_Table
– WP_Comments_List_Table
– WP_Post_Comments_List_Table
– WP_Users_List_Table
– WP_Plugins_List_Table
– WP_Plugin_Install_List_Table
– WP_Theme_Install_List_Table
– WP_Privacy_Requests_Table
– WP_MS_Sites_List_Table
– WP_MS_Themes_List_Table
– WP_MS_Users_List_Table

这一更新不仅简化了代码结构,也为未来可能的扩展提供了更灵活的接口,是WordPress后台开发中的一项重要改进。

文章网址:https://www.wpbull.com/news/2011.html