Intereting Posts
Добавление липкой функциональности в пользовательские архивы типа публикации Как удалить фильтр категорий из wordpress admin? $ wpdb не определяется в функции: Неустранимая ошибка: вызов функции-функции-члена () для не-объекта Как загрузить функции WP? Установка темы в нескольких доменах Как вызвать ошибку, когда не используется wp_reset_postdata () ;? Зачем использовать его, если цикл работает без него? Могу ли я фильтровать функцию, созданную темой или плагином? next_posts_link () всегда генерирует ссылку второй страницы в пользовательском типе сообщения Вызов пользовательских методов класса плагина из шаблона Не удалось войти на мой сайт WordPress. reauth = 1 цикл перенаправления. Есть какие нибудь идеи как это починить? Расширенные настраиваемые поля, помеченные полями из настраиваемого типа сообщений Добавить столбец «Пересмотренный текст» в Admin Сортировка для настраиваемого столбца в таблице сообщений администратора WordPress Как остановить процесс отправки комментария, если поле пусто? После установки бесплатной темы мой wordpress переходит в текстовый режим при доступе к удаленному

вставить запрос в пользовательскую таблицу с помощью ajax с плагином jQuery Jeditable

Я уже прочитал тонны сообщений, но не нашел решения …

Я пытаюсь реализовать Jeditable функциональность в плагине с помощью этого кода:

jQuery(document).ready(function() { jQuery('.edit').editable('http://localhost/www/wp-content/plugins/my_plugin/save.php' }); 

Если в save.php я просто что-то save.php , он будет возвращен в текстовое поле, которое я обновлял без проблем. Проблема в том, как вставить его в db … Если я использую это:

 if (isset($_POST['id'])) { global $wpdb; $query = "INSERT INTO table (col1, col2, col3) VALUES ('%d', '%s', '%d')"; $wpdb->query($wpdb->prepare($query, '10', $_post['value'], '0')); echo $_POST['value']; } 

Я получаю следующую ошибку:

«FATAL ERROR: ПРИЗЫВ К ВОПРОСУ ФУНКЦИИ ЧЛЕНА () НА НЕОБХОДИМОСТИ В […] ON LINE 6"

(строка 6 представляет $wpdb->query([...]); ).

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

Solutions Collecting From Web of "вставить запрос в пользовательскую таблицу с помощью ajax с плагином jQuery Jeditable"

Вы должны использовать WordPress AJAX-API для этих целей вместо пользовательских сценариев. Ваша проблема в том, что в вашем скрипте все объекты API WordPress не загружены.

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

Изменить из-за новой информации из комментариев:

Вы могли бы упомянуть, что «Jeditable» является плагином для jQuery, и для него есть документация.

Во всяком случае, документация (Раздел: «Ссылка параметра») плагина jQuery описывает способ, вы можете передать больше параметров вашему сценарию. Но прежде всего позвольте мне объяснить, как вставить в очередь ваши сценарии и как передать данные (например, nonce slug) на него:

 /** * enqueue jquery, jquery-jeditable and custom script * and pass some data to * * @wp-hook wp_enqueue_scripts * @return void */ function wpse_135219_enqueue_scripts() { wp_register_script( 'jquery-jeditable', plugin_dir_url( __FILE__ ) . 'js/jquery-jeditable.js', array( 'jquery' ), '1.7.1', TRUE ); wp_register_script( 'wpse-135219', plugin_dir_url( __FILE__ ) . 'js/wpse-135219.js', array( 'jquery-jeditable' ), '1.7.1', TRUE ); $script_settings = array( 'ajaxUrl' => home_url( '/wp-admin/admin-ajax.php' ), 'nonce' => wp_create_nonce( 'wpse_135219' ), 'action' => 'wpse_135219' ); wp_localize_script( 'wpse-135219', 'wpSE135219', $script_settings ); wp_enqueue_script( 'wpse-135219' ); } add_action( 'wp_enqueue_scripts', 'wpse_135219_enqueue_scripts' ); 

Эта функция находится в файле плагина с именем wpse-135221.php . Структура файлов плагинов выглядит так:

 - wpse-135219-plugin/ --- js/ ----- jquery-jeditable.js ----- wpse-135219.js --- wpse-135219.php 

С помощью wp_localize_script() вы инициализируете глобальный объект javascript с именем wpSE135219 где вы найдете свой nonce и даже URL ajax.

Ниже приведен пример использования Jeditable ( wpse-135219.js ):

 ( function( $ ) { 'use strict'; $( document ).ready( function() { var settings = wpSE135219, params = { wp_nonce : settings.nonce, action : settings.action }; $( '.edit' ).editable( settings.ajaxURL, { submitdata : params } ); } ); } )( jQuery ); 

Теперь у вас есть следующий параметр запроса:

 action "wpse_135219" id "your_html_id" value "your_value" wp_nonce "3bd42174ec" // a wp nonce string 

Как показано в вышеупомянутом ответе выше, действие, которое вы должны приложить к вашему обработчику ajax, должно быть admin_ajax_wpse_135219 :

 add_action( 'admin_ajax_your_form_action', 'wpse_135219_ajax_handler' ); function wpse_135219_ajax_handler() { // your query stuff goes here // don't forget to check $_POST[ 'wp_nonce' ] } 

Чтобы проверить запрос с использованием nonce, используйте wp_verify_nonce()