Intereting Posts
Удалить сообщение meta от AJAX Как добавить атрибуты в короткий код Простая перезапись URL-адреса WordPress WP_Query: сообщения по сообщениям из идентификаторов из массива? get_option в header.php не возвращает значение из customizer Встраивание Instagram с помощью короткого кода не работает, как рекламируется в официальных документах как объединить поиск по ключевым словам и таксономию в массиве WP_query $ args Worpresss В чем разница между плагинами Page Builder и программным обеспечением Theme Builder? Как захватить ленту страниц facebook? Odd map_meta_cap $ args on post edit – иногда целое число, иногда строка nowplaying.include.php не отображает результаты Мой пользовательский виджет не сохраняется на боковой панели Обновление базы данных WordPress с 2,6 до 3,2 Когда использовать пользовательские таблицы таблиц или add_option? Могу ли я создать настройку настраивателя, которая может обрабатывать короткий код плагина?

Сообщение не будет загружаться через ajax

Я унаследовал сайт WP 3.2.1, который использует prettyPhoto для загрузки контента через ajax. Это работало до того, как я включил постоянные ссылки на сайт. Установлен пользовательский плагин пользовательского типа ввода. Я могу перейти к своему пользовательскому типу сообщений в mysite.com/story/name-of-story, но загрузка через ajax приводит к 404.

Ссылки, которые запускают код $ .get в prettyPhoto, выглядят следующим образом:

<a href="<?php echo get_permalink(); ?>&ajax=true&count=<?php echo $count ?>" rel="story[ajax]"><?php echo wp_get_attachment_image($attachment->ID, array(75, 75));?></a> 

Если я изменил параметры постоянной ссылки на «по умолчанию». содержимое сообщения загружается в всплывающее окно. Hrefs, вызываемый через XHR, когда он работает, выглядит так:

http://mysite.com/?story=name-of-story&ajax=true&count=37

Я попытался удалить все параметры запроса из URL-адресов постоянной ссылки, и это не решило проблему. Может ли кто-нибудь проливать свет на то, что может происходить здесь?

Solutions Collecting From Web of "Сообщение не будет загружаться через ajax"

Все запросы ajax должны направляться через удобный файл /wp-admin/admin-ajax.php .

Он работает с большой системой крючков WP. Таким образом, вы отправляете «действие» с вашим запросом и используете это как часть действия, в которое вы используете свою функцию.

Итак, предположим, что ваш вызов ajax выглядит так (с jQuery)

 jQuery('a.ajax').click(function(e){ data = { 'action': 'wpse31321_action', 'story': 1 // IDs are easier to deal with... } jQuery.get( 'http://www.yoursite.com/wp-admin/admin-ajax.php', data, function(resp){ // do stuff with the response. } ); e.preventDefault(); }); 

Затем в файле functions.php или плагине вам нужно подключиться к wp_ajax_wpse31321_action и wp_ajax_nopriv_wpse31321_action . Это та часть, которая выполняет эту работу: у вас есть доступ к полной WP api внутри вашей подключенной функции. Получать сообщения, что угодно.

wp_ajax_[some_action] для зарегистрированных пользователей. wp_ajax_nopriv_[some_action] для всех остальных. [some_action] – это, конечно же, действие, которое вы отправляете вместе с вашим запросом. wpse31321_action в нашем примере.

 <?php add_action( 'wp_ajax_wpse31321_action', 'wpse31321_ajax' ); add_action( 'wp_ajax_nopriv_wpse31321_action', 'wpse31321_ajax' ); function wpse31321_ajax() { // you have access to $_REQUEST, $_POST and $_GET here... if( isset ( $_REQUEST['story'] ) ) { $story = get_post( (int) $_REQUEST['story'] ); if( ! $story ) die( '-1' ); echo $story->post_content; die(); // Always kill the script after echoing out what you need. } else { die( '-1' ); } } 

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

Дальнейшее чтение:

http://wpajax.com/

http://codex.wordpress.org/AJAX_in_Plugins

http://codex.wordpress.org/AJAX