问题描述
WordPress 默认分类 (Categories) 默认情况下未分类。如何添加默认项目到新的自定义分类?
的 functions.php:
// === CUSTOM TAXONOMIES === //
function my_custom_taxonomies() {
register_taxonomy(
'block', // internal name = machine-readable taxonomy name
'static_content', // object type = post, page, link, or custom post-type
array(
'hierarchical' => true,
'labels' => array(
'name' => __( 'Blocks' ),
'singular_name' => __( 'Block' ),
'add_new_item' => 'Add New Block',
'edit_item' => 'Edit Block',
'new_item' => 'New Block',
'search_items' => 'Search Block',
'not_found' => 'No Block found',
'not_found_in_trash' => 'No Block found in trash',
),
'query_var' => true, // enable taxonomy-specific querying
'rewrite' => array( 'slug' => 'block' ), // pretty permalinks for your taxonomy?
)
);
}
add_action('init', 'my_custom_taxonomies', 0);
编辑:安装主题时,我只希望有分类项目。它不必自动添加到任何空白的术语。
最佳解决方案
看看这里:
http://wordpress.mfields.org/2010/set-default-terms-for-your-custom-taxonomies-in-wordpress-3-0/
基本上,您需要做的是使用 save_post 钩子来检查帖子的条款,如果它是空的,则从您的分类学中添加默认术语。
如果您只想在自定义分类法中设置初始项,那么可以使用 wp_insert_term()
。可能最简单的方法是将其添加到您用来创建自定义分类法的相同功能中。由于 t3ios 在注释中添加,您应该首先调用 get_term()
,如果返回值为空,则只插入该术语 (即术语不存在) 。
此示例代码来自 Codex:http://codex.wordpress.org/Function_Reference/wp_insert_term
$parent_term = term_exists( 'fruits', 'product' ); // array is returned if taxonomy is given
$parent_term_id = $parent_term['term_id']; // get numeric term id
wp_insert_term(
'Apple', // the term
'product', // the taxonomy
array(
'description'=> 'A yummy apple.'
'slug' => 'apple'
'parent'=> $parent_term_id
)
);
次佳解决方案
默认类别是 wp_insert_post()
功能的硬编码情况。
所以它不能完全复制,但你可以用其他方式来处理它。我会尝试钩入 post status transition 的新帖子,并分配想要的默认术语,如果没有在创建后分配。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。