WordPress как на ладони
wordpress jino

Вывод дочерних категорий и записей из них

Добрый день, если такая проблема, надо вывести все дочерние категории, одной родительской категории, и соответственно посты дочерних категорий.
Структура такая

Услуги(Родительская категория)

  • Дочерняя услуга 1

    • Пост 1 Дочерней услуги 1

    • Пост 2 Дочерней услуги 1

    • Пост 3 Дочерней услуги 1

  • Дочерняя услуга 2

    • Пост 1 Дочерней услуги 2

    • Пост 2 Дочерней услуги 2

    • Пост 3 Дочерней услуги 2

  • Дочерняя услуга 3

    • Пост 1 Дочерней услуги 3

    • Пост 2 Дочерней услуги 3

    • Пост 3 Дочерней услуги 3

Спасибо большое

0
3.1 года назад
  • 0
    Kama5064

    В коде это будет выглядеть так: допустим ID родительской категории "Услуги" = 5, тогда получаем дочерние категории и выводим записи из них:

    <?php
    $parent_id = 5;
    echo '<h2>Услуги</h2>';
    
    # получаем дочерние рубрики
    $sub_cats = get_categories( array(
    	'child_of' => $parent_id,
    	'hide_empty' => 0
    ) );
    if( $sub_cats ){
    	foreach( $sub_cats as $cat ){
    
    		// Данные в объекте $cat
    
    		// $cat->term_id
    		// $cat->name (Рубрика 1)
    		// $cat->slug (rubrika-1)
    		// $cat->term_group (0)
    		// $cat->term_taxonomy_id (4)
    		// $cat->taxonomy (category)
    		// $cat->description ()
    		// $cat->parent (0)
    		// $cat->count (14)
    		// $cat->object_id (2743)
    		// $cat->cat_ID (4)
    		// $cat->category_count (14)
    		// $cat->category_description ()
    		// $cat->cat_name (Рубрика 1)
    		// $cat->category_nicename (rubrika-1)
    		// $cat->category_parent (0)
    
    		echo '<h3>'. $cat->name .'</h3>';
    
    		# получаем записи из рубрики
    		$myposts = get_posts( array(
    			'numberposts' => -1,
    			'category'    => $cat->cat_ID,
    			'orderby'     => 'post_date',
    			'order'       => 'DESC',
    		) );
    		# выводим записи
    		global $post;
    		foreach($myposts as $post){
    			setup_postdata($post);
    			echo '<li><a href="'. get_permalink() .'">'. get_the_title() .'</a></li>';
    		}
    		wp_reset_postdata(); // сбрасываем глобальную переменную пост
    
    	}
    }
    Ильяс Фаизов 3.1 года назад

    Спасибо большое,очень выручили ))))

    Сергей 7 месяцев назад

    Добрый вечер. Куда собственно вышеуказанный код вставить? Пожалуйста, подскажите.

    Kama 7 месяцев назад

    Туда, где нужно вывести список. Это где-то в файле шаблона...

    Sergs 6 месяцев назад

    Здравствуйте, подскажите, а если выводить нужно не посты, а товары вукомерса(так же только дочерних категорий). Достаточно ли просто изменить строку в запросе с category на product_cat?

    Kama 6 месяцев назад

    Думаю достаточно.

    Сергей 4 дня назад

    Спасибо, сам не догадался.

    Комментировать
  • 0

    Почему то title выпадает из ссылки.
    Как добавить содержимое записи?

    Kama 1.5 года назад

    Была ошибка в коде: the_title() надо заменить на get_the_title()

    alex-ru 1.5 года назад

    Спасибо. Но похоже title не обновляется, повторяет заголовок последнего поста всем постам.

    Kama 1.5 года назад

    Хм странно, $post не используется как глобальная, вы наверное код используете в контексте какой-то функции... Обновил его, добавил global $post; теперь наверняка должно работать.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.