Поддержка Проблемы и решения Требуется пояснение

  • Всем привет,
    Кто-нибудь может подсказать про добавление пользовательского типа записи.
    В частности интересует ‘taxonomies’ => array(‘post_tag’),.
    Не могу понять как это работает…
    Ситуация:
    Есть стандартный тип записи с рубриками и метками.
    Сделали свой тип записи с рубриками и метками.
    Не могу вывести метки добавленного типа записи. Листал просторы нета и наткнулся на то, что, если в в регистрируемой записи пишем: ‘taxonomies’ => array(‘post_tag’),, то будет поддержка меток в произвольной записи.
    Однако, если это условие есть, то в произвольном типе записей тупо дублируются метки из стандартных записей.
    В связи с этим, возник следующие вопросы:
    1. Что за штука такая ‘taxonomies’ => array(‘post_tag’),?
    2. Как сделать вывод меток произвольного типа записи?

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Вам уже все пояснили — не нужно дублировать топики.

    Хорошо, тогда прошу пояснить про вопрос: 2. Как сделать вывод меток произвольного типа записи?
    Публиковал вопрос тут.

    И ещё, согласно кодексу указано:
    ‘taxonomies’
    (array) An array of taxonomy identifiers that will be registered for the post type. Taxonomies can be registered later with register_taxonomy() or register_taxonomy_for_object_type().
    У меня эта строка закомментирована и не сливаются метки из стандартных записей. Но предполагаю, что свои метки из моей записи не могу вытащить именно из-за того, что эта строка закомментирована.
    // 'taxonomies' => array('post_tag'), // добавит поддержку меток к custom post type. Если добавить в таком виде: 'taxonomies' => array('post_tag'), то все метки из категорий цепляются.
    Хочется больше про это узнать, но не могу найти инфо…

    • Ответ изменён 1 год, 11 месяцев назад пользователем legal2019.

    Решение оказалось таким (может кому будет интересно и полезно):
    При регистрации таксономии для созданного произвольного типа записи просто нужно сделать так:

    add_action( 'init', 'true_register_name-of-your-custom-post-type' ); // Использовать функцию только внутри хука init
    function true_register_ name-of-your-custom-post-type' () {
      $labels = array(…);
      $args = array(
            'labels' => $labels,
            'taxonomies' => array('mylabel'), // добавит поддержку меток к таксономии 'mylabel'. Если добавить в таком виде: 'taxonomies' => array('post_tag'), то все метки из стандартных записей цепляются в кастомную.
      );
      register_post_type('name-of-your-custom-post-type' ', $args);

    Соответственно у вас должно быть:

    add_action('init', 'create_name-of-your-custom-post-type_taxonomy');
    function create_name-of-your-custom-post-type_taxonomy(){
            // регистрируем таксономию 'services' к типу записей 'name-of-your-custom-post-type' (как категории)
            // Как категории (иерархический древовидный порядок)   - 'hierarchical' => true,
            // Как теги (не иерархический порядок)                 - 'hierarchical' => false,
    	register_taxonomy('services', array('name-of-your-custom-post-type'), array(
    		'label'             => 'services', // определяется параметром $labels->name
    		'labels'            => array(
                        'name'              => 'Категории услуг ("Термы")',
    )
    		'hierarchical'          => true,
    	) );
    
      // Добавить новую таксономию, не иерархическую (как теги)
     $labels = array(
     'name' => _x( 'Метки для услуг', 'taxonomy general name', 'textdomain' ), 
     );
     $args = array(
     'hierarchical' => false, //
     'labels' => $labels,
     );
    register_taxonomy( 'mylabel', 'name-of-your-custom-post-type', $args );
Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Требуется пояснение» закрыта для новых ответов.