Значок печати терминов таксономии

В моей теме WordPress Taxonomy = my-category и категории - это AB,AC,AD и т. д. Для пользовательского типа сообщения.

Я хочу напечатать значки для пользовательских категорий, и использование оператора if & else внутри wp_query на index.php ниже - мой код.

 $args = array(
 'post_type'      => 'mycpt',
 'posts_per_page' => 10,
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
  while( $query->have_posts() ) {
    $query->the_post(); 
    the_content();

if ($term_id === 10){
    echo '<p class = "icon-gear"></p>';
}
else if ($term_id === 11){
    echo '<p class = "icon-star"></p>';
}
else if ($term_id === 12){
    echo '<p class = "icon-tv"></p>';
}   
 //and continuous  ..............
}
}

CSS

 .icon-gear:before { background:url('gear.svg') no-repeat; }
 .icon-star:before { background:url('star.svg') no-repeat; }
 .icon-tv:before { background:url('tv.svg') no-repeat; }

Как напечатать значок svg для категорий таксономии?

если вы собираетесь использовать подобное «если», используйте вместо этого переключатель. Вы также можете избежать дублирования кода, произнеся switch ($term_id) case 10: $icon = "star";, а затем echo "<p class='icon-$icon'";. Можете ли вы сказать, что происходит не так? Потому что вы говорите то, что хотите, а не то, что сейчас происходит.

ikdekker 14.03.2018 14:31

Откуда вы берете $term_id?

Stender 14.03.2018 14:43

@ikdekker ничего не показывает. пустое поле без ошибок

F.A 14.03.2018 14:43

если вы просматриваете html, глядя на источник страницы, появились ли элементы <p>? если да, можете попробовать удалить: before из css.

ikdekker 14.03.2018 14:45

@ikdekker в источнике страницы пусто. <p> не показывает

F.A 14.03.2018 14:49

Хорошо, можете ли вы убедиться, что $ term_ids совпадают с 10 и 11

ikdekker 14.03.2018 14:50

Когда я перехожу на страницу редактирования категории, я получаю term_id из адресной строки браузера. localhost/wordpress/term.php?taxonomy=my-category&tag_ID=10&‌​post_type=mycpt&wp_h‌​t.......

F.A 14.03.2018 14:57

Я думаю, где вы устанавливаете свою переменную $term_id - что-то вроде $termArray = get_the_terms(get_the_ID(), 'my-category'); $term_id = $termArray[0];

Stender 14.03.2018 15:00

^ внутри вашего шлейфа while

Stender 14.03.2018 15:02

если вы сейчас используете var_dump($term_id);, вы получаете число, логическое значение (ложь) или строку?

Stender 14.03.2018 15:05

@Stender я получаю NULL

F.A 14.03.2018 17:23

@ikdekker да term_ids совпадают и исправляются

F.A 14.03.2018 17:27

@ F.A. Если вы получаете NULL, это означает, что он не знает, что вы ищете - вам нужно установить переменную, прежде чем вы сможете ее проверить.

Stender 15.03.2018 08:19
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
13
109
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я думаю, что это неправильный способ, и его невозможно обслуживать.

Лично я хотел бы изучить возможность использования настраиваемых полей для добавления текстового поля в ваши категории, и вы можете установить значок для каждого из них через панель управления. Затем вам просто нужно отобразить одно настраиваемое поле во время цикла и по умолчанию использовать пустой значок / значок по умолчанию, если он пуст.

Загляните в плагин Advanced Custom Fields, если вы еще не используете его.

Хотелось бы добиться без плагина. возможно?

F.A 14.03.2018 16:43

Да, с ACF было бы намного проще, но если вы предпочитаете не иметь плагина, взгляните на это руководство: pippinsplugins.com/adding-custom-meta-fields-to-taxonomies

Louis 14.03.2018 17:05

Проблема в том, что каждый плагин, включая ACF, показывает изображения только на taxonomy.php или category.php, но не в индексе. Уже упоминалось о необходимости печати на index.php

F.A 14.03.2018 17:18

ACF должен иметь возможность делать это и с индексом - когда вы запрашиваете по индексу, он также отображается как кошка и налог.

Stender 15.03.2018 08:20
Ответ принят как подходящий

Протестированный код, попробуйте это

 $args = array(
 'post_type'      => 'mycpt',
 'posts_per_page' => 10,
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
  while( $query->have_posts() ) {
    $query->the_post(); 
    the_content();

$terms = get_the_terms( $post->ID, 'my-category');
foreach ( $terms as $term ) {
    $termID[] = $term->term_id;
}
if ($termID[0] === 10){
    echo '<p class = "icon-gear"></p>';
}
else if ($termID[0] === 11){
    echo '<p class = "icon-star"></p>';
}
else if ($termID[0] === 12){
    echo '<p class = "icon-tv"></p>';
}   
 //and continuous  ..............
}
}

Другие вопросы по теме