Как добавить пользовательские мета-поля в категории? - PullRequest
2 голосов
/ 10 ноября 2010

У кого-нибудь есть идеи, как добавлять собственные мета-поля при создании категорий и извлекать их в цикле в WordPress?Мне было интересно, как это сделать, не взламывая ядро ​​WordPress, но если я это сделаю - это не станет помехой для обновления WordPress в будущем.

Плагин, который я обнаружил, подходит близко Wp-Category-Meta , но он не имеет возможности добавлять флажки в качестве полей в Редактировать категории.

screenshot

Это будет очень полезно, поскольку пользователи могут сделатьнекоторые категории "признаются", и затем код может использовать это мета-значение в цикле, чтобы по-разному стилизовать "избранные" категории.

Ответы [ 4 ]

3 голосов
/ 16 марта 2016

Проблема: 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 ); 

Создать или отредактировать?

Вам может быть интересно, создаете ли вы или сохраняете категорию - это еще не задокументировано (насколько я знаю), но из тестирования:

  1. Редактировать сохранить => $tag_object равно object и содержит некоторые свойства, в частности:
    • term_id
    • taxonomy
    • filter
  2. Создать сохранение => $tag_object - это обычная string "категория" - я думаю, это может измениться в будущем ...

Общая таксономия

Существуют также подобные действия для таксономий в целом - отметьте эти действия .

2 голосов
/ 17 мая 2011

Jaz, похоже, что плагин, который вы упомянули в исходном вопросе, был обновлен и теперь содержит поле для флажка ( включено в v1.2.3 )

1 голос
/ 20 июля 2014

Существует обновленная и переработанная версия этого плагина, которую можно найти здесь:

https://wordpress.org/plugins/custom-taxonomy-category-and-term-fields/

Также добавлен тип поля WYSIWYG-редактора.

1 голос
/ 16 мая 2011

Я думаю, плагин Категория SEO мета-теги поможет вам.

...