(taxonomy)_edit_form_fields хук-подіяWP 3.0.0

Дозволяє додати додаткові поля (довільні поля або метаполя) на сторінку редагування елементів таксономії (терміну).

Використовуйте (taxonomy)_add_form_fields , коли потрібно додати поля на сторінку додавання терміна.

Використання

add_action( '(taxonomy)_edit_form_fields', 'wp_kama_taxonomy_edit_form_fields_action', 10, 2);

/**
 * Function for `(taxonomy)_edit_form_fields` action-hook.
 *
 * @param WP_Term $tag Current taxonomy term object.
 * @param string $taxonomy Current taxonomy slug.
 *
 * @return void
 */
function wp_kama_taxonomy_edit_form_fields_action( $tag, $taxonomy ){

	// action...
}
$tag
(WP_Term)
Об’єкт поточної таксономії
$taxonomy
(рядок)
Назва таксономії.

Приклади

0

#1 Додамо метаполя під час створення та редагування елемента таксономії.

У цьому прикладі ми додамо 2 поля “Заголовок” та “Опис”, для стандартної таксономії категорії тобто. для рубрик WordPress.

<?php
$taxname = 'категорія';

// Поля при додаванні елемента таксономії
add_action("{$taxname}_add_form_fields", 'add_new_custom_fields');
// Поля під час редагування елемента таксономії
add_action("{$taxname}_edit_form_fields", 'edit_new_custom_fields');

// Збереження при додаванні елемента таксономії
add_action("create_{$taxname}", 'save_custom_taxonomy_meta');
// Збереження під час редагування елемента таксономії
add_action("edited_{$taxname}", 'save_custom_taxonomy_meta');

function edit_new_custom_fields( $term ) {
	?>
		<tr class="form-field">
			<th scope="row" valign="top"><label>Заголовок</label></th>
			<td>
				<input type="text" name="extra[title]" value="<?php echo esc_attr( get_term_meta( $term->term_id, 'title', 1 ) ) ?>"><br />
				<span class="description">SEO заголовок (title)</span>
			</td>
		</tr>
		<tr class="form-field">
			<th scope="row" valign="top"><label>Опис</label></th>
			<td>
				<input type="text" name="extra[meta_description]" value="<?php echo esc_attr( get_term_meta( $term->term_id, 'meta_description', 1 ) ) ?>"><br />
				<span class="description">SEO опис (description)</span>
			</td>
		</tr>
		<tr class="form-field">
			<th scope="row" valign="top"><label>Ключові слова</label></th>
			<td>
				<input type="text" name="extra[keywords]" value="<?php echo esc_attr( get_term_meta( $term->term_id, 'keywords', 1 ) ) ?>"><br />
				<span class="keywords">SEO ключові слова (keywords)</span>
			</td>
		</tr>
	<?php
}

function add_new_custom_fields( $taxonomy_slug ){
	?>
	<div class="form-field">
		<label for="tag-title">Заголовок</label>
		<input name="extra[title]" id="tag-title" type="text" value="" />
		<p>SEO заголовок (title)</p>
	</div>
	<div class="form-field">
		<label for="tag-description">Опис</label>
		<input name="extra[meta_description]" id="tag-description" type="text" value="" />
		<p>SEO опис (description)</p>
	</div>
	<div class="form-field">
		<label for="tag-keywords">Ключові слова</label>
		<input name="extra[keywords]" id="tag-keywords" type="text" value="" />
		<p>SEO ключові слова (keywords)</p>
	</div>
	<?php
}

function save_custom_taxonomy_meta( $term_id ) {
	if ( ! isset($_POST['extra']) ) return;
	if ( ! current_user_can('edit_term', $term_id) ) return;
	if (
		! wp_verify_nonce( $_POST['_wpnonce'], "update-tag_$term_id" ) && // wp_nonce_field( 'update-tag_' . $tag_ID );
		! wp_verify_nonce( $_POST['_wpnonce_add-tag'], "add-tag") // wp_nonce_field('add-tag', '_wpnonce_add-tag');
	) return;

	// Все ОК! Тепер потрібно зберегти/видалити дані
	$extra = wp_unslash($_POST['extra']);

	foreach( $extra as $key => $val ){
		// Перевірка ключа
		$_key = sanitize_key($key);
		if( $_key !== $key ) wp_die( 'bad key'. esc_html($key) );

		// очищення
		if( $_key === 'tag_posts_shortcode_links' )
			$val = sanitize_textarea_field( strip_tags($val) );
		else
			$ val = sanitize_text_field ($ val);

		// Збереження
		if(! $val)
			delete_term_meta($term_id, $_key);
		else
			update_term_meta($term_id, $_key, $val);
	}

	return $term_id;
}

Отримати ці метаполя потім можна в шаблоні або ще за допомогою функції get_term_meta() . Наприклад, ID терміна 10, тоді:

$title = get_term_meta(10, 'title', 1);
$meta_description = get_term_meta(10, 'meta_description', 1);

список змін

З версії 3.0.0Введено.

Де викликається хук

wp-admin/edit-tag-form.php 257

do_action( "{$taxonomy}_edit_form_fields", $tag, $taxonomy);

Де використовується хук у WordPress

Використання не знайдено.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *