WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Корректность отображения add_action(‘loop_start’, ‘функция’)

Всем привет. Решил выводить в категориях в самом начале описание её, потом цикл, затем картинку, цитату и другие вещи. Написал такую функцию (утрировано):

function auto_insert () {}
add_action('loop_start', 'auto_insert');
add_action('loop_end', 'auto_insert');

Внутри, конечно, различные условия. Итак, когда в рубрике есть записи, то всё работает прекрасно. Но если в категории ещё нет записей, то цикл, как я понимаю, не срабатывает, и функция начинает выполнятся на виджете "Популярные записи".

Подскажите, может есть какой-то вариант на другой хук вешать функцию? У меня есть рабочий вариант, когда можно прописать в шаблоне функцию "жестко" и всё прекрасно, но тут ведь спортивный интерес smile Буду признателен за советы!

0
campusboy
8.9 лет назад 4752
  • 1
    stepan2278 www.weblancer.net/users/stepanko/?affili...

    функция начинает выполнятся на виджете "Популярные записи"

    Ставьте проверку: вот когда пользуешься pre_get_posts есть такое условие

    if ( $query->is_main_query() )

    Вы можете проверять через глобальную переменную $wp_query
    (если я правильно понял, что делает Ваш код)

    campusboy 8.9 лет назад

    Спасибо за ответ. Но у меня ничего не вышло. Как я понял, is_main_query какой увидела первым цикл, тот и считает главным. А для автоматизации процесса так не пойдет, так как темы разные. Попробовал тему classic, что идет в комплекте с WP - промах.

    Otshelnik-Fm 7.5 лет назад

    campusboy - вы нашли ответ? Встала аналогичная задача. Но если записей в произвольном типе записей еще нет - не срабатывает экшен loop_start

    campusboy 7.5 лет назад

    Увы, не нашёл sad

    Otshelnik-Fm 7.5 лет назад

    у меня родилась идея - создавать программно запись там "Привет мир". Так всегда будет loop_start отрабатывать.

    campusboy 7.5 лет назад

    Или шоркод, который возвращает пустоту smile Или типа того. Чтобы "Привет Мир" не появлялось нигде. Или оно итак не появляется?

    Otshelnik-Fm 7.5 лет назад

    т.к. эти типы записей (вернее в них таксономии == группы) создают авторы сайта (это функционал создания групп). т.к. они создают группу - то запись в ней первая "привет мир" думаю не повредит. Отредактируют или удалят ее. Или забьют - пусть как памятка висит.

    В итоге над группой выведется блок с аватаркой группы, описанием и панелью управления. Т.е. мы автоматизируем вывод над циклом нашей функции. И отдавая плагин многим пользователям - не надо будет им говорить "откройте archive.php вашей темы, на циклом впишите строчку - вызов функции"

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

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация