Отображение категорий и подкатегорий с названием и описанием в category.php

15 сент. 2014 г., 22:25:02
Просмотры: 15.1K
Голосов: 1

У меня следующая задача для клиента. Может кто-то предложить возможное решение?

На этом сайте есть Категории и Подкатегории

Кат1
-Подкат1
-Подкат2
-Подкат3

Кат2
-Подкат1
-Подкат2
-Подкат3

ЧТО МНЕ НУЖНО:

  • При нажатии на Кат1 или Кат2, нужно отображать примерно следующее:
  • Повторять это действие, пока у категории и подкатегории есть записи! (важно)

Вот как это должно выглядеть

После нажатия на эти подкатегории, должна генерироваться страница со всеми записями из этой подкатегории.

P.S.: Было бы здорово, если бы вы могли подсказать, как это сделать. И как я могу поместить переменные в DIV из моего category.php (get_the_title; get_the_description..)

3
Комментарии

Значит, вы хотите, чтобы родительская категория (Cat1/Cat2) вела на страницу, как на скриншоте выше, и только при клике на подкатегорию открывался список записей? Я правильно понимаю? Вы можете отредактировать category.php так, чтобы он не использовал get_template_part для загрузки цикла, а вместо этого использовал пользовательский файл. Используйте условный оператор, который будет загружать цикл только для подкатегорий. Это может помочь: http://rachievee.com/2014/09/06/wp-tutorial-how-to-apply-a-template-to-subcategories/

RachieVee RachieVee
16 сент. 2014 г. 22:49:41

Также попробуйте эту тему для вывода подкатегорий под родительскими категориями: http://wordpress.stackexchange.com/questions/13485/list-all-subcategories-from-category

RachieVee RachieVee
16 сент. 2014 г. 22:59:16

Был ли этот вопрос успешно решён? Если да, пожалуйста, отметьте ответ как принятый или опубликуйте и примите собственный ответ, чтобы поддерживать порядок на сайте. Спасибо.

Andy Macaulay-Brook Andy Macaulay-Brook
8 авг. 2016 г. 00:09:30
Все ответы на вопрос 1
1

Насколько я понимаю, у вас есть список родительских категорий и подкатегорий, которые выглядят как меню. Для вашего первого скриншота:

Кат1 -Подкат1 -Подкат2 -Подкат3

Кат2 -Подкат1 -Подкат2 -Подкат3

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

<ul class="category-sidebar">   
    <?php 
        $get_parent_cats = array(
            'parent' => '0' //получаем только категории верхнего уровня
        ); 

        $all_categories = get_categories( $get_parent_cats ); //получаем родительские категории

        foreach( $all_categories as $single_category ){
            //для каждой категории получаем ID
            $catID = $single_category->cat_ID;

            echo '<li><a href=" ' . get_category_link( $catID ) . ' ">' . $single_category->name . '</a>'; //название и ссылка категории
            $get_children_cats = array(
                'child_of' => $catID //получаем дочерние категории, используя переменную catID
            );

            $child_cats = get_categories( $get_children_cats ); //получаем дочерние категории
            echo '<ul class="children">';
                foreach( $child_cats as $child_cat ){
                    //для каждой дочерней категории получаем ID
                    $childID = $child_cat->cat_ID;

                    //для каждой дочерней категории выводим ссылку и название
                    echo '<a href=" ' . get_category_link( $childID ) . ' ">' . $child_cat->name . '</a>';

                }
            echo '</ul></li>';
        } //конец логики работы с категориями ?>
</ul><!--конец category-sidebar-->

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

Обратитесь к руководству, которое я оставил в комментариях, по использованию условных операторов в category.php. В архиве вы будете проверять, загружается ли родительская категория или подкатегория. Если это подкатегория, показываем цикл записей, если родительская — страницу с подкатегориями и их описаниями. Вот как будет выглядеть код для подкатегорий и их описаний в цикле:

       <?php 
        //для текущей категории на странице архива получаем ID
        $thisID = get_query_var('cat');

        $get_children_cats = array(
            'child_of' => $thisID //получаем дочерние категории, используя переменную thisID
        );

        $child_cats = get_categories( $get_children_cats ); //получаем дочерние категории

        foreach( $child_cats as $child_cat ){
            //для каждой дочерней категории получаем ID
            $childID = $child_cat->cat_ID;

            //для каждой дочерней категории выводим ссылку, название и описание
            echo '<div class="child-wrap"><h2><a href=" ' . get_category_link( $childID ) . ' ">' . $child_cat->name . '</a></h2><br/>';
            echo '<p>' . $child_cat->category_description . '</p></div>';
        } //конец логики работы с категориями ?>

Я понимаю, что кода довольно много, но похоже, вам нужно выполнить несколько задач. Единственное, что вам нужно доработать самостоятельно — это настройка архива для отображения списка записей или страницы, как на втором скриншоте. Надеюсь, это поможет лучше, чем ресурсы в комментариях, которые я предоставил ранее. Удачи!

17 сент. 2014 г. 19:37:11
Комментарии

Я также написал руководство по этой теме. Посмотрите, пожалуйста https://www.cloudways.com/blog/get-categories-and-subcategories-in-wordpress/

Owais Alam Owais Alam
11 окт. 2017 г. 12:09:04