当我创建帖子并尝试将帖子分配给类别时,右侧的小部件会显示混合的类别。例如,当我创建类别时,我在父类别“Men”下有“accessories”类别,但在小部件中它没有出现在它下面;只有当我转到左侧菜单上的类别时,它才会以正确的顺序出现。怎么了?
在类别中,我有这个层次结构
但是当我将帖子分配给但当我将帖子分配给类别时,例如Men-Accesories-Ties,Men在类别中出现第二而不是第一,因此也弄乱了面包屑
当我创建帖子并尝试将帖子分配给类别时,右侧的小部件会显示混合的类别。例如,当我创建类别时,我在父类别“Men”下有“accessories”类别,但在小部件中它没有出现在它下面;只有当我转到左侧菜单上的类别时,它才会以正确的顺序出现。怎么了?
在类别中,我有这个层次结构
但是当我将帖子分配给但当我将帖子分配给类别时,例如Men-Accesories-Ties,Men在类别中出现第二而不是第一,因此也弄乱了面包屑
我将把这个答案的第一个版本留在底部,因为它可能有用。
无法以分层方式组织该列。解决方案是制作一个自定义列并使用此Codex 片段:
// Change "post_" for the desired post type
add_filter( 'manage_edit-post_columns', 'custom_categories_register_so_15813936', 20, 1 );
add_action( 'manage_post_posts_custom_column', 'custom_categories_display_so_15813936', 20, 2 );
function custom_categories_register_so_15813936( $columns )
{
$columns[ 'custom-cat' ] = 'Categories';
return $columns;
}
function custom_categories_display_so_15813936( $column_name, $post_id )
{
if ( 'custom-cat' != $column_name )
return;
// get the category IDs assigned to post
$categories = wp_get_post_categories( $post_id, array( 'fields' => 'ids' ) );
// separator between links
$separator = ', ';
if ( $categories ) {
$cat_ids = implode( ',' , $categories );
$cats = wp_list_categories( 'title_li=&style=none&echo=0&include=' . $cat_ids );
$cats = rtrim( trim( str_replace( '<br />', $separator, $cats ) ), $separator );
$cats = str_replace( site_url('category/'), admin_url('edit.php?category_name='), $cats );
echo str_replace( '/" title', '" title', $cats );
}
}
左侧是默认列,右侧是自定义列。
[第一个版本]
我想您是在谈论后端(/wp-admin
)。您看到的行为是 WordPress 默认的。要摆脱该“功能”,您需要插件Category Checklist Tree:
在帖子编辑屏幕上,保存帖子后,您会注意到选中的类别显示在顶部,打破了类别层次结构。该插件删除了该“功能”。
此外,它会自动滚动到第一个选中的类别。
也适用于自定义分类法。
试试这个插件。它说它可以在小部件中分层显示类别。