Intereting Posts
Вместо того, чтобы отправлять всю запись, есть ли способ отправить сообщение в виде сообщения или простое сообщение? Как добавить простой автоматический подсчет числа в контактной форме? Как получить все сообщения, относящиеся к определенному названию категории? Как переопределить файлы шаблонов в родительской теме? Установка WordPress в подпапку, не работающая с nginx Добавить контейнер div в галерею, используя post_gallery найти короткий код внутри содержимого сообщения Справка с раскрывающимся меню get_categories () – я хочу, чтобы он показывался в хирахиальной форме Удалить встроенные стили из the_content? Отключение фильтрации HTML при импорте в WordPress Multisite WordPress SQL-поиск, как обрабатывать SQL-инъекцию? Эхо-сообщения путем проверки current_time () Добавление действия в функцию, вызываемую add_filter Выберите пользователя, объединив несколько значений метаданных Настройка категории сообщения

Как получить список имен имен персонализированного типа сообщений, которые в настоящее время включены в single.php

Итак, у меня есть настраиваемый тип сообщений «Продукты» и пользовательская таксономия «Типы». Теперь в типах таксономии у меня есть десятки категорий и подкатегорий, назначенных для пользовательских типов сообщений.

Пользовательский тип сообщения: синий автомобиль

Категории, присвоенные автомобилю: Honda> Accord> LX

Так что я пытаюсь достичь, когда я перехожу к специальным типам сообщений single.php, например «Blue Car». Я хочу видеть все категии, присвоенные «Blue Car», перечисленные ниже:

Категории: Honda, Accord, LX

Я пробовал использовать get_terms_by get_terms и wp_list_categories но, похоже, это не работает, или я не использовал некоторые из них правильно. Вот что я хочу сказать, если есть лучший способ или другой способ сделать это:

 <ul> <?php //get the current term $current_term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); //set the args for wp_list_categories $args = array( 'child_of' => $current_term->term_id, 'taxonomy' => 'types', 'hide_empty' => 1, 'order' => 'ASC', 'show_count' => 1, 'hierarchical' => true, 'depth' => 1, 'title_li' => '' ); wp_list_categories( $args ); ?> </ul> 

Solutions Collecting From Web of "Как получить список имен имен персонализированного типа сообщений, которые в настоящее время включены в single.php"

SIDENOTE: эта функция может использоваться, даже если сообщения относятся только к одной таксономии. Вам не нужно иметь сообщение, которое принадлежит двум или более таксономии в пределах одной иерархии. Я сделал эту функцию очень гибкой

Мне всегда сложно отображать список категорий или список терминов для сообщения, если возникают следующие условия

  • Наличие должности, имеющей термины, принадлежащие двум различным таксономии

  • Использование одного шаблона для отображения сообщений, и у вас есть сообщения, которые имеют термины, принадлежащие большей части одной таксономии

Вы попадаете в ситуацию, когда вам нужно дублировать функции, по одной для каждой таксономии. Например, сообщение относится к терминам в двух таксономиях: mytax1 и mytax2 . Чтобы отобразить список терминов, вам нужно сделать

 echo get_the_term_list( $post->ID, 'mytax1' ); echo get_the_term_list( $post->ID, 'mytax2' ); 

Это становится беспорядок, когда следующее сообщение относится к category таксономии по умолчанию

Я пошел и написал функцию, которая объединяет все в одну, одну функцию, чтобы отображать все термины всех таксономий, принадлежащих сообщению, и эта функция может использоваться для отображения любой таксономии построения в таксономиях (кроме post_format )

Вот как работает эта функция:

1.) Эта функция использует get_the_term_list() для отображения списка терминов, поэтому эта функция использует те же функции, что и get_the_term_list()

2.) Необходимо использовать внутри петли. Эта функция не будет работать вне цикла

3.) Идентификатор почты и имя таксономии по умолчанию get_the_term_list() функции get_the_term_list()

