Подкатегории и посты в них

👍 Научим создавать сайты на WordPress бесплатно за 19 уроков. Подробнее →

Всем, привет. Подскажите как сделать?
Имеется страница ( категорий).
В ней должны выводится под категории, с заголовками, описанием и ссылкой на них.
Если у категории нету под категорий, то выводятся посты в ней.
Сейчас получается так, что выводятся сначала под категории и после посты.
Посты указаны только в под категориях, но вывод и в основной от которой идут эти под категории. Еще не понятно как убрать надпись, которая появляется когда нету под категорий. Большое спасибо.

Создай свой первый сайт на WordPress

RodgerFox
Оцените автора
Добавить комментарий

  1. tiaurus

    Перечитал два раза, но так ничего и не понял.

    Ответить
  2. RodgerFox автор

    Бррр, вот пример, точнее как и надо только не много изменить.
    http://svoyaatmosfera.ru/team
    сначала идет описание категории, т.е. тут это команда, дальше идут посты в этой категории.
    А как предполагается, на пример, в категории команда есть под категории: Московская группа, Команда города N и т.д.
    Т.е. при заходе на http://svoyaatmosfera.ru/team , т.е. категорию команда, сначала выводятся под категории, а уж потом в этих под категориях выводятся посты.
    Под категории имеют такой же вид как посты.
    Простите, я не очень хорошо могу объяснить, что творится у меня в голове >.< Еще более в краце, основываясь на выше сказанном. Находимся в категории, если есть подкатегории выводим их если их нету выводим посты которые находятся в категории. Уже это предполагает что в главной категории ( на примере выше, это - команда) постов нету, все они находятся только в под категориях этой категории. Я попробовал бить по корню, структура шаблона: -вывод категории ( название + описание), -функция вывода под категорий, -вывод постов. По логике посты не должны выводится на главной категории, т.е. при создании они были отнесены только к под категориям этой самой главной категории. Но место этого они все с любовью и преданностью попадают под мой взор.

    Ответить
    1. tiaurus

      То есть по сути ваш вопрос сводится к тому, как вывести описание категории?

      Ответить
  3. RodgerFox автор

    не совсем… Вот более развернуто.
    http://mywordpress.ru/support/viewtopic.php?pid=107341#p107341
    Уж не как не могу писать повторно, в душу въелось.

    Ответить
    1. tiaurus

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

      <?php $category_ID = $cat; ?> 
       
      <?php $excludes = get_categories('child_of='.$category_ID) ; 
       
          foreach ( $excludes as $key => $value ){ 
              $exs[] = $value->cat_ID; 
          } 
       
      $my_query = new WP_Query(array( 
                  'cat' => $category_ID, 
                  'category__not_in' => $exs 
       
      )); 
      if ($my_query->have_posts()) : while($my_query->have_posts()) : $my_query->the_post(); 
      ?> 

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

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

      Ответить
  4. RodgerFox автор

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

    function no_children($where) {
        global $wp_query;
        if ($cat = $wp_query->query_vars['cat']) 
            $where = preg_replace('/term_id IN \((.*?)\)/',"term_id IN ('$cat')",$where);
        return $where;
    }
    add_filter('posts_where', 'no_children');

    Но все равно посты под категорий выводятся в главной категории.

    Ответить
    1. Sergey Biryukov
      function no_children($query) {
          if ( $query->is_category ) {
              $query->set( 'category__in', array( get_queried_object_id() ) );
          }
      }
      add_action('pre_get_posts', 'no_children');
      
      Ответить
  5. RodgerFox автор

    хм… ))) теперь все еще не лепей, выводится пост из одной под категории , над ним как раз выводится описание самой категории и место вывода второй под категории выводится описание самой категории.
    Вот ссылка на пример: http://wp.svoyaatmosfera.ru/category/team

    Ответить
  6. RodgerFox автор

    А если по другому, подскажите пожалуйста.
    Есть главная категория, которая имеет свои под категории. Нужно вывести в главной категории список подкатегорий ( да да это делается обычной функцией вп лист категори, с добавлением &child_of=’.$cat на конце, что бы вывод подкатегорий шел, в категории которой находимся.
    Но вот проблема. Если мы заходим на одну из этих подкатегорий, то все соседние подкатегории уже не будут отображатся? Подкажите пожалуйста, как это можно исправить? Поиск по форуму не дал нужного решения.
    Заранее, большое спасибо.

    Ответить