WordPress как на ладони
wordpress jino

add_term_meta() WP 4.4.0

Добавляет мета поле (дополнительное поле) для элемента указанной таксономии (рубрики, метки ...).

Работает на основе: add_metadata(), wp_term_is_shared()

Хуков нет.

Возвращает

Число/WP_Error/true/false.

  • ID - в случае успешного добавления.
  • WP_Error - в случае неверно заданного term_id таксономии.
  • False - в случае ошибки в процессе добавления.

Использование

add_term_meta( $term_id, $meta_key, $meta_value, $unique );
$term_id(число) (обязательный)
ID термина таксономии.
$meta_key(строка) (обязательный)
Ключ мета поля.
$meta_value(смешанный) (обязательный)
Значение мета поля.
$unique(логический)

Уникальное это значение или нет.

  • false - означает, что для этого элемента таксономии может быть определено несколько одинаковых ключей.
  • true - значит, что ключ для этого элемента может быть только один, т.е. если такой ключ уже существует, то функция ничего не добавит.
    По умолчанию: false

Примеры

#1 Добавим мета поле с единственным значением

$term_id  = 62;
$meta_key = 'test_meta_field';

add_term_meta( $term_id, $meta_key, 'Привет мир', true );

// Выводим
echo get_term_meta( $term_id, $meta_key, true ); // выведет 'Привет мир'

// пробуем добавить еще одно поле с тем же ключом
$done = add_term_meta( $term_id, $meta_key, 'Привет мир 2', true );
var_dump( $done ); // bool(false)

#2 Добавляем несколько значений для одного мета поля

$term_id  = 62;
$meta_key = 'test_meta_field';

// Добавляем
add_term_meta( $term_id, $meta_key, 'Привет мир', false );
add_term_meta( $term_id, $meta_key, 'Hello world', false );

// смотрим что получилось
$fields = get_term_meta( $term_id, $meta_key );
print_r( $fields );

/* выведет
Array
(
	[0] => Привет мир
	[1] => Hello world
)
*/

Код add term meta: wp-includes/taxonomy.php WP 4.8.2

<?php
function add_term_meta( $term_id, $meta_key, $meta_value, $unique = false ) {
	// Bail if term meta table is not installed.
	if ( get_option( 'db_version' ) < 34370 ) {
		return false;
	}

	if ( wp_term_is_shared( $term_id ) ) {
		return new WP_Error( 'ambiguous_term_id', __( 'Term meta cannot be added to terms that are shared between taxonomies.'), $term_id );
	}

	$added = add_metadata( 'term', $term_id, $meta_key, $meta_value, $unique );

	// Bust term query cache.
	if ( $added ) {
		wp_cache_set( 'last_changed', microtime(), 'terms' );
	}

	return $added;
}

Cвязанные функции

Из метки: metadata (метаданные)

petrozavodsky 675alkoweb.ru
Делаю веб, можно сказать работаю с WordPress. Временами живу в Краснодаре.
add_term_meta 2 комментария
  • Дмитрий М @

    Доброго времени суток!
    Подскажите пожалуйста.
    Хочу с помощью add_term_meta хранить url картинки термина таксономии. Добавить поле <input type="file"/> в форму добавления и редактирования термина проблем не составит (есть специальные хуки), так же не составит проблем обработать результат выполнения с помощью функции хуков и media_handle_upload(), но вот как добавить к форме редактирования (и создания) термина таксономии атрибут enctype="multipart/form-data" - не знаю. Может есть какая-нибудь зацепка (хук)?
    Заранее благодарен за ответ.

    • Дмитрий М @

      Прошу прощения! Проблему решил более изящным способом.
      Добавил дополнительное поле в блок добавления термина с помощью хука {termname}_add_form_fields:

      <div class="form-field term-ads-thumb-file">
      			<label for="term_ads_thumb_file">Url изображения миниатюры</label>
      			<input type="text" name="term_thumb_file" id="term_ads_thumb_file" value="" />
      			<a class="button" href="<?php echo esc_url(home_url('/')); ?>wp-admin/media-upload.php?type=image&TB_iframe=1" id="adscat-thumb">Выбрать изображение</a>
      			<p>URL миниатюры категории</p>
      	</div>

      Активировал скрипты библиотеки файлов: wp_enqueue_media();
      Добавил свой js кодом:

      jQuery(document).ready(function () {
      	if (jQuery('#adscat-thumb').length > 0) {
      		jQuery('#adscat-thumb').click(function (e) {
      			var mdv_attachment = wp.media.editor.send.attachment;
      			var mdv_add_thumb_button = jQuery(this);
      			wp.media.editor.send.attachment = function (props, attachment) {
      				jQuery(mdv_add_thumb_button).prev().val(attachment.url);
      				wp.media.editor.send.attachment = mdv_attachment;
      			};
      			wp.media.editor.open(mdv_add_thumb_button);
      			e.preventDefault();
      		});
      	}
      });

      Потом помощью add_term_meta($termId, '{termname}-thumb-url', $_POST['term_thumb_file'], true ); добавил значение. Теперь можно обрабатывать вывод терминов в помощью wp_list_categories() и wolker, для отображения миниатюр термина.

      1

Здравствуйте, !

Ваш комментарий