Intereting Posts
Почему медиа-браузер не использует уменьшенные изображения? Измените правило, что wp-login.php? Action = register оставлен в покое Есть ли список всех функций отображения для шаблонов? MS Access для управления базой данных WordPress Как заряжать доставку в WP электронной коммерции на основе варианта? Запрос WordPress SQL JOIN WordPress add_permastruct нежелательные совпадения Загружать пользовательский тип сообщения в другую установку WordPress Проблемы производительности WP_Query с meta_query Пользовательская таксономия пользователей с пользовательским интерфейсом Категории заказов WordPress по ID Что лучше: 301 Перенаправить в мой файл .htaccess или плагин, например Перенаправление? Пользовательский размер для изображения, загруженного в пользовательское поле в профиле пользователя? Yoast SEO взлом загрузки мультимедиа Использование javascript на моем сайте для создания вложенных вкладок

Пользовательский ретранслятор JSON

Я пытаюсь реализовать фид информации из типа персонализированного события Event в формате JSON, который будет использоваться в реализации FullCalendar, в значительной степени, как описано здесь . Единственное, что я хотел изменить, это создать реальный фид WordPress для генерации вывода JSON, чтобы избежать взлома wp-load.

Это код: https://gist.github.com/1600619

Мне удается получить допустимый результат, если я перейду к example.com?feed=json, но я думаю, что запрос вызывает предупреждение FullCalendar от его фактического разбора. Я надеялся, что наличие фида с правильным URL-адресом, например example.com/feed/json, исправит его, но это доставит мне всего лишь 404.

Solutions Collecting From Web of "Пользовательский ретранслятор JSON"

Запрос AJAX запрашивал даты, которые он должен отображать. При использовании Lazy fetching set, если вы переключитесь с просмотра на месяц или неделю или день, он не станет беспокоиться о том, чтобы сделать другой запрос, так как ему это не нужно. Это описано в полной документации .

Что касается использования этого метода, см. Этот вопрос о том, как правильно получить URL-адрес admin-ajax.php.

Затем вам необходимо правильно установить источник полнокадров, а затем определить действие ajax. Из моего модуля Event Organiser выведено следующее. Так что не стесняйтесь носа, чтобы получить детали (вы захотите использовать frontend.js в папке js и event-organiser-ajax.php в папке event-organiser-ajax.php ).

Источник события

 jQuery(".eo-fullcalendar").fullCalendar({ lazyFetching: 'true', events: function(start, end, callback) { jQuery.ajax({ url: MYAJAX.url+"?action=mycalendaraction", dataType: 'JSON', data: { start: jQuery.fullCalendar.formatDate(start, 'yyyy-MM-dd'), end:jQuery.fullCalendar.formatDate(end, 'yyyy-MM-dd') }, success: function(data) { callback(data); } }) } }); 

По умолчанию начальные и конечные даты являются отметками времени, но мой запрос требовал его в формате ГГГГ-ММ-ДД. MYAJAX.url – это URL-адрес admin-ajax.php, который вы задали, как объяснено в связанном вопросе, с помощью wp_localize_script .

Наконец, вам необходимо добавить соответствующие действия для обработки запроса:

  if ( isset( $_REQUEST['action'] ) AND 'mycalendaraction' === $_REQUEST['action'] ) { //For logged in users. do_action( "wp_ajax_{$_REQUEST['action']}" ); // For non-logged in users: do_action( "wp_ajax_nopriv_{$_REQUEST['action']}" ); } add_action( 'wp_ajax_mycalendaraction', 'get_my_events' ); add_action( 'wp_ajax_nopriv_mycalendaraction', 'get_my_events' ); function get_my_events() { //$_GET['start'] the start date //$_GET['end'] the end date //perform query //Let $events_array be the array of events with each event being an appropriate array (for instance with 'title','start','end','allDay' keys - see fullcalendar documentation). //Echo result and exit echo json_encode($event_sarray); exit; } 

В приведенном выше примере я предполагаю, что календарь предназначен как для зарегистрированных пользователей, так и для незарегистрированных пользователей (следовательно, оба действия). Вы также хотите выполнить некоторые проверки nonce (см. Связанный вопрос). Обратите внимание, что действие такое же, как установлено в URL-адресе ajax раздела «Источник события».

То, что должно быть включено в каждый массив событий, приведено в документации fullcalendar в разделе «Объект события». На стороне javascript ассоциативный массив (т. Е. Событие) получают как объект со значениями, заданными значениями в массиве: Ie event['key'] становится event.key

Отказ от ответственности: приведенный выше код был изменен, чтобы сделать все более четким и поэтому не был протестирован.