问题
以前,必须在每个子类的get_views()
方法中添加为视图链接生成标记的代码。这导致重复和不一致的代码来实现相同的结果,增加了内核和类似扩展器的维护负担。
解决方案
在工单 #42066中提出了一种新方法WP_List_Table::get_views_links()
,它将链接生成抽离到父类完成。
这个新的protected
方法接受一个$link_data
数组参数,每个视图(view)包含以下内容:
- $url (string) 链接URL。
- $label (string) 链接标签。
- $current (bool) 可选。这是否是当前选择的视图。
如果$current为真true
,aria-current="page"
和class="current"
将被添加到项目的链接标记中。
用法
- 在
get_views()
方法中,创建如上所述的链接数据数组。 - 将数组传递给新方法。
class My_List_Table extends WP_List_Table {
protected function get_views() {
// Create link data.
$base_url = add_query_arg( 'post_type', 'my_cpt', admin_url( 'edit.php' ) );
$link_data = array(
'all' => array(
'url' => $base_url,
'label' => __( 'All', 'my_textdomain' ),
'current' => true, // Optional.
),
'trash' => array(
'url' => add_query_arg( 'post_status', 'trash', $base_url ),
'label' => __( 'Trash', 'my_text_domain' ),
),
);
// Generate link markup.
return $this->get_views_links( $link_data );
}
}
核心子类更新
以下核心子类现在使用新方法:
- 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
来源:
https://www.wpdaxue.com/wp-list-table-get-views-links.html