问题:
Wordpress 没有存储分类的“元”值的结构或方法。
2017 年更新:WP 4.4+ 有“术语元”!
要使用术语元数据,请使用这些:
update_term_meta()
get_term_meta()
delete_term_meta()
add_term_meta()
下面的操作仍然有效! :)
补充阅读:4.4 Taxonomy Roundup
WP 版本
-
create_category 和 edit_category 用于类别编辑
-
category_add_form_fields 和 category_edit_form 用于类别表单字段
有比我介绍的更多的操作,但它们似乎被弃用(根据 developer.wordpress.org)。
我选择行动的原因:
- 他们在 WordPress 4.4.2 上工作
- 由于缺乏文档,我认为这些是替换已弃用的新文档...
功能:
get_option( $option, $default );
update_option( $option, $new_value, $autoload );
update_option 有两大能力:
a) 当该选项尚不存在时,它会创建该选项
除非你需要指定 add_option() 的可选参数,
update_option() 对于添加和更新都是有用的
选项。
b) $new_value 可以是整数、字符串、数组或对象。
您可能会问,为什么要使用数组/对象? ...嗯,因为每个选项 = 1 个数据库行 => 您可能希望将类别选项存储在 一个 em> 行:)
代码
function my_category_form_fields($tag_object){
//output/display extra form fields, e.g. by echo ...
//ADD EXTRA SPECIFIC FIELD TO LATER CHECK IF IT'S CATEGORY SAVE/EDIT!
//(see note at 'edit_category' action...)
if( !empty($tag_object['term_id']) ){
//edit category form specific
//...load existing options with get_option( $option, $default );
} else {
//create category form specific
}
}
function my_category_save(){
//CHECK FOR YOUR EXTRA SPECIFIC FIELD TO CHECK IF IT'S CATEGORY SAVE/EDIT
//(see note at 'edit_category' action...)
//SECURITY CHECK
if( empty($_POST['EXTRA_SPECIFIC_FIELD']) || ! current_user_can('manage_categories') )
return null;
//save your form values using update_option()
//Recommendation:
//Add "category_" prefix and $category_id to your option name!
}
add_action( 'create_category', 'my_category_save', 10, 1 );
//Runs when a category is updated/edited,
//INCLUDING when a post or blogroll link is added/deleted or its categories are updated
//(which causes the count for the category to update)
add_action( 'edit_category', 'my_category_save', 10, 1 );
add_action( 'category_add_form_fields', 'my_category_form_fields', 10, 1 );
add_action( 'category_edit_form', 'my_category_form_fields', 10, 1 );
创建还是编辑?
您可能想知道您是在创建还是保存类别 - 这还没有记录(据我所知),但来自 测试:
- 编辑保存 =>
$tag_object 是 object 并包含一些属性,最值得注意的是:
- 创建保存 =>
$tag_object 只是一个普通的string“类别” - 我想这在未来可能会改变......
一般分类法
一般分类法也有类似的操作 - 检查these actions。