将自定义列添加到自定义帖子类型


27

我之前已经做过,但是我忘记了钩子的名称,并且在任何地方都找不到...

我想做的是在管理员的自定义帖子类型列表中添加一些自定义列。

例如,在管理员中,单击articles,我要在其中添加自定义列。


我问了(并回答了)相同的问题(包括如何使它们可排序):wordpress.stackexchange.com/questions/253680/…–
测试版,

Answers:


57

用于为自定义帖子类型创建自定义列及其关联数据的钩子分别为manage_{$post_type}_posts_columnsmanage_{$post_type}_posts_custom_column,其中,{$post_type}是自定义帖子类型的名称。

文档中的以下示例删除了author列,并添加了一个分类法和元数据列:

// 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;

    }
}

1
谢谢你的帮助!!!这太棒了!! 没有关于stackoverflow的明确文档!!!:D干杯队友
Rodrigo Zuluaga

没有设置列号的选项吗?喜欢column_index[2]。因为custom_column出现在列的末尾。
Dilip Gupta

@DilipGupta $ columns是一个数组,可以在返回之前重新排序
fogx

0

我不确定它是否默认为要显示为列的自定义元数据,但是您可以考虑使用此免费插件,该插件允许您添加列以显示自定义字段。https://wordpress.org/plugins/codepress-admin-columns/

专业版甚至允许您向这些列添加过滤,排序和内联编辑。


不使用!将会破坏您的站点:PHP致命错误:无法在[已编辑] \\ wp-content中重新声明AC()(先前在[已编辑] \\ wp-content \\ themes \ [已编辑] \\ functions.php:628中声明)第9行的\\ plugins \\ codepress-admin-columns \\ api.php
Peter Kionga-Kamau '18年

@ PeterKionga-Kamau这是您特定主题的兼容性问题。您发布的错误不会与默认的WP主题一起出现(例如二十二十);我还将插件与Divi主题一起使用,并发现它非常有用
Philipp

是否没有某种命名空间或使用不太通用的函数名称来避免这种情况?
Peter Kionga-Kamau
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.