Admin Column Text Positioning

时间:2018-08-01 作者:Burgi

我已经在自定义帖子类型中添加了一个自定义字段,并将其输出到管理员概览屏幕上。然而,文本似乎与列标题不一致,我不知道为什么。

enter image description here

以下是我的专栏代码:

public function __construct() {
    add_filter( \'manage_\'.$this->attributes[\'slug\'].\'_posts_columns\', [$this,\'customAdminColumns\'] );
    add_action( \'manage_\'.$this->attributes[\'slug\'].\'_posts_custom_column\' , [$this,\'customAdminColumnData\'], 10, 2 );
}

public function customAdminColumns($columns){
    $insert=array(
        \'file_type\' =>  \'File Type\'
    );

    array_splice($columns,3,0,$insert);

    return $columns;
}

public function customAdminColumnData($column,$post_id){
    switch($column){
        case \'file_type\':
            $media_id=  get_post_meta($post_id,\'downloads_file\',true);

            echo get_post_mime_type($media_id);

            break;
    }
}
我很确定我忽略了什么,但我想不出是什么。

有谁能对此提供指导吗?

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

问题是,如果检查列(即“文件类型”列),您会看到如下标记/HTML:

<th scope="col" id="0" class="manage-column column-0 num">File Type</th>
这是一个td 该列中的元素:

<td class="0 column-0" data-colname="File Type">text/csv</td>
所以问题是,正如你在idclass 属性,是列的key, 这是零(0) 应该是什么时候file_type 如下图所示:

<th scope="col" id="file_type" class="manage-column column-file_type">File Type</th>

<td class="file_type column-file_type" data-colname="File Type">text/csv</td>
那是因为customAdminColumns() 函数,您使用array_splice() 如果你读它doc, 您将看到以下文本:

请注意,替换数组中的键不会保留。

因此,请参考您的代码:

$insert=array(
    \'file_type\' =>  \'File Type\'
);

array_splice($columns,3,0,$insert);
Thefile_type 输入$insert (替换数组)将不会被保留,PHP将根据其/PHP自己的计算将其更改为数字键。

因此,在我的情况下,密钥更改为0.

解决方案

Option 1: 循环通过$columns 数组并插入file_type 项目位于首选位置

public function customAdminColumns($columns){
    $columns2 = [];
    $i = 0;
    foreach ( $columns as $key => $label ) {
        if ( 3 === $i ) {
            $columns2[\'file_type\'] = \'File Type\';
        }
        $columns2[ $key ] = $label;
        $i++;
    }
    $columns = $columns2;
    unset( $columns2 );

    return $columns;
}
Option 2: 使用array_slice() &恩达斯;切片$columns 数组,直到首选索引/位置,追加file_type 项添加到切片数组中,然后从$columns.

public function customAdminColumns($columns){
    $columns2 = array_slice( $columns, 0, 3 );
    $columns2[\'file_type\'] = \'File Type\';
    $columns = $columns2 + array_slice( $columns, 3 );
    unset( $columns2 );

    return $columns;
}

结束