Как добавить произвольные поля WordPress в форму таксономии на примере Меток

Добавление полей в форму метки в WordPress для добавления меток есть 2 формы:

Добавление новой метки.
Редактирование существующей.

Добавление произвольного поля в форму редактирования Метки

Для этого можно использовать хук {$taxonomy}_edit_form_fields, объявленный в файле edit-tag-form.php. Он получает два параметра: объект редактируемого терма и слаг таксономии редактируемого терма. Он срабатывает как раз в тот момент, когда все основные поля формы выведены, но сама форма еще не закрыта. Префикс {$taxonomy} заменяется на название таксономии, для Меток это post_tag, для рубрик — category, а для произвольных таксономий WordPress — их название.

Вывод дополнительных полей в форму

Дополнительные поля будут храниться в массиве tag_fields и сохраняться в базу данных как параметр с названием tag_{id-текущей-метки}. Таким образом для каждой метки будет добавлен свой параметр в базу данных и к нему можно будет легко обратиться функцией get_option(), для этого потребуется только указать id метки.

add_action( ‘post_tag_edit_form_fields’, ‘edit_my_tag_fields’, 10, 2 );
function edit_my_tag_fields( $tag, $taxonomy ) {
$tag_id = $tag->term_id;
$tag_fields = get_option( ‘tag_’.$tag_id);
?>

< ?php _e('Some custom tag Field'); ?> < ?php _e('Second custom tag Field'); ?>

< ?php } Эта функция добавляет два произвольных поля в форму редактирования Метки, но они еще не сохраняются в базе данных. Сохранение дополнительных полей формы Для этого можно использовать хук edited_terms из файла taxonomy.php, который срабатывает сразу после того как определенные термы отредактированы. У этого хука два параметра: id терма и слаг текущей таксономии. add_action ( 'edited_terms', 'save_my_tag_fields_callback'); function save_my_tag_fields_callback( $tag, $taxonomy ) { if ( isset( $_POST['tag_fields'] ) ) { $tag_id = $tag; $tag_fields = get_option( 'tag_'.$tag_id); $keys = array_keys($_POST['tag_fields']); foreach ($keys as $key){ if (isset($_POST['tag_fields'][$key])){ $tag_fields[$key] = $_POST['tag_fields'][$key]; } } update_option( 'tag_'.$tag_id, $tag_fields ); } } Эта функция читает из базы данных ранее сохраненные дополнительные поля, относящиеся к редактируемой Метке, затем записывает в этот массив новые значения и сохраняет обратно в базу данных. Здесь же можно добавить проверку корректности данных при необходимости. Добавление полей в форму создания Метки Здесь все происходит аналогично, но используются другие хуки: {$taxonomy}_add_form_fields — добавление полей; create_$taxonomy — добавление в базу данных, здесь динамическая часть названия $taxonomy заменяется на слаг таксономии, для которой создается терм. Чтение дополнительных полей Теперь массив значений дополнительных полей Метки или любой другой таксономии WordPress можно получить как обычный параметр

Эта функция выдаст массив дополнительных полей для метки с id 33.

Нет комментариев

Оставить комментарий

©2007-2016 Эксперт-фрилансер Семагоф Все услуги по Продвижению бизнеса в интернете

Войдите со своими учетными данными

Забыли свои данные?