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

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

Постараюсь переформулировать свой предыдущий вопрос.

У меня имеется пользовательский тип записи product. И есть стандартная рубрика wordpress назовем ее products. То есть в эту рубрику я буду размещать все имеющиеся у меня записи типа product. Но у основной рубрики products могут быть дочерние, к примеру, new, best и тд. И количество дочерних рубрик заранее неизвестно.

Моя задача состоит в том, чтобы на шаблоне своей страницы я мог для каждой подрубрики выводить колонку, в которой в названии указывается название дочерней рубрики, дается ссылка на все продукты данной рубрики и ниже идет 3-4 последних записи. То есть по итогу у меня должно получиться n независимых друг от друга столбцов.

Я к сожалению плохо разбираюсь в php и все делаю больше интуитивно, чем осознанно. Я представляю как я бы сделал это в javascript, получил бы объект с ключами подрубрик, прошелся по нему циклом for(key in obj) и вывел все куда необходимо.

А вот с какой стороны к этому подступиться в php понятия не имею. Подскажите с какой стороны на это все посмотреть пожалуйста и с чего начать.

0
karssen 1.1 года назад
  • 1
    campusboy1833 cайт: wp-plus.ru

    В php по подобному принципу работает. Вот функции, которые Вам могут помочь получить данные для обработки: get_terms, get_taxonomies, get_categories.

    campusboy 1.1 года назад

    Вот недавно делал похожее, только нужно было сделать меню из подрубрик, входящих в состав определенной рубрики:

    /**
     * Вывод рубрик Услуг
     */
    function the_services_navigations(){
      // Получить данные рубрик, в том числе и без записей, у которых родительская рубрика с ID = 6
      $cat_data = get_categories( array( 'parent' => 6, 'hide_empty' => 0 ) );
      if ( $cat_data ) {
    	$cat_links = '';
    	foreach ( $cat_data as $one_cat_data)
    		$cat_links .= sprintf( '<a href="%s">%s</a>', get_category_link( $one_cat_data->term_id ) , $one_cat_data->cat_name );
    	printf( '<div class="nav-cat">%s</div>', $cat_links ); 
      }
    }

    Так как Вам ещё нужно вывести по 5 постов, то нужно дополнить запрос на посты, с помощью get_posts.

    campusboy 1.1 года назад

    Предположительное решение, нужно лишь ID родительской рубрики свой поставить:

    <?php
    
    // Получить данные рубрик, в том числе и без записей, у которых родительская рубрика с ID = 6
    $cat_data = get_categories( array( 'parent' => 6 ) );
    
    // Нсли подрубрики нашлись - начинаем их обработку
    if ( $cat_data ) {
    
      foreach ( $cat_data as $one_cat_data ){
    
    	// Возвращает название подрубрики в виде ссылки
    	$block_cats = sprintf( '<div class="name-cat"><a href="%s">%s</a></div>', get_category_link( $one_cat_data->term_id ) , $one_cat_data->cat_name );
    
    	// Получаем посты с подрубрики (они там 100% есть, потому что get_categories по дефолту получает только такие)
    	$cat_posts_data = get_posts( array( 'category' => $one_cat_data->cat_ID ) );
    
    	foreach ( $cat_posts_data as $one_cat_post_data ){
    
    	  // Возвращает название записи в виде ссылки и сливает с предыдущими блоками (в том числе и блоком из "названия рубрики")
    	  $block_cats .= sprintf( '<div class="name-post"><a href="%s">%s</a></div>', get_the_permalink( $one_cat_post_data->ID ) , $one_cat_post_data->post_title );
    
    	}
    
      }
    
      // Выводим на экран название рубрики + 5 записей из неё ( см. дефолтные значения get_posts, можно увеличить )
      printf( '<div class="cat-block">%s</div>', $block_cats );
    
    }
    
    ?>
    karssen 1.1 года назад

    Большое спасибо. Как опробую отпишусь.

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