Поддержка Проблемы и решения Разный вид для таконосмии и дочерних рубрик

  • Привет, подскажите как можно решить проблему у меня есть две таксономии и дочерние рубрики
    1 Отель
    1,1 Киев
    1,2 Москва
    1,3 Лондон
    2 Дома
    2,1 Киев
    2,2 Москва
    2,2 Лондон

    и мне надо сделать разные виды для Родителиской и дочерней таксономии Отеляь и Дома, то есть что бы в Отелях и его дочериних элементов выводились один дизайн а для домов и дочерних такосномий другой дизайн

    Я сделал так в файле taxonomy-product_cat.php

    <?php 
    
    $term = get_queried_object();
    
    if($term->term_id == pll_get_term(105)){
    
    et_template_part('/taxonomy-product_cat-hotel');
    exit;
    }
    
    ?>

    Для родительсткой выводить то что надо а вот для дочерних не работает, + я еще использываю PolyLang и он для переводов создает новое ID

    Подскажите как можно решить данную проблему

    • Тема изменена 4 года назад пользователем matros97.
Просмотр 1 ответа (всего 1)
  • Добрый день!

    Не совсем понятно, весь ли это код или только фрагмент. В общем случае вам нужно делать там несколько проверок, а не одну.

    Во-первых, Отелем может быть сама текущая рубрика. Во-вторых, рубрика может быть дочерней и тогда Отелем может быть родитель текущей рубрики ($term->parent). Нужно проверять оба этих условия. И то же самое с домами.

    То есть в итоге у вас по идее получится что-то наподобие этого:

    // Задаём ID родительских «рубрик» Отель и Дом (замените значения)
    $hotels_root_id = -1;
    $houses_root_id = -1;
    
    // Получаем ID переведённых родительских «рубрик» из PolyLang
    $hotels_id = pll_get_term( $hotels_root_id );
    $houses_id = pll_get_term( $houses_root_id );
    
    // Получаем текущую «рубрику» и её ID
    $taxonomy = get_query_var( 'taxonomy' );
    $the_id = $wp_query->get_queried_object_id();
    $the_term = get_term( $the_id, $taxonomy );
    
    // Проверяем: 
    // а) является ли текущая рубрика Отелем
    // б) является ли родитель текущей рубрики Отелем
    if ( $the_term->term_id === $hotels_id || 
         $the_term->parent  === $hotels_id ) {
    
        // Загружаем шаблон для отелей
        get_template_part('/taxonomy-product_cat-hotel');
    
    // ...иначе проверяем по аналогии: 
    // а) является ли текущая рубрика Домом
    // б) является ли родитель текущей рубрики Домом
    } elseif ( $the_term->term_id === $houses_id || 
         $the_term->parent === $houses_id ) {
    
        // Загружаем шаблон для домов
        get_template_part('/taxonomy-product_cat-house');
    
    // ...иначе, выводим что-то ещё  
    } else {
    
       // ...
    }

    Это пример на коленке, могут быть опечатки. Плюс нужно, конечно, подставить везде правильные значения ID, пути к шаблонам и т.д

Просмотр 1 ответа (всего 1)
  • Тема «Разный вид для таконосмии и дочерних рубрик» закрыта для новых ответов.