WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Рекомендуемые продукты со скидкой от Template Monster

register_taxonomy_for_object_type() WP 3.0

Привязывает (добавляет) указанную таксономию к указанному типу записи (поста).

Используется, чтобы к типу поста добавить таксономию, например добавить метки к постоянным страницам.

✈ 1 раз = 0.000001с = скорость света | 50000 раз = 0.03с = скорость света | PHP 7.1.11, WP 4.9.8
Хуки из функции
Возвращает

true/false. true, если удалось связать таксономию.

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

register_taxonomy_for_object_type( $taxonomy, $object_type );
$taxonomy(строка) (обязательный)
Название таксономии.
По умолчанию: нет
$object_type(строка) (обязательный)
Название типа поста, к которому будет привязана таксономия.
По умолчанию: нет

Примеры

#1 Используя следующий код, мы можем привязать метки к постоянным страницам WP.

add_action( 'init', 'post_tag_for_pages' );
function post_tag_for_pages(){
	register_taxonomy_for_object_type( 'post_tag', 'page');
}

В итоге в админке, при редактировании страниц у нас появится блок меток, как у постов:

tagsdiv-post_tag

Заметки

  • Global. Массив. $wp_taxonomies The registered taxonomies.

Список изменений

С версии 3.0.0 Введена.

Код register taxonomy for object type: wp-includes/taxonomy.php WP 5.2.4

<?php
function register_taxonomy_for_object_type( $taxonomy, $object_type ) {
	global $wp_taxonomies;

	if ( ! isset( $wp_taxonomies[ $taxonomy ] ) ) {
		return false;
	}

	if ( ! get_post_type_object( $object_type ) ) {
		return false;
	}

	if ( ! in_array( $object_type, $wp_taxonomies[ $taxonomy ]->object_type ) ) {
		$wp_taxonomies[ $taxonomy ]->object_type[] = $object_type;
	}

	// Filter out empties.
	$wp_taxonomies[ $taxonomy ]->object_type = array_filter( $wp_taxonomies[ $taxonomy ]->object_type );

	/**
	 * Fires after a taxonomy is registered for an object type.
	 *
	 * @since 5.1.0
	 *
	 * @param string $taxonomy    Taxonomy name.
	 * @param string $object_type Name of the object type.
	 */
	do_action( 'registered_taxonomy_for_object_type', $taxonomy, $object_type );

	return true;
}

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

Из раздела: Любые таксономии

7 комментов
  • Velimudr-1 freelance.ru/tim4ik

    Добрый день, Тимур.
    Может я не верно делаю, но похоже и слепой подключит такой короткий код.
    Проблема возникает при создании меток для страниц, при переходе нет страниц... и тут дошло до меня, по логике не бывает такого - страница внутри страницы, это как крокодил в крокодиле, по меткам выводятся только анонсы, а страница - это оболочка для содержимого, в данном случая для анонсов, она никак не может быть анонсом или вообще содержимым, она является его оболочкой.
    А следовательно и вывода по тегам для страниц не существует. А код просто добавляет пункт "метки" в категории страниц.
    Здесь только один выход - нужно выводить список страниц привязанных к меткам, в виде ссылок, в шаблоне page.php.... но по мне это крайне тупо, без смысла такое делать.

    Ответить4.5 года назад #
    • Kama7611

      А что нужно сделать-то? Метки для страниц иногда целесообразно указывать, чтобы на странице в page.php выводить записи (посты) у которых есть такая же метка... А самим страницам указывать метки - это бессмысленно, для этого есть записи и на архивах меток, выводятся анонсы записей, но можно конечно сделать, чтобы там и страницы выводились.

      Ответить4.5 года назад #
  • Максим1 classpic.ru

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

    Хочу сделать общие теги для всех типов данных на сайте.
    При помощи данной функции привязал метки к произвольному типу данных.
    В админке метки заполняются, но во фронтенде не выводятся.
    В шаблоне функция "get_the_tag_list", которая используется и для стандартных post-ов. И шаблон-то один для обоих типов данных.

    Подскажите, пожалуйста, в чём может быть ошибка?

    Спасибо.

    1
    Ответить3.8 года назад #
    • Максим classpic.ru

      Нашёл причину.

      В шаблоне условие:

      if ( 'post' == get_post_type() ):

      Добавил в него дополнительное условия для своего типа данных.

      Метки появились, но при нажатии на них открывается страница, где есть только записи типа 'post', а других типов нет.

      Различные манипуляции с кодом и настройками в админке пока не привели к результату.

      Получается, страница с архивом метки не показывает все типы данных.

      Можете подсказать, где копать ещё?

      Спасибо.

      Ответить3.8 года назад #
Здравствуйте, !     Войти . Зарегистрироваться