Intereting Posts
Удалите кнопку «Get Shortlink» в администраторе настраиваемого типа сообщения Дисплей Woocommerce Добавить в корзину вариант как виджет Почему я получаю различную визуализацию при запуске веб-сайта на моем локальном компьютере и на удаленном сервере? Запретить обновление WordPress от переопределения пользовательских языковых переводов? Тема WordPress сбрасывается до значения по умолчанию после загрузки Заменить сценарии на ненужных страницах с помощью remove_action Как контролировать размер отображения мультимедийных носителей с помощью собственного проигрывателя wordpress Как получить WP_Object, который находится внутри массива другого массива Как изменить петлю в archives.php Чтобы иметь 11 сообщений на странице и CSS-стиль Как показать биографию пользователей на странице WooCommerce – добавление пользовательских полей для выставления счета Ошибка CDATA для RSS-канала Многоязычная тема: изменение языкового стандарта на основе URL-адреса wp_nav_menu добавить некоторый элемент в контейнер Buddypress, BBPress – deqeue bp, bbp css и количество членов группы

Как проверить, находится ли пользователь в терминах таксономии на странице родителей, ребенка или внука?

У меня есть обычная таксономия: product_range и она имеет 3 уровня:

(1 – родительский) продукт

(2 – ребенок) Категория продукта

(3 – Grandchild) Подкатегория продуктов

Мне нужно отображать различный контент в зависимости от того, на какой странице находится пользователь, как проверить, находится ли пользователь на родительской странице, а затем отображать что-либо, если пользователь находится на дочерней странице, что-то еще и еще раз, re на странице внука.

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

 <?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); if($term->parent > 0) { // THIS IS THE CHILD PAGE include(locate_template('product-range-category-index.php')); } else { // THIS IS THE PARENT PAGE include(locate_template('associated-product-ranges.php')); } ?> в <?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); if($term->parent > 0) { // THIS IS THE CHILD PAGE include(locate_template('product-range-category-index.php')); } else { // THIS IS THE PARENT PAGE include(locate_template('associated-product-ranges.php')); } ?> в <?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); if($term->parent > 0) { // THIS IS THE CHILD PAGE include(locate_template('product-range-category-index.php')); } else { // THIS IS THE PARENT PAGE include(locate_template('associated-product-ranges.php')); } ?> побочный <?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); if($term->parent > 0) { // THIS IS THE CHILD PAGE include(locate_template('product-range-category-index.php')); } else { // THIS IS THE PARENT PAGE include(locate_template('associated-product-ranges.php')); } ?> 

Solutions Collecting From Web of "Как проверить, находится ли пользователь в терминах таксономии на странице родителей, ребенка или внука?"

Попробуйте get_ancestors() :

 $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); $ancestors = get_ancestors( $term->term_id, 'product_range', 'taxonomy' ); $hierarchy_levels = count( $ancestors ); switch ( $hierarchy_levels ) { case 0: // THIS IS THE PARENT CATEGORY // DO YOUR STUFF break; case 1: // THIS IS THE PARENT CATEGORY // DO YOUR STUFF break; case 2: // THIS IS THE PARENT CATEGORY // DO YOUR STUFF break; } 

Другим решением (но сдерживающим) было бы определение того, в какой иерархии находится пользователь в настоящее время на основе структуры URL. Ограничение будет заключаться в том, что вам необходимо сохранить «простую» или «классическую» структуру иерархии в URL-адресах вашей категории, как показано ниже:

  • https://example.com/parent/child/grandchild/
  • https://example.com/parent/child/
  • https://example.com/parent/