register_taxonomy_for_object_type() — присваивает таксономию указанному типу постов

Функция присваивает уже зарегистрированную таксономию к указанному в параметрах типу постов. В случае успеха возвращает true.

После этого на странице редактирования записей указанного типа появится соответствующий метабокс таксономии (наподобие метабокса рубрик или меток — это зависит от иерархии таксономии).

register_taxonomy_for_object_type( $taxonomy, $object_type)
$taxonomy
(строка) название таксономии,
$object_type
(строка) тип поста;

Пример

Как вы знаете, тип постов page не поддерживает ни рубрик ни меток, предположим, нам понадобилось помечать страницы тегами.

И кстати, функция обязательно и всегда должна подключаться через init, иначе просто ничего не произойдет, вот пример:

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

Вставляем код в functions.php (например) и просто переходим на Страницы > Добавить новую и видим в правой колонке метабокс с метками:

метабокс с метками при редактировании страниц, добавленный с помощью register_taxonomy_for_object_type

Комментарии 3

  • Рыгор17 апреля 2015 в 13:04 #

    Здравствуйте. Применил этот пример к произвольным типам записей.

    function post_tag_for_custom_types(){
        register_taxonomy_for_object_type( 'post_tag', 'proizvol-1');
        register_taxonomy_for_object_type( 'post_tag', 'proizvol-2');
    }
    add_action( 'init', 'post_tag_for_custom_types' );

    Да, область для назначения меток появилась при добавлении записей в эти типы. На странице редактирования меток wp-admin/edit-tags.php?taxonomy=post_tag показывается, что метки существуют и материалы для них назначены, но при попытке просмотра этих меток на сайте, выдает что ничего не найдено.
    И по адресу wp-admin/edit.php?tag=tag_kotoriy_est_v_proizvol1 также показывает пустоту.

  • Рыгор17 апреля 2015 в 14:04 #

    похоже я все понял
    нужно вводить такой адрес чтобы увидеть нужные теги в произвольной таксономии
    /wp-admin/edit.php?post_type=proizvol-1&tag=tag_kotoriy_est_v_proizvol-1
    тогда посты с нужным тегом в произвольной таксономии видны.
    А при попытке просмотра этих меток на сайте, их не выводит, т.к. у меня в шаблоне tag.php используется стандартный вывод цикла ВП. Видимо он работает только для стандартных типов записей. Я прав?

    <?php  if (have_posts()) : while (have_posts()) : the_post(); 
    	<a href="<?php the_permalink(); ?>"><? the_title(); ?></a>					
    	endwhile;
     ?>

    Подскажите, как выкрутится из ситуации. Что если в шаблоне tag.php задавать условие if post_type=proizvol-1, и тогда в этом if формировать новый обьект wp_query
    $query=new WP_Query(array('post_type'=>'proizvol-1',...))
    Так можно или я перемудрил?

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

phpjsHTMLCSSSQLПросто код
  Комментарии закрыты.
  • Миша: Привет ещё раз, не поверишь, реально не сталкивался с этим вопросом. По теории можно сказать следующее: во-первых,...

  • Миша: Привет, вообще без проблем, делаешь всё через require(), require_once() - выбирай любую, какая больше нравится.

  • Виталий Моргунов: Привет! Не могу разобаться, как я могу контролировать порядок подключения стилей. В моем случае мне нужно чтобы стили...

  • Миша: Спасибо!

  • w0rmak: Это было просто. Нашел код в интернете. Добавьте и себе ymaps.load(function () { var input = document.getElem...