Добавить настраиваемое поле в категорию
-
-
возможный дубликат [Есть примеры добавления настраиваемых полей в редактор категорий?] (http://wordpress.stackexchange.com/questions/6549/any-examples-of-adding-custom-fields-to-the-category-editor)possible duplicate of [Any examples of adding custom fields to the category editor?](http://wordpress.stackexchange.com/questions/6549/any-examples-of-adding-custom-fields-to-the-category-editor)
- 0
- 2011-02-08
- Jan Fabry
-
Вот шпаргалка,которую я использую при этом.Он содержит соответствующие хуки и фильтры в одном коротком списке. http://www.charlestonsw.com/adding-custom-fields-to-the-wordpress-category-interface/Here is a cheat sheet I use when doing this. It has the relevant action hooks & filters in one short list. http://www.charlestonsw.com/adding-custom-fields-to-the-wordpress-category-interface/
- 0
- 2013-02-03
- Lance Cleveland
-
3 ответ
- голосов
-
- 2016-06-29
Начиная с Wordpress 4.4, add_term_meta () , update_term_meta () и get_term_meta () . Это означает,что код,предоставленный MxmastaMills,можно обновить,чтобы использовать гораздо менее хакерский подход.
Вот мое обновление. Есть только одно поле,так как я хотел добавить настраиваемый заголовок,но он будет работать одинаково для всех полей,которые вы хотите добавить.
function addTitleFieldToCat(){ $cat_title = get_term_meta($_POST['tag_ID'], '_pagetitle', true); ?> <tr class="form-field"> <th scope="row" valign="top"><label for="cat_page_title"><?php _e('Category Page Title'); ?></label></th> <td> <input type="text" name="cat_title" id="cat_title" value="<?php echo $cat_title ?>"><br /> <span class="description"><?php _e('Title for the Category '); ?></span> </td> </tr> <?php } add_action ( 'edit_category_form_fields', 'addTitleFieldToCat'); function saveCategoryFields() { if ( isset( $_POST['cat_title'] ) ) { update_term_meta($_POST['tag_ID'], '_pagetitle', $_POST['cat_title']); } } add_action ( 'edited_category', 'saveCategoryFields');
As of Wordpress 4.4, the add_term_meta(), the update_term_meta() and get_term_meta() functions have been added. This means that the code as provided by MxmastaMills can be updated to use a far less hacky approach.
Here is my update of it. There is only one field as I wanted to add a custom title, but it'll work the same for all the fields you want to add.
function addTitleFieldToCat(){ $cat_title = get_term_meta($_POST['tag_ID'], '_pagetitle', true); ?> <tr class="form-field"> <th scope="row" valign="top"><label for="cat_page_title"><?php _e('Category Page Title'); ?></label></th> <td> <input type="text" name="cat_title" id="cat_title" value="<?php echo $cat_title ?>"><br /> <span class="description"><?php _e('Title for the Category '); ?></span> </td> </tr> <?php } add_action ( 'edit_category_form_fields', 'addTitleFieldToCat'); function saveCategoryFields() { if ( isset( $_POST['cat_title'] ) ) { update_term_meta($_POST['tag_ID'], '_pagetitle', $_POST['cat_title']); } } add_action ( 'edited_category', 'saveCategoryFields');
-
Несколько замечаний: в хуке `edited_category`tag_ID будет находиться в массиве` $ _POST`,а не в `$ _GET`.Также add_term_meta фактически добавит новую запись вместо замены возможной старой.Вместо этого используйте update_term_meta.Few things to note: in the `edited_category` hook, `tag_ID` will be in the `$_POST` array, not in the `$_GET`. Also `add_term_meta` will actually add a new entry instead of overriding a possible old one. Use `update_term_meta` instead.
- 2
- 2016-10-02
- Martin Dimitrov
-
@MartinDimitrov Не могли бы вы исправить ответ Люка-Симмонса,нажав кнопку редактирования?Таким образом,каждый может использовать лучший доступный код,даже если он не очень хорошо кодирует (здесь дизайнер!).Спасибо!@MartinDimitrov Could you fix luke-simmons's answer by clicking on edit button? This way everyone can use the best code available, even who does not code very well (designer here!). Thank you!
- 0
- 2016-11-08
- Hugo
-
Он не сохраняет данные в формеIt doesn't save the data in the form
- 1
- 2017-05-11
- Dev
-
@Dev он сохраняет данные,он просто не показывает их,если вы не измените $ _POST на $ _GET во второй строке.@Dev it does save data, it just don't show it unless you change $_POST to $_GET in second line.
- 0
- 2018-08-24
- banesto
-
- 2018-01-14
Этот код работает:
add_action ( 'category_edit_form_fields', function( $tag ){ $cat_title = get_term_meta( $tag->term_id, '_pagetitle', true ); ?> <tr class='form-field'> <th scope='row'><label for='cat_page_title'><?php _e('Category Page Title'); ?></label></th> <td> <input type='text' name='cat_title' id='cat_title' value='<?php echo $cat_title ?>'> <p class='description'><?php _e('Title for the Category '); ?></p> </td> </tr> <?php }); add_action ( 'edited_category', function( $term_id ) { if ( isset( $_POST['cat_title'] ) ) update_term_meta( $term_id , '_pagetitle', $_POST['cat_title'] ); });
This code works:
add_action ( 'category_edit_form_fields', function( $tag ){ $cat_title = get_term_meta( $tag->term_id, '_pagetitle', true ); ?> <tr class='form-field'> <th scope='row'><label for='cat_page_title'><?php _e('Category Page Title'); ?></label></th> <td> <input type='text' name='cat_title' id='cat_title' value='<?php echo $cat_title ?>'> <p class='description'><?php _e('Title for the Category '); ?></p> </td> </tr> <?php }); add_action ( 'edited_category', function( $term_id ) { if ( isset( $_POST['cat_title'] ) ) update_term_meta( $term_id , '_pagetitle', $_POST['cat_title'] ); });
-
Это менее неуклюже,чем предыдущее,и я только что проверил его с помощью WordPress 5.2.2.This is less clumsy than the other one and I just verified it with WordPress 5.2.2
- 0
- 2019-07-25
- nico gawenda
-
- 2011-02-07
Пол Менар привел в своем блоге пример создания и использования термина «мета» ...
Пользовательская мета для новых таксономий в WordPress 3.0 .Нет примера создания таблицы БД или проверки установленных переменных
$_POST
,поэтому вам придется делать эти мелочи самостоятельно,но похоже,что это достойная база кода для построения поверхиз ... :)Paul Menard provided an example of how to create and use term meta in his blog...
Custom meta for new taxonomies in WordPress 3.0.There's no example of creating the DB table or checking
$_POST
vars are set, so you'll need to do those little things yourself, but it looks like a decent code base to build on top of ... :)
Я хочу добавить настраиваемые поля в определенную категорию. Категория содержит только следующие поля:
Имя:
Слаг:
Родитель:
Описание:
Поскольку у меня есть сайт телесериалов,я хочу добавить еще несколько полей,мне нужно что-то вроде этого,когда я создаю новую категорию (Категория=Серия)
Имя:
Художник:
Год:
Тип:
Жанр:
Резюме:
Слаг:
Родитель:
Описание:
И так далее ...
Любая помощь,пожалуйста? Заранее спасибо.