如何在管理区的wp_list_table中添加列?

时间:2015-02-11 作者:Lucas Santos

enter image description here

所以我的问题和你在图片中看到的差不多。在我自定义的帖子类型“Products”中,如何向我的主表添加一个额外的列,如SEO Yoast所做的WP_List_Table. 我已经计算出了代码,以确定如何显示缺货功能,这取决于项目的自定义\\u字段“缺货”是否设置为true或false。这不是问题,但我如何在代码中针对表的那个区域。我会假设它是一个过滤器,不确定它是如何工作的,但如果有人能帮助我,我真的很感激。

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

我认为您需要的是一组过滤器和操作,以将自定义列添加到后期编辑屏幕:

  • manage_edit-post_type_columns: 用于添加列manage_posts_custom_column: 用于打印列中每行的内容manage\\u edit-post\\u type\\u sortable\\u列:用于注册可排序列。未记录
  • request: 您可能需要将此筛选器与manage_edit-post_type_sortable_columns.

    add_filter( \'manage_edit-post_columns\',  \'add_new_columns\' );
    add_filter( \'manage_edit-post_sortable_columns\', \'register_sortable_columns\' );
    add_filter( \'request\', \'hits_column_orderby\' );
    add_action( \'manage_posts_custom_column\' , \'custom_columns\' );
    /**
    * Add new columns to the post table
    *
    * @param Array $columns - Current columns on the list post
    */
    function add_new_columns($columns){
    
        $column_meta = array( \'hits\' => \'Hits\' );
        $columns = array_slice( $columns, 0, 6, true ) + $column_meta + array_slice( $columns, 6, NULL, true );
        return $columns;
    
    }
    
    // Register the columns as sortable
    function register_sortable_columns( $columns ) {
        $columns[\'hits\'] = \'hits\';
        return $columns;
    }
    
    //Add filter to the request to make the hits sorting process numeric, not string
    function hits_column_orderby( $vars ) {
        if ( isset( $vars[\'orderby\'] ) && \'hits\' == $vars[\'orderby\'] ) {
            $vars = array_merge( $vars, array(
                \'meta_key\' => \'hits\',
                \'orderby\' => \'meta_value_num\'
            ) );
        }
    
        return $vars;
    }
    
    /**
    * Display data in new columns
    *
    * @param  $column Current column
    *
    * @return Data for the column
    */
    function custom_columns($column) {
    
        global $post;
    
        switch ( $column ) {
            case \'hits\':
                $hits = get_post_meta( $post->ID, \'hits\', true );
                echo (int)$hits;
            break;
        }
    }
    

结束

相关推荐

处理挂接到ADMIN_POST的数据的结果

我正在编写一个插件,它使用一个表单将一些数据传递给自己。有没有什么方法可以做到这一点“WordPress方式”?示例表单代码(在“工具”下添加的自定义子菜单页上):<form action=\"<?php echo get_admin_url() . \'admin-post.php\'; ?>\" method=\"post\"> <input name=\"some_input\" type=\"text\"> <input n