如何从自定义帖子类型列表屏幕中删除这些内容?

时间:2015-10-12 作者:Ari

我正在修改自定义帖子类型的帖子列表,我想删除tablenav头部的所有内容,如下图所示。

enter image description here

wordpress有专门的钩子吗,还是我需要用肮脏的方式?

2 个回复
最合适的回答,由SO网友:birgire 整理而成

我不知道你说的肮脏的方式是什么意思,但愿如此not 核心编辑!

你可以用CSS隐藏它。

或者,您可以使用PHP进行操作-请参见以下内容:

隐藏视图零件可以使用

add_filter( \'views_edit-post\', \'__return_null\' );
对于post 上的帖子类型edit.php 屏幕

post table对象是通过以下方式创建的:

$wp_list_table = _get_list_table(\'WP_Posts_List_Table\');
但中没有可用的筛选器_get_list_table() 作用

解决方法-扩展WP_Posts_List_Table

因此,这里有一个解决方法,通过扩展WP_Posts_List_Tableviews_edit-post 过滤器-不要在家里尝试;-)

/**
 * Headless post table
 * 
 * @link http://wordpress.stackexchange.com/a/205281/26350
 */
add_action( \'load-edit.php\', function()
{
    // Target the post edit screen
    if( \'edit-post\' !== get_current_screen()->id )
        return;

    // Include the WP_Posts_List_Table class
    require_once ( ABSPATH . \'wp-admin/includes/class-wp-posts-list-table.php\' );

    // Extend the WP_Posts_List_Table class and remove stuff
    class WPSE_Headless_Table extends WP_Posts_List_Table
    {
        public function search_box( $text, $input_id ){} // Remove search box
        protected function pagination( $which ){}        // Remove pagination
        protected function display_tablenav( $which ){}  // Remove navigation
    } // end class

    $mytable = new WPSE_Headless_Table; 
    // Prepare our table, this method has already run with the global table object
    $mytable->prepare_items();

    // Override the global post table object
    add_filter( \'views_edit-post\', function( $views ) use ( $mytable )
    {
        global $wp_list_table;    
        // Let\'s clone it to the global object
        $wp_list_table = clone $mytable;
        // Let\'s remove the views part also
        return null;
    } );    
} );
下面是一个屏幕截图示例:

Before:

before

After:

after

SO网友:dswebsme

@birgire提供的答案是一种可靠的编程方式来处理请求,但正如他所指出的,他的解决方案有点棘手,因为WP-core缺少一个重要的过滤器。

为了简单地抑制,我首选的方法是CSS。让我们假设您的自定义帖子类型称为“事件”,此CSS将可靠地完成以下操作:

.post-type-event .subsubsub,
.post-type-event .posts-filter .tablenav .actions,
.post-type-event .posts-filter .tablenav .view-switch,
.post-type-event .posts-filter .tablenav .tablenav-pages,
.post-type-event .posts-filter .search-box {
    display: none;
}
要确保在WordPress仪表板上加载这些样式,请确保使用wp\\u enqueue\\u style()助手通过“admin\\u enqueue\\u scripts”挂钩将其排队。

编辑:更新样式,将“操作”、“视图图标”和“分页”分隔为单独的样式。由于分页非常重要,我想您可能希望保留它。只需从上面的代码中删除这一行即可显示分页,但隐藏所有其他内容:

.post-type-event .posts-filter .tablenav .tablenav-pages,

相关推荐

REGISTER_POST_STATUS-SHOW_IN_ADMIN_ALL_LIST和SHOW_IN_ADMIN_STATUS_LIST不影响查询

在register_post_status, 我已经禁用了show_in_admin_all_list &;show_in_admin_status_list 对于我的自定义状态my_hidden_status但是,从查询日志中可以看到post\\u状态my_hidden_status 仍然没有被过滤掉(加载edit.php时)e、 g。SELECT post_status, COUNT( * ) AS num_posts FROM st_posts WHERE post_type = \'