WordPress как на ладони
Официальная конференция по WordPress в Moскве 18-19 августа, начало в 9:00 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.6 года назад
  • 0
    Kama6693

    В коде это будет выглядеть так: допустим 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.6 года назад

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

    Сергей год назад

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

    Kama год назад

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

    Sergs год назад

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

    Kama год назад

    Да, достаточно.

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

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

    Антон 4 месяца назад

    а это только для какой-то определенной категории. А для всех можно такое использовать?

    firewaters 3 месяца назад

    актуален ещё вопрос. как использовать для всех?

    Kama 3 месяца назад

    Для всех чтобы вывести получи все нужные рубрики (или любые другие таксы) с помощью get_categories() и прогони результат через foreach() как тут показано.

    Ярослав 10 дней назад

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

    Kama 4 дня назад

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

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