WordPress как на ладони
wordpress jino

Не работают базовые функции WordPress при Ajax запросе. Как исправить?

Здравствуйте !

При обращении к пользовательскому шаблону через ajax получаю такую ошибку:

Fatal error: Call to undefined function query_posts() in /home/virtwww/w_egoist1-ru_c12ff7c5/http/wp-content/themes/egoist2/sitemap-ajax.php on line 11

Т.е. в этом файле не работают базовые функции WP ! Как это исправить ?
Вот скрин кода - http://clip2net.com/s/j79DYR

-1
Гость 3 года назад
  • 0
    Kama4464

    Вам нужно подключить среду вордпресс так:

    require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );

    Сделать это нужно в файле обрботчике Ajax запроса: sitemap-ajax.php

    Явер 4 месяца назад

    В подключаемом через ajax php файле запускаю планировщик события. Почему-то не работает. Воспользовался предложенным вариантом. Та же история sad
    В чем может быть причина?

    Kama 4 месяца назад

    Как именно запускаешь? Событие наступило-то? Ну и там еще несколько причин может быть, планировщик - дело тонкое...

    Комментировать
  • 0
    WP_Panda157 cайт: wp-panda.com

    Более правильный вариант, использовать для Ajax встроенное в движок api, а делать отдельный файл и подгружать туда вордпресс для работы с аяксом совершенно не кошерно.

    Kama 2.10 года назад

    А можно узнать, почему не кошерно? У меня на этом сайте например, свой файл обработчик и как мне кажется он удобнее: кроме прочих мелочей, я могу указать константу SHORTINIT, могу указать, чтобы вообще не подгружать WP, когда можно. А оригинальный файл этого не может... Он скорее предназначен для использования в админ-панели, для разработки плагинов, а для тем, как мне кажется, нормально создать свой файл обработчик... ИМХО

    WP_Panda 2.10 года назад
    1. Аксиома - пользовать апи, всегда кошернее чем не пользовать.
    2. Встроенный ajax позволяет без лишних телодвижений добавить всякое, например check_ajax_referer сильно полезная
    3. Сильно прощще получать асинхронный ответ.
    4. А какой смысл от SHORTINIT во встроенном обработчике, туда и так уже все подключено, и ничего еще раз подключать не надо.

    На самом деле нюансов много.

    Комментировать
  • 0
    WP_Panda157 cайт: wp-panda.com

    отредактировать не могу, поэтому дополню, у вас нормальная статья по встроенному Ajax, но для первого знакомства, человеку не сильно смыслящему будет тяжеловато.
    http://www.benmarshall.me/wordpress-ajax-frontend-backend/#ajax-frontend - вот тут оно попрощще, разобравшись с этим уже можно ваше читать. Я обычно в таком порядке людям ссылки на форуме кидаю для изучения вопроса.

    ну и P.S. вот такой вот баг
    http://joxi.ru/QeAOlbbZsgPwro

    Kama 2.10 года назад

    Извините не понятно в чем баг? Не активируется? Я активировал сейчас в админке...

    Почему у вас не получилось отредактировать ответ - кнопка "редактировать" не работает? Сейчас попробовал от простого пользователя оставить ответ и отредактировать его - все работает.

    И еще ответте почему комментарий не оставили, а очередной ответ написали?

    WP_Panda 2.10 года назад
    1. по кругу гоняет, и не активируется
    2. клик по редактировать дает такую ошибку http://joxi.ru/0KAgkNNbIqQaAl
    3. Не разобрался как комментить, не наитивно), привык к такому рассположению http://joxi.ru/1bmok55DIbDYmy
    WP_Panda 2.10 года назад

    p.s. по второму

    click(function(event){event.preventDefault(); - надо так

    Kama 2.10 года назад

    Спасибо за комменты и багрепорты! Это в firefox event нужно указывать отдельно, не знал, уже поправил. Я chrome пользуюсь, в лисе не тестировал еще, а зря... Попробуйте отредактировать ваши ответы теперь, пожалуйста, сделайте один из двух.

    Насчет кнопки комментировать, перенесу вниз, обязательно!

    И, еще раз спасибо!

    WP_Panda 2.10 года назад

    Пожалуйста,
    на самом деле если вы обращаетесь к чему то это надо указать)
    http://api.jquery.com/category/events/event-object/ - конкретно про event

    ну и судя по всему, вы не пользуетесь IDE, там такие ошибки исключены.

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