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

register_taxonomy_for_object_type() WP 3.0 register taxonomy for object type

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

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

Хуков нет.

Возвращает

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

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

<?php 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

Код из wp-includes/taxonomy.php WP 4.7.2

<?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 );

	return true;
}

Связанные Функции

Из раздела: Свои таксономии

register_taxonomy_for_object_type 6 комментариев
  • Velimudr-1 cайт: freelance.ru/tim4ik

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

    Ответить1.9 года назад #
    • Kama4084

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

      Ответить1.9 года назад #
  • Максим cайт: classpic.ru

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

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

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

    Спасибо.

    Ответить1.1 года назад #
    • Максим cайт: classpic.ru

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

      В шаблоне условие:
      if ( 'post' == get_post_type() ):

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

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

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

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

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

      Спасибо.

      Ответить1.1 года назад #

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

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