Intereting Posts
Фильтрация настраиваемого типа сообщений с использованием нескольких выпадающих списков таксономии Как суммировать значения из всех пользовательских сообщений. Обновление темы также обновляет тему темы zip Остановить `update_post_meta` работу с каждой страницей обновляется? Как отключить кеш для содержимого, возвращаемого коротким кодом После обновления до php 7 плагин / их обновления сломались wpdb-> get_var всегда возвращает 0 Как определить, выполняется ли сценарий из плагина, темы или дочерней темы в WordPress? Как это сделать с помощью WordPress? Taxonomies? Помощь С проблемой фильтра pre_get_posts в таксономии два меню показывают другое меню, основанное на том, какое меню выбирается в меню1 Плагин не может записывать в базу данных, даже если разрешения корректны? Как устранить URL-адрес карты google из соображений скорости google Включить персонализированные сообщения Тип в Год / Месяц / Дата Архив Не удается получить тест ядра phpunit для работы WordPress

Пользовательские таксономии в классе тела с родительским пугом

Я пробовал много ответов здесь, в stackoverflow, но не смог найти решение моей проблемы. Я создал собственный тип сообщения, называемый ph_products и пользовательские таксономии с именем ph_category .

Затем я создал несколько категорий для этого типа пользовательских сообщений, например:

 blue-products blue-sub-products green-products red-products 

Мне нужно иметь классы тела следующим образом:

Когда на ph_products-archive должен быть класс с этой пулей в теле

Если на одной из родительских категорий соответствующий слизень должен быть в классе тела

И когда я нахожусь на одной из страниц архива подкатегории, мне также нужно иметь класс родительской категории

Например, я на странице архива blue-products, ph_products-archive, blue-sub-products я хочу иметь blue-products, ph_products-archive, blue-sub-products в классе body

Конечно, мне нужны все эти классы в соответствующих отдельных представлениях продуктов.

Я использую этот фрагмент кода для добавления желаемых классов:

(благодаря https://alexanderdejong.com/wordpress/add-custom-taxonomies-body-class )

 function atp_custom_taxonomy_body_class($classes, $class, $ID) { $taxonomies_args = array( 'public' => true, '_builtin' => false, ); $taxonomies = get_taxonomies( $taxonomies_args, 'names', 'and' ); foreach ($taxonomies as $taxonomy) { $terms = get_the_terms( (int) $ID, $taxonomy ); if ( ! empty( $terms ) ) { foreach ( (array) $terms as $order => $term ) { if ( ! in_array( $term->slug, $classes ) ) { $classes[] = $term->slug; } } } } return $classes; } add_filter( 'body_class', 'atp_custom_taxonomy_body_class', 10, 3 ); 

Но этот вид добавляет классы довольно странные, например, когда я нахожусь на ph_products-archive я также получаю ph_products-archive категории последнего опубликованного там элемента, так что если последний элемент находится в категориях blue-products, blue-sub-products I получить эти два слизняка как классы, хотя, хотя я не на этих страницах категории

Или, когда я на странице « blue-products-archive я также получаю категорию категории « blue-sub-products » в классе body.

Как я могу получить только классы, как описано выше?

Из приведенной выше функции вы запросили все таксономии. Не определенно.

Я имею в виду, что это не только для вашей таксономии. Работа для целого.

Вам нужно будет использовать get_term_children ($ term, $ taxonomy), а затем, если у детей есть дочерний термин как класс … если нет, используйте таксономию.

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