Intereting Posts
Как добавить класс к родительскому тегу с подменю Как включить все файлы в папку и ее подпапки в functions.php? Создание отдельных каналов для пользовательских типов сообщений Почему do_action передает пустую строку в качестве первого параметра, если не задан параметр $ arg? Добавление заголовка и описания к показанному изображению подстраницы Проблема с данными кнопки PayPall Как программно создавать тысячи конечных точек для публикации или страницы или настраиваемого типа сообщений? wordpress логин без пароля только адрес электронной почты (NO 2-фактор аутентификации с электронной почтой) Почему первая страница одной категории перенаправляется на пустую страницу 4? Создание настраиваемых php-файлов в папке темы Как запросить таблицу wp_postmeta для любого конкретного meta_value? Шрифт Awesome изменяет шрифт WordPress по умолчанию Региональный контент Мигрировал сайт WordPress в AWS, но странная проблема Поле Featured Image не отображается в поле Custom post

Как отображать имена тегов продуктов WooCommerce на домашней странице и в категориях

Я пытаюсь отображать теги продукта WooCommerce на страницах домашней страницы и категории. Наряду с названием продукта тема должна отображать любые теги в алфавитном порядке, разделенные символом «·».

Например: Tag 1 · Tag 2 · Tag 3

Это то, что у меня есть на данный момент:

<?php echo get_the_tag_list('<span class="woocommerce-display-tag">Tags: ',' · ','</span>');?> 

Выход пуст.

Как я могу заставить это работать?

Я думаю, что get_the_tag_list используется только для тегов WordPress по умолчанию. Теги продукта WooCommerce – это обычная таксономия, называемая product_tag . Поэтому вы не можете использовать эту функцию для возврата этих тегов (кто-нибудь, пожалуйста, поправьте меня, если я ошибаюсь здесь)

Вместо этого вы можете использовать get_the_terms() WordPress get_the_terms() , чтобы получить «аналогичный» результат.

Голые кости:

 // get product_tags of the current product $current_tags = get_the_terms( get_the_ID(), 'product_tag' ); //only start if we have some tags if ( $current_tags && ! is_wp_error( $current_tags ) ) { //create a list to hold our tags echo '<ul class="product_tags">'; //for each tag we create a list item foreach ($current_tags as $tag) { $tag_title = $tag->name; // tag name $tag_link = get_term_link( $tag );// tag archive link echo '<li><a href="'.$tag_link.'">'.$tag_title.'</a></li>'; } echo '</ul>'; } 

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


Обновление для разделителей:

У вас есть некоторые опции, как вы хотите удалить последний разделитель или вообще иметь дело с разделителями.

Первый метод использует только CSS . Для этого мы сначала обертываем каждый $tag_title в HTML-элемент (здесь a <span> ). Мы делаем это так, чтобы мы могли нацеливать каждый заголовок.

 //for each tag we create a list item foreach ($current_tags as $tag) { $tag_title = $tag->name; // tag name echo '<span>'.$tag_title.'</span>'; } 

Затем мы добавим 2 новых стиля CSS (используем вашу разметку):

 /* add " · " after each span item inside .woocommerce-Price-amount */ .woocommerce-Price-amount span:after { content: " · "; } /* set content to nothing/remove " · " on the last span element */ .woocommerce-Price-amount span:last-child:after { content: ""; } 

Вы также можете добавить разделитель через PHP .
Для этого нам сначала нужно получить новый массив всех ключей нашего массива $current_tags . Чем мы ищем последний найденный ключ в этом новом массиве. После этого мы используем foreach loop и сравниваем текущий ключ с последним найденным ключом . Если эти два одинаковы, мы знаем, что у нас есть последний элемент.

Измените свою функцию if :

 //only start if we have some tags if ( $current_tags && ! is_wp_error( $current_tags ) ) { //create a list to hold our tags echo '<span class="woocommerce-Price-amount amount">'; // get all keys from the $current_tags array $get_keys = array_keys($current_tags); // get the last key from our keys $last_key = array_pop($get_keys); //for each tag we create a list item foreach ($current_tags as $key => $value) { $tag_title = $value->name; // tag name if($key == $last_key) { echo $tag_title; } else { echo $tag_title.' · '; } } echo '</span>'; } 

PS следите за своим кодом! В опубликованном фрагменте есть ошибка в конце echo '</span> } . Ваш недостающий '