首页 > 解决方案 > 如何指定自定义列和现有列的顺序

问题描述

我正在处理以下代码,并对如何更改添加的自定义列的顺序感兴趣。如您所见,我添加了 3 列DifficultyLevel,但这些都添加到列的末尾ShortTitleShortText

姓名 | 日期 | 项目 | 水平 | 舞台 | 阶段

但我想要的是按这个顺序显示它们

水平 | 阶段 | 项目 | 姓名 | 舞台 | 日期

add_filter('manage_posts_columns', 't4a_remove_unwanted_columns');
add_filter('manage_posts_columns', 't4a_add_post_columns', 5);
add_action('manage_posts_custom_column', 't4a_get_post_column_values', 5, 2);

// Remove unwanted columns
function t4a_remove_unwanted_columns($defaults){
    unset($defaults['title'],$defaults['date']);
    return $defaults;
}

// Add new columns
function t4a_add_post_columns($defaults){
    // field vs displayed title
    $defaults['DifficultyLevel'] = __('Level');
    $defaults['ShortTitle'] = __('Stage');
    $defaults['ShortText'] = __('Phase');
    return $defaults;
}

// Populate the new columns with values
function t4a_get_post_column_values($column_name, $postID){
    if($column_name === 'DifficultyLevel'){
        echo get_post_meta($postID,'DifficultyLevel',TRUE);
    }
    elseif($column_name === 'ShortTitle'){
        echo get_post_meta($postID,'ShortTitle',TRUE);
    }
    elseif($column_name === 'ShortText'){
        echo get_post_meta($postID,'ShortText',TRUE);
    }
}

标签: wordpresswordpress-theming

解决方案


您应该只为 - 设置自己的数组column_names- 无需取消设置其他数组。你可以过滤整个manage_posts_columns事情。

// You can remove this:
add_filter('manage_posts_columns', 't4a_remove_unwanted_columns');


// Add new columns
dd_filter('manage_posts_columns', 't4a_add_post_columns', 5);
function t4a_add_post_columns($defaults){
    return array(
            'cb' => '<input type="checkbox" />',
            'ID' => __('Order ID', 'text_domain'),
            'DifficultyLevel' => __('Level', 'text_domain'),
            'ShortText' => __('Phase', 'text_domain'),
            'Project' => __('Project', 'text-domain'),
            'title' => __('Name', 'text_domain'),
            'ShortTitle' => __('Stage', 'text_domain'),
            'date' => __('Date', 'dd_theme'),
        );
}

截屏


推荐阅读