Как добавить теги в пользовательский тип сообщения?


28

У меня есть пользовательский тип записи, portfolioи я пытаюсь добавить в него таксономию тегов, как мне это сделать?


@chifliiiii, если я это сделаю, категории и теги будут такими же, как те, которые используются для сообщений. Как получить категории и теги, которые являются эксклюзивными для нового типа записи?
Трой Темплмен,

@chifliiiii Как отобразить теги в шаблоне?
Макс

Ответы:


15

Вот так :( Где написано «портфолио», где вы регистрируете таксономию для типа поста

add_action( 'init', 'create_tag_taxonomies', 0 );

//create two taxonomies, genres and tags for the post type "tag"
function create_tag_taxonomies() 
{
  // Add new taxonomy, NOT hierarchical (like tags)
  $labels = array(
    'name' => _x( 'Tags', 'taxonomy general name' ),
    'singular_name' => _x( 'Tag', 'taxonomy singular name' ),
    'search_items' =>  __( 'Search Tags' ),
    'popular_items' => __( 'Popular Tags' ),
    'all_items' => __( 'All Tags' ),
    'parent_item' => null,
    'parent_item_colon' => null,
    'edit_item' => __( 'Edit Tag' ), 
    'update_item' => __( 'Update Tag' ),
    'add_new_item' => __( 'Add New Tag' ),
    'new_item_name' => __( 'New Tag Name' ),
    'separate_items_with_commas' => __( 'Separate tags with commas' ),
    'add_or_remove_items' => __( 'Add or remove tags' ),
    'choose_from_most_used' => __( 'Choose from the most used tags' ),
    'menu_name' => __( 'Tags' ),
  ); 

  register_taxonomy('tag','portfolio',array(
    'hierarchical' => false,
    'labels' => $labels,
    'show_ui' => true,
    'update_count_callback' => '_update_post_term_count',
    'query_var' => true,
    'rewrite' => array( 'slug' => 'tag' ),
  ));
}
?>

@JoeBobby, вероятно, стоило бы проверить страницу Кодекса WordPress для регистрации таксономий, чтобы лучше понять все доступные варианты: codex.wordpress.org/Function_Reference/register_taxonomy
Стивен С.

8
Просто обратите внимание, что это создает совершенно новую таксономию под названием «тег» вместо добавления существующей таксономии «post_tag» к пользовательскому типу поста.
Джейк

@chifliiiii как получить эти теги в посте на одной странице со ссылками на теги, как создать шаблон для страницы тегов
Динеш

1
Я согласен с Джейком, я чувствую, что это не решает проблему. Ответ @Marcus должен быть помечен как принятый.
Крейг Уэйн

58

Или просто добавьте:

'taxonomies' => array('post_tag')

Массив зарегистрированных таксономий, подобных categoryили post_tagкоторые будут использоваться с этим типом записи. Это может быть использовано вместо вызова register_taxonomy_for_object_type()напрямую. Пользовательские таксономии все еще должны быть зарегистрированы в register_taxonomy().

в $argsмассив в functions.php-file, где вы создаете пользовательский тип записи с помощью register_post_type().


2
Пожалуйста, добавьте объяснение к вашему ответу: почему это может решить проблему?
fuxia

5

Использовать этот:

add_action( 'init', 'gp_register_taxonomy_for_object_type' );
function gp_register_taxonomy_for_object_type() {
    register_taxonomy_for_object_type( 'post_tag', 'portfolio' );
};

1

Метод 1 (из ответов выше: /wordpress//a/106211/38771 )

Различные типы записей будут использовать одни и те же данные «Теги» по умолчанию типа «сообщение».

  • Выгоды

    • Все (должно) работает из коробки одной строкой

    • Все ваши теги в одном месте в CMS

  • Downsides

    • Забудьте о хорошо структурированной / простой в использовании CMS - список тегов на странице пользовательских типов записей покажет все теги (не только теги, используемые в статьях с пользовательским типом записей) с неправильным счетчиком ...
    • Изменения в теге повлияют на стандартные статьи «пост», а также на статьи пользовательских типов записей (удаление тега удаляет его в обоих типах статей)
    • Сложнее (возможно, невозможно) настроить какую-либо отдельную функциональность тегов: различные описания, настраиваемые поля, изображения и т. Д. (По крайней мере, без особого кодирования поверх основного кода Wordpress) ...

Способ 2 (из ответов выше: /wordpress//a/62263/38771 )

Различные типы сообщений используют разные конфигурации / данные «Теги».

  • Выгоды

    • Создание различных / четко различимых функций, связанных с тегами : шаблоны внешнего интерфейса, возможности, фильтры запросов, действия)
    • Назначьте разные данные, связанные с тегами : поля данных или даже пользовательские поля
    • Лучше управляйте тегами в CMS
      • Пример : редактирование / удаление тега «post» не повлияет на тег (с аналогичным именем / slugged) для других типов записей
  • Компромисс

    Немного больше кода для настройки

По правде говоря, они являются чрезвычайно мощным способом группировать различные предметы самыми разными способами. https://codex.wordpress.org/Taxonomies#Custom_Taxonomies


Вот пример метода 1: Большой спортивный веб-сайт, охватывающий множество тем / лиг / спортивных состязаний с тегами, например, «НБА», «НХЛ», «Баскетбол», «Олимпийские игры», «Стероиды», «Колледж» и т. Д. Не имеет смысла дублировать и управлять тем, что может быть +100 тегами и 4 типами записей (тип записей по умолчанию и 3 пользовательских типа записей). Что касается недостатков, если данные подсчета тегов настолько особенные, то для этого может быть создано собственное представление. Что касается аналогичных пользовательских тегов для каждого типа поста, то, похоже, пока нет очевидной необходимости (стараться придумать один ... нужны примеры).
MarsAndBack

Да, но не будет автоматически постоянных ссылок на теги для разных типов записей. Тег "playoffs" будет иметь "/ tag / playoffs" для всех типов записей. Затем вам нужно настроить правила перезаписи или использовать параметры GET для создания разных постоянных ссылок ... С разной таксономией для каждого типа записи каждый тег "playoffs" для каждого типа записи будет иметь свою собственную постоянную ссылку, которую можно настроить с помощью шаблона Wordpress. Иерархия. Это хорошо, если разные страницы плей-офф различны для НБА, НХЛ ... Я работал над сайтом с таким уровнем настройки для таксономий (настраиваемые поля, изображение таксономии, описание)
PS

1
Я понимаю, что вы говорите. Таким образом, если вы используете разные таксономии тегов для CPT, как насчет того, чтобы сделать так, чтобы при добавлении / редактировании термина в одном налоге он менялся в другом налоге, то есть в синхронизированных уникальных терминах между налогами. Например, определите «Баскетбол» один раз, скажем, в налоге на теги Post, затем, как только вы нажмете «Сохранить», тогда «Баскетбол» также будет уникальным образом создан среди других налогов для CPT. Поэтому введите / отредактируйте тег один раз, и изменение отразится на нескольких налогах на теги. В конце вы получаете управление тегами в одном месте назначения, а также более желательную постоянную ссылку.
MarsAndBack

Да, это был бы действительно хороший способ, если сайт разделяет одну и ту же базовую информацию о таксономиях (название) для нескольких CPT, а также дает возможность дополнительно настраивать эти таксономии (настраиваемые поля, изображения и т. Д.) Для разных CPT. Ницца!
PS

0

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

 add_action( 'init', 'create_client_tax' );
function create_client_tax() {
    register_taxonomy( 
            'client_tag', //your tags taxonomy
            'client',  // Your post type
            array( 
                'hierarchical'  => false, 
                'label'         => __( 'Tags', CURRENT_THEME ), 
                'singular_name' => __( 'Tag', CURRENT_THEME ), 
                'rewrite'       => true, 
                'query_var'     => true 
            )  
        );
}

Раздетая версия принятого уже ответа. Кроме того, это также добавляет совершенно новую таксономию вместо использования существующей таксономии 'post_tag'.
acidrums4
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.