Поддержка Проблемы и решения Как можно реализовать функцию на wordpress?

  • Здравствуйте, как можно заменить категории исходя из того в какой категории я нахожусь.
    Например на фото я в категории Реклама, а над ним 3 другие категории. Как сделать чтобы при нажатии на категорию Инфографика, человек бы перешел в категорию Инфографика а наверху в 3 категориях чтобы стояло уже и категория Реклама. По сути получается что не активные категории должны быть наверху а активная категорию внизу.
    Как можно это реализовать?
    http://kopernik.in/category/%d1%80%d0%b5%d0%ba%d0%bb%d0%b0%d0%bc%d0%b0/

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Список всех категорий можно получить через get_terms.
    Параметр exclude указывает те категории, которые нужно исключить.
    ID текущей категории (которую и нужно исключить) можно получить через get_queried_object().
    Будет как-то так:

    $current = get_queried_object();
    $args = array(
    	'taxonomy'=> 'имя_таксономии',
    	'exclude' => $current->term_id,
    );
    $cats = get_terms( $args );

    В итоге в $cats будет требуемый список. Осталось его в цикле вывести. Упрощенно это будет так:

    <ul>
    	<?php foreach ( $cats as $entry ) : ?>
    		<li><a href="<?php echo get_term_link( $entry ); ?>"><?php echo $entry->name; ?></a></li>
    	<?php endforeach; ?>
    </ul>

    Ну а вывод записей из категории (сами видеоролики) — это ж стандартный цикл Вордпресса.
    Если ссылка на YouTube хранится в доп.полях записи, то просто подставляете ее каждый раз в <iframe src=»…»></iframe>.

    P.S. У Вас с html-разметкой не очень. Использовать каждый раз section вместо div так себе идея. section — это может быть, например, весь блок с кнопками/ссылками «Инфографика», «Инфо», «Монтаж». Но внутри него лучше сделать список как у меня, или, в крайнем случае, каждая ссылка в div, а не section.

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

    Большое спасибо за ответ. Свою верстку я обязательно улучшу и заменю section на div.
    Я поставил ваш код на сайт и получил все категории

    $current = get_queried_object();
    $args = array(
    	'taxonomy'=> 'category',
    	'exclude' => $current->term_id,
    );
    $cats = get_terms( $args );

    Но exclude не работает. В чем может быть причина?

    'exclude' => array($current->term_id),

    Я поставил вашу строку вместо прошлой, но он все равно не заработал.

    @adger, только сейчас ради интереса проверил свой код в category.php на стандартной теме — всё ОК.
    У меня создано 3 рубрики. При переходе в любую из них в массиве $cats оказываются оставшиеся две — кроме открытой, в общем.

    Гадать почему у Вас не заработало можно долго. Разве что покажите полностью файл, куда вы этот код вставили. Куда-нибудь типа Яндекс-диска выгрузите, например.

    https://yadi.sk/d/CzWwGOdGte-BYw
    https://yadi.sk/d/1EXj7haU_KL9jw
    Ссылка на файл function.php and category.php

    functions.php не надо было трогать. Фрагмент, который Вы в него поместили, нужно тоже сделать в category.php. Хоть прямо перед моим foreach, хоть после get_header() — это уже без разницы.

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Тема «Как можно реализовать функцию на wordpress?» закрыта для новых ответов.