自定义编辑帖子栏-类别未显示

时间:2015-12-04 作者:at least three characters

我向自定义帖子类型添加了自定义列:

add_filter(\'manage_posts_columns\', \'custom_columns\', 10);  
add_action(\'manage_posts_custom_column\', \'custom_columns_thumb\', 10, 2);  

function custom_columns($columns) {         
    $columns = array(
        \'cb\' => \'<input type="checkbox" />\',
        \'title\' => \'Title\',
        \'categories\' => \'Categories\', // not showing
        \'thumb\' => __(\'Thumb\'),
        \'date\' => __( \'Date\' )
    );
    return $columns;
}  

function custom_columns_thumb($column_name, $id){  
    if($column_name === \'thumb\') {  
        echo the_post_thumbnail( \'thumb\' );  
    }  
}     
自定义列“thumb”正确显示,但不再显示类别。请参见图片。

enter image description here

这是什么原因造成的?如果删除自定义列,则类别将显示。

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

在这里,我测试了这段代码及其工作原理和步骤。

我只是在创造一个假人custom_post_type 在这里book 使用以下代码。

 function kv_custom_post_books() {
   $args = array(
    \'public\' => true,
    \'label\'  => \'Books\',
    \'taxonomies\' => array(\'category\', \'post_tag\') , 
    \'supports\'           => array( \'title\', \'editor\', \'thumbnail\' )
  );
 register_post_type( \'book\', $args );
}
add_action( \'init\', \'kv_custom_post_books\' );
我不确定,你用的是这句话。\'taxonomies\' => array(\'category\', \'post_tag\') . 这将为您的自定义帖子类型提供默认类别。

现在我们将在这里重写您的动作挂钩。我们使用相同的函数,没有变化。

add_filter(\'manage_edit-book_columns\', \'custom_columns\', 10);  
add_action(\'manage_posts_custom_column\', \'custom_columns_thumb\', 10, 2);  

function custom_columns($columns) {         
   $columns = array(
      \'cb\' => \'<input type="checkbox" />\',
      \'title\' => \'Title\',
      \'categories\' => \'Categories\', // not showing
      \'thumb\' => __(\'Thumb\'),
      \'date\' => __( \'Date\' )
   );
  return $columns;
}  

function custom_columns_thumb($column_name, $id){  
  if($column_name === \'thumb\') {  
      echo the_post_thumbnail( \'thumb\' );  
  }  
}
Note : 我只编辑了代码中的一行。add_filter(\'manage_edit-book_columns\', \'custom_columns\', 10);. 我们必须在动作挂钩中指定自定义帖子类型。这是这里的终极目标。manage_edit-book_columns 我们必须在此处指定自定义帖子类型名称,而不是默认名称。

这里我为您附上了一张截图,

enter image description here

SO网友:Abhik

尝试添加Thumb 列,而不是重新定义整个列。

function custom_columns($columns) {  
    return array_merge( $columns, 
        array( \'thumb\' => __(\'Thumb\', \'mytextdomain\' ),
        ) );
}   
此外,请确保unset 删除时的类别列Tags, AuthorComments 列。

EDIT
在看到第二个屏幕截图右上角的小搜索按钮标签后,我可以看到您确实在使用自定义帖子类型。在这种情况下,如果要将默认“类别”与CPT关联,请将此代码与注册CPT的当前参数数组一起使用:

\'taxonomies\' => array(\'category\');

此外,将过滤器更改为manage_post_type_posts_columnsmanage_post_type_posts_columns. 哪里post_type 是您的CPT。

感谢cybmeta和PieterGoosen的评论。

SO网友:jgraup

如果您想在不破坏数据库的情况下添加新列,我发现先存储旧值有助于确保保留现有内容,只添加所需内容。如果你想看得更少,就用屏幕选项进行调整。

$post_type = \'posts\';
add_filter("manage_${post_type}_posts_columns", \'posts_set_custom_columns\', 10);
add_action("manage_${post_type}_posts_custom_column", \'posts_render_custom_columns\', 10, 2);

function posts_set_custom_columns ($columns) {

    // save existing settings for columns

    $before = array(
        \'cb\' => $columns [\'cb\'],
        \'title\' => $columns [\'title\'],
        \'categories\' => $columns [\'categories\'],
    );

    // remove all the items before our new columns

    foreach ($before as $inx => $label) {
        unset($columns[$inx]);
    }

    // push our new columns to the front

    $columns = array_merge(
        array(
            \'thumb\' => __(\'Thumb\'),
    ), $columns);

    // put the first items back in the front

    $columns = array_merge($before, $columns);

    return $columns;
}

function posts_render_custom_columns ($column_name, $id) {
    if($column_name === \'thumb\') {

        $size = \'thumbnail\';

        // display the image or a mark to let us know it\'s missing
        if ( has_post_thumbnail( $id ))
            the_post_thumbnail( $size );
         else
             echo "-";
    }
}

SO网友:Ravi Patel

slider 更改您的帖子名称和slider_category 要更改your taxonomy category name

    <?php
/** Manage column Function */
add_filter("manage_edit-slider_columns", "slider_edit_columns");
add_action("manage_posts_custom_column", "slider_custom_columns");

function slider_edit_columns($columns) {
    $columns = array(
        "cb" => "<input type=\\"checkbox\\" />",
        "title" => "Title",
        "slider_category" => "Categories",  
        "date" => "Date",
    );
    return $columns;
}

function slider_custom_columns($column) {
    global $post;
    switch ($column) {
       case \'thumb\':
             echo the_post_thumbnail( \'thumb\' );  
        break;
        case "slider_category":  
            echo $cat = strip_tags(get_the_term_list($post->ID, \'slider_category\', \'\', \', \',\'\'));  
        break;  
    default:
      break;
    }
}