在后端将自定义列添加到自定义帖子类型概述

时间:2017-01-23 作者:beta

我有一个名为“事件”的自定义帖子类型。在后端/管理中,我可以列出所有这些自定义帖子类型,即事件:

enter image description here

如您所见,此概述中有三列:标题、标记和日期。每个事件都有一个名为eventDate的自定义字段。

我现在的问题是,如何将可排序的eventDate列添加到事件概述(如上图所示)中?

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

好吧,我自己找到了答案。为了帮助将来阅读本文的人,我做了以下工作:

1) 这说明了如何添加列:http://www.deluxeblogtips.com/add-custom-column/

2) 这说明了如何添加可排序列:https://wordpress.org/support/topic/admin-column-sorting/

SO网友:Pravin Work

为自定义帖子类型创建自定义列及其关联数据的挂钩分别是manage{$post\\u type}\\u posts\\u columns和manage{$post\\u type}\\u posts\\u custom\\u column,其中{$post\\u type}是自定义帖子类型的名称。

文档中的此示例删除了作者列,并添加了分类法和元数据列:

// Add the custom columns to the book post type:
    add_filter( \'manage_book_posts_columns\', \'set_custom_edit_book_columns\' );
    function set_custom_edit_book_columns($columns) {
        unset( $columns[\'author\'] );
        $columns[\'book_author\'] = __( \'Author\', \'your_text_domain\' );
        $columns[\'publisher\'] = __( \'Publisher\', \'your_text_domain\' );

        return $columns;
    }

    // Add the data to the custom columns for the book post type:
    add_action( \'manage_book_posts_custom_column\' , \'custom_book_column\', 10, 2 );
    function custom_book_column( $column, $post_id ) {
        switch ( $column ) {

            case \'book_author\' :
                $terms = get_the_term_list( $post_id , \'book_author\' , \'\' , \',\' , \'\' );
                if ( is_string( $terms ) )
                    echo $terms;
                else
                    _e( \'Unable to get author(s)\', \'your_text_domain\' );
                break;

            case \'publisher\' :
                echo get_post_meta( $post_id , \'publisher\' , true ); 
                break;

        }
    }
从现有ans复制。

SO网友:Sid

以下是此操作的完整代码:

add_filter(\'manage_edit-video_columns\', \'my_columns\');
function my_columns($columns) {
    $columns[\'eventDate\'] = \'Event Date\';
    return $columns;
}

add_action(\'manage_posts_custom_column\',  \'my_show_columns\');
function my_show_columns($name) {
    global $post;
    switch ($name) {
        case \'eventDate\':
            $eventDate = get_post_meta($post->ID, \'eventDate\', true);
            echo $eventDate;
    }
}

add_filter( \'manage_edit-video_sortable_columns\', \'my_sortable_date_column\' );
function my_sortable_date_column( $columns ) {
    $columns[\'eventDate\'] = \'Event Date\';

    return $columns;
}
谢谢