WordPress как на ладони
WordPress темы и плагины за 250 рублей 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.5 года назад
  • 0
    Kama5346

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    firewaters 23 дня назад

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

    Kama 17 дней назад

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

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