自定义 post 类型的自定义分类未显示在 Wordpress 管理列中
Custom Taxonomies for custom post type not showing up in Wordpress Admin column
我创建了一个名为 protocols
的自定义 post 类型,并为该自定义 post 类型注册了一些分类法,以允许客户使用 filterable/searchable 列表 post秒。由于某种原因,自定义 post 类型的分类类别未显示在管理屏幕 post 列表中。截图在这里:http://demo.agexpressions.com/img/admin-screen.png
我在注册所有分类时使用了 'show_admin_column' => true
行,但列仍然是空白的!希望比我有眼光和知识的人可以帮助我诊断这个问题!代码如下:
// hook into the init action and call create_protocol_taxonomies when it fires
add_action( 'init', 'create_protocol_taxonomies', 0 );
// create three taxonomies - primary and disease categories, and status for the post type "protocols"
function create_protocol_taxonomies() {
// Add new taxonomy for Primary Category
$primarylabels = array(
'name' => _x( 'Primary', 'taxonomy general name' ),
'singular_name' => _x( 'Primary', 'taxonomy singular name' ),
'search_items' => __( 'Search Primary' ),
'all_items' => __( 'All Primaries' ),
'menu_name' => __( 'Primary' ),
);
$primaryargs = array(
'hierarchical' => true,
'labels' => $primarylabels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'primary' ),
);
register_taxonomy( 'primary', 'protocols', $primaryargs );
// Add new taxonomy for Disease Category
$diseaselabels = array(
'name' => _x( 'Disease', 'taxonomy general name' ),
'singular_name' => _x( 'Disease', 'taxonomy singular name' ),
'search_items' => __( 'Search Disease' ),
'all_items' => __( 'All Diseases' ),
'menu_name' => __( 'Disease' ),
);
$diseaseargs = array(
'hierarchical' => true,
'labels' => $diseaselabels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'disease' ),
);
register_taxonomy( 'disease', 'protocols', $diseaseargs );
// Add new taxonomy for Status
$statuslabels = array(
'name' => _x( 'Status', 'taxonomy general name' ),
'singular_name' => _x( 'Status', 'taxonomy singular name' ),
'search_items' => __( 'Search Status' ),
'all_items' => __( 'All Status' ),
'menu_name' => __( 'Status' ),
);
$statusargs = array(
'hierarchical' => true,
'labels' => $statuslabels,
'show_ui' => true,
'show_admin_column' => TRUE,
'query_var' => true,
'rewrite' => array( 'slug' => 'status' ),
);
register_taxonomy( 'status', 'protocols', $statusargs );
}
add_action( 'init', 'protocols_init', 0 );
// Creates Protocols Custom Post Type
function protocols_init() {
$protocolsargs = array(
'label' => 'Protocols',
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => false,
'rewrite' => array('slug' => 'protocol'),
'query_var' => true,
'menu_icon' => 'dashicons-book-alt',
'menu_position' => 5,
'has_archive' => true,
'taxonomies' => array('primary', 'disease', 'status'),
'supports' => array(
'title',
'editor',
'revisions')
);
register_post_type( 'protocols', $protocolsargs );
}
还注意到其他事情。如果您在 post 上单击 快速编辑 link 并为其分配类别,它们就会显示在列中!
然而,如果你进入完整的编辑屏幕,你刚刚分配的类别在那里,但如果你进行更改甚至更新而不进行更改,类别再次从管理列中消失...
很困惑,有人请看看我的代码,看看我做错了什么!!我已经做了数小时的研究,在 wordpress 支持论坛和 codex 上搜索,结果很短。 wordpress 论坛上的 post 也没有帮助,已经有一个多月了。
会不会是函数乱序这样简单的事情?自定义 post 类型或分类是否启动得太晚?
您需要填充列内容。参见 http://codex.wordpress.org/Plugin_API/Action_Reference/manage_$post_type_posts_custom_column
其实,我找到了解决办法。通过 phpAdmin 搜索数据库后,我注意到有重复的分类术语。旧版本来自第一次尝试创建自定义 post 类型和分类的失败尝试。
我从数据库中删除了所有自定义分类术语,然后返回到 Wordpress 并重新创建它们,基本上为我提供了一个新的术语列表。它们现在可以正确显示在管理员 post 列表以及网站本身中。
现在,我仍然不确定为什么重复的条款是问题所在,只是它们确实如此。也许我第一次失败尝试的残留术语与新术语冲突,因为术语名称相同但它们属于不同的分类法。
我创建了一个名为 protocols
的自定义 post 类型,并为该自定义 post 类型注册了一些分类法,以允许客户使用 filterable/searchable 列表 post秒。由于某种原因,自定义 post 类型的分类类别未显示在管理屏幕 post 列表中。截图在这里:http://demo.agexpressions.com/img/admin-screen.png
我在注册所有分类时使用了 'show_admin_column' => true
行,但列仍然是空白的!希望比我有眼光和知识的人可以帮助我诊断这个问题!代码如下:
// hook into the init action and call create_protocol_taxonomies when it fires
add_action( 'init', 'create_protocol_taxonomies', 0 );
// create three taxonomies - primary and disease categories, and status for the post type "protocols"
function create_protocol_taxonomies() {
// Add new taxonomy for Primary Category
$primarylabels = array(
'name' => _x( 'Primary', 'taxonomy general name' ),
'singular_name' => _x( 'Primary', 'taxonomy singular name' ),
'search_items' => __( 'Search Primary' ),
'all_items' => __( 'All Primaries' ),
'menu_name' => __( 'Primary' ),
);
$primaryargs = array(
'hierarchical' => true,
'labels' => $primarylabels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'primary' ),
);
register_taxonomy( 'primary', 'protocols', $primaryargs );
// Add new taxonomy for Disease Category
$diseaselabels = array(
'name' => _x( 'Disease', 'taxonomy general name' ),
'singular_name' => _x( 'Disease', 'taxonomy singular name' ),
'search_items' => __( 'Search Disease' ),
'all_items' => __( 'All Diseases' ),
'menu_name' => __( 'Disease' ),
);
$diseaseargs = array(
'hierarchical' => true,
'labels' => $diseaselabels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'disease' ),
);
register_taxonomy( 'disease', 'protocols', $diseaseargs );
// Add new taxonomy for Status
$statuslabels = array(
'name' => _x( 'Status', 'taxonomy general name' ),
'singular_name' => _x( 'Status', 'taxonomy singular name' ),
'search_items' => __( 'Search Status' ),
'all_items' => __( 'All Status' ),
'menu_name' => __( 'Status' ),
);
$statusargs = array(
'hierarchical' => true,
'labels' => $statuslabels,
'show_ui' => true,
'show_admin_column' => TRUE,
'query_var' => true,
'rewrite' => array( 'slug' => 'status' ),
);
register_taxonomy( 'status', 'protocols', $statusargs );
}
add_action( 'init', 'protocols_init', 0 );
// Creates Protocols Custom Post Type
function protocols_init() {
$protocolsargs = array(
'label' => 'Protocols',
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => false,
'rewrite' => array('slug' => 'protocol'),
'query_var' => true,
'menu_icon' => 'dashicons-book-alt',
'menu_position' => 5,
'has_archive' => true,
'taxonomies' => array('primary', 'disease', 'status'),
'supports' => array(
'title',
'editor',
'revisions')
);
register_post_type( 'protocols', $protocolsargs );
}
还注意到其他事情。如果您在 post 上单击 快速编辑 link 并为其分配类别,它们就会显示在列中!
然而,如果你进入完整的编辑屏幕,你刚刚分配的类别在那里,但如果你进行更改甚至更新而不进行更改,类别再次从管理列中消失...
很困惑,有人请看看我的代码,看看我做错了什么!!我已经做了数小时的研究,在 wordpress 支持论坛和 codex 上搜索,结果很短。 wordpress 论坛上的 post 也没有帮助,已经有一个多月了。
会不会是函数乱序这样简单的事情?自定义 post 类型或分类是否启动得太晚?
您需要填充列内容。参见 http://codex.wordpress.org/Plugin_API/Action_Reference/manage_$post_type_posts_custom_column
其实,我找到了解决办法。通过 phpAdmin 搜索数据库后,我注意到有重复的分类术语。旧版本来自第一次尝试创建自定义 post 类型和分类的失败尝试。
我从数据库中删除了所有自定义分类术语,然后返回到 Wordpress 并重新创建它们,基本上为我提供了一个新的术语列表。它们现在可以正确显示在管理员 post 列表以及网站本身中。
现在,我仍然不确定为什么重复的条款是问题所在,只是它们确实如此。也许我第一次失败尝试的残留术语与新术语冲突,因为术语名称相同但它们属于不同的分类法。