是否有方法替换帖子类型的WP\\u List\\u Table对象,以便在管理编辑中以不同方式显示所述帖子类型。php页面?
替换帖子类型的列表表格
2 个回复
最合适的回答,由SO网友:fuxia 整理而成
否,不能替换列表。没有过滤器,一切都是硬编码的。
但您可以更改帖子类型注册,设置show_ui
到FALSE
阻止内置页面,并为帖子类型列表添加自定义页面以显示可编辑的项目。
add_action( \'wp_loaded\', function(){
register_post_type(
\'test\',
array(
\'labels\' => array(
\'name\' => \'TEST\'
),
\'public\' => TRUE,
\'show_ui\' => FALSE
)
);
});
add_action( \'admin_menu\', function(){
add_object_page(
\'TEST\',
\'TEST\',
\'edit_test\',
\'test\',
function(){
echo \'test\'; // list post type items here
}
);
});
结果SO网友:Ari
此示例应用于post
岗位类型。这是利用WP_Posts_List_Table
类别和views-edit-{$post_type}
滤器这似乎不是最好的方法,但它很有效:
Make sure the class is loaded on your page:
if(!class_exists(\'WP_List_Table\')){
require_once( ABSPATH . \'wp-admin/includes/class-wp-list-table.php\' );
}
if(!class_exists(\'WP_Posts_List_Table\')){
require_once( ABSPATH . \'wp-admin/includes/class-wp-posts-list-table.php\' );
}
Extend the WP_Posts_List_Table
class to remove list table and define the custom content:
class wpse_CustomTable extends WP_Posts_List_Table
{
// remove search box
public function search_box( $text, $input_id ){ }
// Your custom list table is here
public function display() {
echo "Test";
}
}
Use it inside a filter hook:
// hook into `views-edit`
add_filter( \'views_edit-post\', "sstssfb_custom_list_table");
// Override the post table object
function sstssfb_custom_list_table() {
global $wp_list_table;
$mylisttable = new wpse_CustomTable();
$wp_list_table = $mylisttable ;
}
Result:
结束