• Господа, всем доброго дня.

    Вопрос скорее нубский, но что-то никак не могу сообразить.
    На сайте есть несколько рубрик.
    Например: Блог, Статьи, Ближайшие события.
    Блог и Статьи выводятся стандартно, через шаблон archive и показываются все записи (отрывки со ссылками) на странице. Ближайшие события выводятся через кастомный шаблон events, в котором стоит фильтрация по дате события, т.е. выводятся только события у которых дата больше или равна текущей

    Есть задача, сделать для рубрики Ближайшие события архив, в котором будут выводиться события, дата которых меньше текущей.

    И вот что-то я не пойму как это сделать, с учетом того что рубрика у Ближайших событий и Архива событий одна.
    Сделать абы как я конечно могу, но хочется сделать это в рамках идеологии WP.

    Подскажите пожалуйста куда копать.

    Спасибо!

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • И вот что-то я не пойму как это сделать,

    Я честно говоря не уверен что понял задачу.
    Но что если для избранных рубрик (Блог, Статьи) использовать шаблон category. Таким образом всё архивы по датам включая «Ближайшие события» будут обрабатываться шаблоном archive.php. Ну или date.php
    https://codex.wordpress.org/%D0%98%D0%B5%D1%80%D0%B0%D1%80%D1%85%D0%B8%D1%8F_%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%BE%D0%B2

    @sevlad, блог и статьи как раз выводятся через шаблон archive, при чем тоже глубоко кастомизорованный (тема вообще вся с нуля).
    А задача повесить на одну рубрику 2 шаблона с разными фильтрами вывода.
    Можно банально сделать через параметр в GET и разруливать все в одном шаблоне, на сайте ЧПУ, можно обработать через htaccess, но мне кажется это как-то криво.
    + Не знаю как на это среагирует wp rocket и прочие плагины, которые завязаны на штатном ЧПУ WP.

    Модератор Denis Yanchevskiy

    (@denisco)

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

    Доброго.

    Подскажите пожалуйста куда копать.

    Добавить get-параметр или endpoint и при его наличии переопределять параметры выборки в pre_get_posts.

    @denisco, get параметр работает
    Делаю следующий URL: http://www.site.ru/category/all-events/?events_archive
    Дальше через isset($_GET[‘events_archive’]) подрубаю другой шаблон.
    Но в этом случае есть проблема, тот же wp-rocket игнорирует такую страницу.

    Пробовал примеры из Вашего поста про endpoint, но к сожалению либо не хватает знаний в регулярках либо в целом, но адаптировать к сайту то код не получилось ни в каком варианте.
    Пробовал URL http://www.site.ru/category/all-events/events_archive/
    http://www.site.ru/category/events_archive/
    Везде получаю 404…

    Модератор Denis Yanchevskiy

    (@denisco)

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

    А зачем подключать другой шаблон? Если нужно изменить параметры выборки — есть хук pre_get_posts.

    С wp-rocket не работал, поэтому ничего подсказать по нему, увы, не смогу.

    Везде получаю 404…

    Сбрасывали постоянные ссылки? Настройки -> Постоянные ссылки -> Сохранить.

    @denisco,

    А зачем подключать другой шаблон? Если нужно изменить параметры выборки — есть хук pre_get_posts.

    Мне так проще и «на скорость не влияет» вроде.
    + есть некоторые отличия в формате вывода.
    Всё можно реализовать условиями в едином шаблоне, но для проверки работы проще подрубить другой шаблон.
    В любом случае этот подход не работает полностью как ни крути.

    Сбрасывали постоянные ссылки? Настройки -> Постоянные ссылки -> Сохранить.

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

    С wp-rocket не работал, поэтому ничего подсказать по нему, увы, не смогу.

    Я подозреваю что он не работает т.к. URL не зарегистрирован в WP.
    Есть надежда что если удастся пропустить параметр через add_rewrite_rule он подхватит эту страницу.

    Весь вопрос в том как подхватить.

    ADDED
    Хотя вроде есть решения для wp-rocket — http://prntscr.com/g1sjls
    Но опять таки, работа через параметр выглядит как-то инородно…
    Например в карту сайта эта страница не попадет…
    Хотя она наверное и через add_rewrite_rule не попадет?

    • Ответ изменён 7 лет, 1 месяц назад пользователем noindex.
    Модератор Юрій

    (@yube)

    Мне так проще и «на скорость не влияет» вроде.

    Если сравнивать использование хука pre_get_posts и wp_query (в любой ипостаси) в шаблоне, то второй вариант по любому медленнее, потому что повторно делает выборку записей.

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