Поддержка Проблемы и решения Календарь get_calendar()

  • Решено onedude

    (@onedude)


    Здравствуйте.
    Обычный wp календарь, выводимый get_calendar().
    Как эту заразу заставить показывать только события определенной категории? Или хотя бы исключить какую-нибудь категорию из отображения?
    Ничего не помогает.

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Ничего не помогает.

    Если в этой функции не предусмотрены фильтры, то никто ведь не мешает переписать её и использовать свой вариант 😛

    Так там не в функции дело, а в чем то другом. Понять не могу, прошу помощи.

    а в чем то другом.

    А вы можете показать это «что-то другое«?
    И что вы пробовали (а самое главное — «как пробовали»), и что конкретно не получается?

    Я просто ещё один юзер, который не разбирается во внутреннем устройстве wp.
    Пробовал всё что нагуглил. Догадываюсь что дело в archive.php. Однако, не могу понять как всё связано, вот и решил спросить решения у сообщества, может кто уже сталкивался. Всё-таки исключить категорию из стандартного календаря, должно быть такую тему поднимали, нужно же многим наверное (поиском не нашел).

    Похоже, что совсем никому не надо 🙂

    Догадываюсь что дело в archive.php

    Это обычный шаблон, «отрабатывающий» для вывода архивов, многочисленная дублирующая система (как на Боингах) вывода.

    Ответ я вам написал:
    Если в этой функции не предусмотрены фильтры, то никто ведь не мешает переписать её и использовать свой вариант
    Попытаюсь раскрыть глубокий смысл 🙂

    Поведение движка (форма и содержимое результата) можно изменить с помощью фильтров (хуков), есть такая возможность http://codex.wordpress.org/Plugin_API и
    Мой мини-обзор работы фильтра

    Если фильтр (хук) отсутствует, ну, забыли его вписать разработчики, то можно поступить, как поступает любой школьник в школе, берёте функцию, переписываете её под своим именем, например get_my_calendar(), модифицируете в ней нужное вам место и вызываете там, где оно необходимо.

    Как найти фильтр? Смотреть исходный код этой функции https://core.trac.wordpress.org/browser/tags/4.1.1/src/wp-includes/general-template.php#L1529.

    Бинго! 😀

    Я вам конечно благодарен за такой развернутый ответ.
    Однако.
    Неужели действительно никому не было нужно ограничить календарь?
    Для меня, как для простого юзера, нет решения такой задачи? Я бы даже понял что делать, приведи вы конкретные примеры в php.
    «Найди проблему и реши её» вот что вы только что написали, это не очень помогает, учитывая то, что я обратился к сообществу, именно не найдя решение.

    учитывая то, что я обратился к сообществу

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

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

    Я просто ещё один юзер, который не разбирается во внутреннем устройстве wp

    Тогда ищите плагины по ключевому слову calendar или wp calendar Я встречал очень продвинутые календари с кучей настроек, в том числе с теми, которые нужны Вам

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Если в этой функции не предусмотрены фильтры

    Предусмотрены. Пока только для итогового вывода, а не для SQL-запросов, но этого должно хватить.

    Я бы даже понял что делать, приведи вы конкретные примеры в php

    Можно посмотреть в сторону примера, найденного на англоязычном форуме. Там функция get_calendar_custom() приведена отдельно, но её можно привязать с помощью фильтра к get_calendar().

    Можно также поискать плагины, как советует Konstantin.

    Пока только для итогового вывода, а не для SQL-запросов, но этого должно хватить.

    Они и для SQL-запросов есть. Только проблема в том, что в WP нет понятия контекст хука. Есть, конечно, попытка обложиться булевыми флагами, но оно не сильно как-то помогает 😀
    Поэтому только сравнивать по некой уникальной сигнатуре этот запрос и изменять на свой лад. Я говорю о фильтре query.

    Проще использовать тот вариант, на котором я настоятельно настаиваю — переписать на свой лад генерацию календаря 🙂

    Если кто ищет сабж — плагин Calendar Category — добавляет простой календарь по отдельной категории, оформление берёт от родного get_calendar(), то что надо.
    Всем спасибо за ответы, узнал много интересного.

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Тема «Календарь get_calendar()» закрыта для новых ответов.