4.) Вот список аргументов

before (string) (необязательно) Ведущий текст

По умолчанию: пустая строка

sep (string) (необязательно) String для разделения тегов

По умолчанию: пустая строка

after (string) (необязательно) Trailing text

По умолчанию: пустая строка

display_tax_name (bool) (необязательно) Если имя таксономии должно отображаться перед списком.

По умолчанию: false

taxonomy_sep (string) (необязательно) Текст, используемый для разделения имени таксономии из списка терминов

По умолчанию: '&colon; &nbsp; &nbsp;' '&colon; &nbsp; &nbsp;'

multi_tax_sep (string) (необязательно) Если сообщение имеет термины, относящиеся к нескольким таксономии, текст, используемый для разделения двух или более списков терминов

По умолчанию: </br>

Иерархический (bool) (необязательно) Если в списке отображаются иерархические таксономии (например, категории) или неиерархические таксономии (например, теги,

По умолчанию: true

5.) Аргументы могут передаваться как массив или как строка для функции

6.) Требуется PHP 5.4+

Это будет работать (строка)

 'display_tax_name=' . true .'&hierarchical=' . false . '&taxonomy_sep=' . html_entity_decode( '&raquo;&nbsp;&nbsp;' ) 

И это будет работать

 $args = [ 'display_tax_name' => true, 'hierarchical' => false, 'taxonomy_sep' => html_entity_decode( '&raquo;&nbsp;&nbsp;' ) ] 

Функция

 function get_taxonomies_terms_links( $args = '' ){ global $post; $defaults = [ 'before' => '', 'sep' => '', 'after' => '', 'display_tax_name' => false, 'taxonomy_sep' => '&colon; &nbsp; &nbsp;', 'multi_tax_sep' => '</br>', 'hierarchical' => true ]; $args = wp_parse_args( $args, $defaults ); $post_type = $post->post_type; $taxonomies = get_object_taxonomies( $post_type, 'objects' ); $returned_list = []; foreach ( $taxonomies as $taxonomy_slug => $taxonomy ){ if( $args['hierarchical'] == $taxonomy->hierarchical && has_term( '', $taxonomy_slug ) && 'post_format' != $taxonomy_slug ) { $term_list = get_the_term_list( $post->ID, $taxonomy_slug, $args['before'], $args['sep'], $args['after'] ); if( true == $args['display_tax_name'] ){ $returned_list[] = strtoupper($taxonomy_slug) . $args['taxonomy_sep'] . $term_list; }else{ $returned_list[] = $term_list; } } } if( $returned_list ) { $count = count($returned_list); if( 1 === $count ) { return implode( '', $returned_list ); }else{ $multi_list = []; foreach ( $returned_list as $key=>$value ) { if (array_key_exists($key + 1, $returned_list)) { $multi_list[] = $value . $args['multi_tax_sep']; }else{ $multi_list[] = $value; } } return implode( '', $multi_list ); } } } 

Пример использования в шаблоне для отображения списка терминов. Вы можете использовать обычные символы чтения или объекты HTML в сочетании с html_entity_decode() и диаграммой символов

Аргументы как строка

 <span class="cat-links"> <?php echo get_taxonomies_terms_links('sep=, &display_tax_name=' . true .'&taxonomy_sep=' . html_entity_decode( '&raquo;&nbsp;&nbsp;' ) ); ?> </span> 

Аргументы как массив

 <span class="cat-links"> <?php echo get_taxonomies_terms_links( [ 'sep' => ', ', 'display_tax_name' => true, 'taxonomy_sep' => html_entity_decode( '&raquo;&nbsp;&nbsp;' ) ], ); ?> </span> 

Функции, которые вы пробовали, – это термины сами по себе , просто существующие на сайте.

То, что вы ищете, это get_the_terms() , который извлекает термины определенной таксономии, назначенные определенной должности.