Intereting Posts
Могу ли я использовать WP для создания многосайтового импорта сообщений из 3 старых веб-сайтов WP? Как получить пользовательские данные из пользовательской таблицы в базе данных wordpress по ID пользователя? Определите, является ли идентификатор страницей или отправляется и запрашивает идентификатор Отключить последнее и просмотреть все (TABS) в nav-menu.php Нестандартная публикация типа почтового типа Проверка роли пользователя в пользовательском плагине Инструкции / Правила Внутри текстовой области Нужно ли обновляться до php7? Могу ли я зацепиться за другой крюк? Отображение информации из настраиваемого поля в настраиваемом типе сообщений Где добавить новое имя таблицы в wpdb? Необходимо добавить / удалить группу параметров и отобразить их как строки get_comment_link без базы разбиения на страницы в возвращаемом URL? Null / undefined return в запросе WordPress AJAX Как получить постоянную ссылку с базой категорий, работающей с подкатегориями

Проблема wordpress add_action () в вызове ajax

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

поэтому я пытаюсь использовать Ajax Call в WordPress и получаю проблему «Неустранимая ошибка: вызов неопределенной функции add_action () в C: \ xampp \ htdocs \ brandcart \ wp-content \ themes \ XXten \ functions.php в строке 51"

WordPress: 4.1.1 Тема: Двадцать десять

Вот мой код:

в Двадцать десять page.php

<input type="hidden" name="GreetingAll" id="GreetingAll" value="Hello Everyone!" /> <input type="submit" id="PleasePushMe" /> <div id="test-div1"> </div> 

в Двадцать десять functions.php

 add_action( 'init', 'add_myjavascript' ); function add_myjavascript(){ wp_enqueue_script( 'ajax-implementation.js', get_bloginfo('template_directory') . '/script/ajax-implementation.js', array( 'jquery' ) ); } // creating Ajax call for WordPress add_action( 'wp_ajax_nopriv_MyAjaxFunction', 'MyAjaxFunction22' ); add_action( 'wp_ajax_MyAjaxFunction', 'MyAjaxFunction22' ); function MyAjaxFunction22(){ //get the data from ajax() call $GreetingAll = $_POST['GreetingAll ']; $results = "<h2>".$GreetingAll."</h2>"; // Return the String die($results); } 

и мой ajax-implementation.js (который находится в каталоге сценария в теме)

 jQuery(document).ready(function() { var GreetingAll = jQuery("#GreetingAll").val(); jQuery("#PleasePushMe").click(function(){ jQuery.ajax({ type: 'POST', url: 'http://localhost/brandcart/wp-content/themes/twentyten/functions.php', data: { action: 'MyAjaxFunction', GreetingAll: GreetingAll, }, success: function(data, textStatus, XMLHttpRequest){ jQuery("#test-div1").html(''); jQuery("#test-div1").append(data); }, error: function(MLHttpRequest, textStatus, errorThrown){ alert(errorThrown); } }); }); }); 

Solutions Collecting From Web of "Проблема wordpress add_action () в вызове ajax"

Вы отправляете запрос AJAX в неправильное место. Конечно, вызов functions.php напрямую вызовет неопределенные функциональные ошибки, потому что API WordPress не загружается functions.php (это наоборот). Автомобиль не продвигает топливо вперед, топливо заставляет машину двигаться вперед, просто попадая в автомобиль, волшебство не покажет топливо, так же как и загрузка functions.php Php не будет волшебным образом создавать все API WordPress.

Кроме того, использование файлов в вашей теме в качестве AJAX и конечных точек представления формы – огромная дыра в безопасности. Даже если вы меняете тему, эти конечные точки все еще существуют и могут использоваться.

Поэтому вместо этого используйте официальную конечную точку ajax:

http://codex.wordpress.org/AJAX_in_Plugins

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

 // in JavaScript, object properties are accessed as ajax_object.ajax_url, ajax_object.we_value wp_localize_script( 'ajax-script', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) ); 

Затем в вашем javascript конечная точка будет:

 ajax_object.ajax_url 

Заключительная записка

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