Проблема: Wordpress не имеет ни структуры, ни метода для хранения «мета» значений для таксономий.
ОБНОВЛЕНИЕ 2017: WP 4.4+ имеет «термин»meta "!
Для работы с мета-терминами используйте следующие символы:
update_term_meta()
get_term_meta()
delete_term_meta()
add_term_meta()
Действия ниже по-прежнему действительны, хотя!:)
Дополнительное чтение: 4.4 Сводка по таксономии
Решение для версии WP <= 4.3.x и ОБЩИЕ действия </h1> Действия: 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 строка базы данных => вы, вероятно, хотите сохранить параметры своей категории в one row:) CODE
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
"категория" - я думаю, это может измениться в будущем ...
Общая таксономия
Существуют также подобные действия для таксономий в целом - отметьте эти действия .