Поддержка Проблемы и решения Как отобразить дочерние рубрики на страницах рубрик?

  • Подсказали такую функцию которая убирает посты доречних рубрик.

    function no_children( $query ) {
        if ( ! is_admin() && $query->is_main_query() && $query->is_category() )
            $query->set( 'category__in', array( get_queried_object_id() ) );
    }
    add_action( 'pre_get_posts', 'no_children' );

    А как при этом добавить дочерние рубрики?

Просмотр 15 ответов — с 1 по 15 (всего 35)
  • так можно

    <?php
    $args=array(
    'parent' => get_query_var('cat'),
    );
    $news_cats   = get_categories($args);
    foreach ($news_cats as $news_cat):
    echo '<a href="'.get_category_link( $news_cat->term_id ).'" >' . esc_html($news_cat->name).'</a>';
    endforeach; ?>
    Автор selftrips-ru

    (@selftrips-ru)

    1.Я правильно понимаю что при этом просто выведется список? А можно придать списку формат вывода списка записи согласно установок темы (понятно, что будет отсутствовать превью, если для рубрики не остановлена картинка тем или иным плагином).
    2.Это дополнительный код? Т.е. если нужно чтобы отображались дочерние рубрики но не отображались их посты 2 кода надо использовать вместе?

    Это вывод ссылок на дочерние рубрики текущей рубрики.
    Как придать вид? не знаю не видя сайта.

    Это дополнительный код, используйте вместе, только первый в functions.php, а второй в category.php или arhive

    Автор selftrips-ru

    (@selftrips-ru)

    1/ http://selftrips.ru/category/samoe-vazhnoe-dlya-puteshestvijj
    2/ Этот когда (который я привел) стоит в плагине
    no-children-0.0.3-1/no-children 0.0.3.php

    <?php
    /*
    Plugin Name: Исключение дочерних рубрик
    Version: no-children 0.0.3 от 19.03.2015
    Description: Плагин исключает со страницы (архива) рубрики все записи, принадлежащие её дочерним рубрикам.
    Plugin URI: http://l-konstantin.ru/kak-so-stranits-rubrik-isklyuchit-zapisi-ih-dochernih-rubrik/
    Author: Константин Лошкарёв, Сергей Бирюков,Юрий-Прогрессор
    Author URI: https://ru.forums.wordpress.org/topic/И-снова-о-рубриках-и-подрубриках?replies=11
    */
    /* Начинаем добавлять сниппеты под этой строкой */
    function no_children( $query ) {
        if ( ! is_admin() && $query->is_main_query() && $query->is_category() )
            $query->set( 'category__in', array( get_queried_object_id() ) );
    }
    add_action( 'pre_get_posts', 'no_children' );
    /* Прекращаем добавлять сниппеты над этой строкой */
    ?

    можно ваш код просто в этот плагин добавить?

    Вам все равно придется где-то выводить в шаблоне этот список рубрик, хоть через плагин он будет добавлен, хоть через functions.php.

    Автор selftrips-ru

    (@selftrips-ru)

    Я пытаюсь рассуждать логично. Если»мой код» Что то убирает из выдачи на странице рубрики, не может ли он что то туда добавить?

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Я пытаюсь рассуждать логично.

    Чтобы рассуждать логично надо прочитать документацию. Иначе не на чем основывать логику.

    Если»мой код» Что то убирает из выдачи на странице рубрики, не может ли он что то туда добавить?

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

    Автор selftrips-ru

    (@selftrips-ru)

    Может я говорю глупость, но вот как расссужлдаю.
    1.»Мой код» изменяет выдачу, (т.е. влияет на список того что выводится)
    2. За формат выдачи отвечает какой другой код.
    3. Если на стадии формирования списка выдачи из него не только убрать посты дочерних категорий, но и «засунуть» эти сами дочерние категории, то они будут выводиться вместе с постами текущей категории.
    Ну или в вашими словами — как в основной запрос добавить текущие дочерние категории?

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Почему Вы так настойчиво отказываетесь от варианта предложенного @qwert555? Он у Вас не заработал?

    3. Если на стадии формирования списка выдачи из него не только убрать посты дочерних категорий, но и «засунуть» эти сами дочерние категории, то они будут выводиться вместе с постами текущей категории.

    Не буду Вас уговаривать — дерзайте 🙂

    Автор selftrips-ru

    (@selftrips-ru)

    Несколько причин.
    1. Этот код сделан в виде плагина, который не будет слетать при обновлениях
    2. Это будет готовый код (в том смысле что понятно куда его вставлять)

    а куда именно надо вставлять код @qwert555? Место в файле?

    Автор selftrips-ru

    (@selftrips-ru)

    Более того он просто дает список, а хотелось бы ну хотя бы столбиком

    Как отобразить дочерние рубрики на страницах рубрик?

    А вы самый простой вариант не рассматривали?
    1. Создать новое произвольное меню, (или несколько меню) состоящее только из дочерних рубрик
    2. Вывести эти меню с помощью виджета «Произвольное меню».
    3. Отрегулировать показ виджетов с меню из дочерних рубрик только на страницах нужных рубрик с помошью одного из плагинов для управления виджетами..

    Автор selftrips-ru

    (@selftrips-ru)

    Рубрик очень много, вручную трудно поддерживать актуальность.
    Еще одна проблема.
    Я хотел бы убрать выдачу постов, из дочерних рубрик. Решение понятно и известно.
    Вот только потом если рубрика содержит только подрубрики, то выдача будет пустая и написано ничего не найдено.
    Но ведь это не так!!! Есть же подрубрики в которых есть посты!!
    Если я правильно понимаю, даже если как нибудь и втиснуть подрубрики, то все равно после них будет написано что ничего не найдено… (постов то нет!)
    Вот по этому и пытаюсь понять как можно в главной выдаче сразу учитывать подрубрики.

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

    и туда разместить этот код

    <style>
    .nawi li {
        width: 221px;
        background: #245594;
        margin: 2px;
        padding:  2px 6px;
        list-style: none;
        }
    .nawi a{
     color: #fff;
        text-decoration: none;
    }
    </style>
    
    <ul class="nawi">
    <?php
    $args=array(
    'parent' => get_query_var('cat'),
    );
    $news_cats   = get_categories($args);
    foreach ($news_cats as $news_cat):
    echo '<li><a href="'.get_category_link( $news_cat->term_id ).'" >' . esc_html($news_cat->name).'</a></li>';
    endforeach; ?>
    </ul>

    Автор selftrips-ru

    (@selftrips-ru)

    ок, попробую.
    Подскажите ваш прошлый под выдавал «строку» с названиями порубрик. можно какое то форматирование приделать к нему?

Просмотр 15 ответов — с 1 по 15 (всего 35)
  • Тема «Как отобразить дочерние рубрики на страницах рубрик?» закрыта для новых ответов.