Intereting Posts
Преобразование данных пользовательских сообщений в массив Javascript для автозаполнения Проверьте, подключен ли пользователь и получает ли он ID без полной загрузки wordpress Переименуйте кнопку вставки в окне загрузки мультимедиа Пользовательский запрос WordPress по заголовку архива Хорошая методология для модернизации крупных / сложных сайтов? W3 Total Cache, облачные файлы RackSpace и принудительные загрузки Проверьте, существуют ли значения DB Как заставить child style.css загружать последний, а не второй за родительский style.css? Основной сайт single-property.php design, как сайт многоузлового Как использовать 2 измененных шаблона подачи? Удалить метапочту WordPress.org Вход в систему WordPress от электронной почты Вход пользователя без имени пользователя, только пароль Список дочерних страниц, исключая текущую страницу Ссылка (не в сообщении) для загрузки определенного файла PDF

Как загрузить плагин при вызове Ajax?

Я задал этот вопрос: как использовать короткие коды на боковой панели виджета при выполнении вызова ajax? , без ответов. Теперь я хочу задать более конкретный вопрос.

Проблема заключается в том, что этот код не обрабатывается плагином. Как если бы я заменил "audioFile.ogg" например, "audioFile.ogg" он работает отлично.

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

Любое предложение?

Это код в functions.php :

 add_action( 'init', function() { ps_register_shortcode_ajax( 'ps_get_slider', '8' ); } ); function ps_register_shortcode_ajax( $callable, $action ) { if(isset($_POST['href'])) { $pageId = preg_match( '/^http:\/\/.+\/\?page_id=\d+$/', $_POST['href'] ) ? substr( strrchr( $_POST['href'], '=' ), 1 ) : '8' ; if ( empty( $pageId ) || $pageId != $action ) return; call_user_func( $callable ); } } function ps_get_slider() { //require_once('../wp-load.php'); Nothing changes apply_filters('ps_register_shortcode_ajax', 'slider_widget_init'); if ( dynamic_sidebar('Slider') ) : else : endif; //echo do_shortcode( '[promoslider post_type="news" height="300px" width="70%" numberposts="5" start_on="first" display_title="fancy" display_excerpt="excerpt" pause_on_hover="pause"]' ); get_template_part( 'home', 'ajax' ); die(); } 

Боковая панель слайдера загружается только на страницах home и home-ajax (id = 8). Он работает прямо на домашней странице, но не на домашней странице ajax.

Вы не используете ajax правильно. Почему вы добавляете функцию обратного вызова ajax в действие init? Вам необходимо прочитать http://codex.wordpress.org/AJAX_in_Plugins

Прикрепите свою функцию обратного вызова ajax к wp_ajax_your_defined_action следующим образом:

add_action( 'wp_ajax_your_defined_action', 'your_callbck_function' );

Для этого вам нужно использовать wp-admin / admin-ajax.php в качестве вашего URL-адреса ajax, и вам нужно опубликовать your_defined_action для действий.

  $.ajax({ type: 'POST', url: ajaxurl, //This is defined only on admin side data: { action: 'your_defined_action', some_var: 'Some Var Content' }, success: function (response) { alert(response); } });