有没有人知道如何在制作类别时添加自定义元字段并在WordPress的循环中获取它们?我想知道如何在不破解WordPress核心的情况下做到这一点,但如果我这样做 - 它将不会成为未来更新WordPress的障碍。
我发现接近的插件是Wp-Category-Meta,但它无法将复选框添加为编辑类别中的字段。
这将非常有用,因为用户可以使某些类别“特色”,然后代码可以在循环中使用该元值来不同地设置“特色”类别。
答案 0 :(得分:3)
问题:
Wordpress没有结构或方法来存储分类法的“元”值。
使用term metas时请使用以下命令:
update_term_meta()
get_term_meta()
delete_term_meta()
add_term_meta()
下面的操作仍然有效! :)强>
补充阅读:4.4 Taxonomy Roundup
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数据库行=>您可能希望将类别选项存储在一个行中:)
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
并包含一些属性,最值得注意的是:
term_id
taxonomy
filter
$tag_object
只是一个常规string
“类别” - 我想这可能会在未来发生变化...... 一般来说,对于分类法也会有类似的行为 - 请检查these actions。
答案 1 :(得分:2)
的Jaz, 看起来您在原始问题中提到的插件已更新为包含复选框字段(included in v1.2.3)
答案 2 :(得分:1)
我认为Category SEO Meta Tags插件会对您有所帮助。
答案 3 :(得分:1)
此插件的更新和重构版本可在此处找到:
https://wordpress.org/plugins/custom-taxonomy-category-and-term-fields/
还添加了WYSIWYG编辑器字段类型。