используя запрос 'jeditable' с wordpress, чтобы обновить таблицу - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть база данных (календарь), где авторизованные пользователи могут обновлять ячейки таблицы, используя jeditable.Я конвертирую календарь в плагин WordPress для работы на WordPress сайте.Я изучил несколько ответов, описывающих, как использовать jeditable с WordPress ajax, но я не могу заставить его работать в моем плагине.Плагин jeditable работает на моей странице, но я не могу заставить плагин выполнить фактическое обновление таблицы wpdb.

в моем php-файле функций:

add_action( 'wp_ajax_update_record', 'update_record' );
function update_record() {
    global $wpdb;
    $field_id = $_POST['field_id'];
    $pieces = explode('-', $field_id);
    $field=$pieces[0];
    $id=$pieces[1];
    $newInfo = $_POST['newInfo'];
    $table_name = "myCalendar";
    $qry_result = $wpdb->update(
        $table_name,
        array( $field => $newInfo, 'id' => $id ),
        array( '%s', '%d' )
    );
    echo stripslashes($_POST['newInfo']);
    wp_die();
}

add_action( 'admin_enqueue_scripts', 'my_cal_scripts' );
add_action( 'wp_enqueue_scripts', 'my_cal_scripts' ); 

function my_cal_scripts() {

    wp_register_script(
        'ajax-script',
        plugin_dir_url( __FILE__ ) . 'js/my-cal-script.js',
        array( 'jquery-jeditable'),
        NULL,
        TRUE
    );

    $script_settings = array(
        'ajax_url' => admin_url( 'admin-ajax.php' ),
        'table_name' => 'myCalendar',
        'field_id' => $_POST['field_id'],
        'pieces' => explode('-', $field_id),
        'field' => $pieces[0],
        'id' => $pieces[1],
        'newInfo' => $_POST['newInfo'],
        'action'  => 'update_record'
    );

    wp_localize_script(
        'ajax-script',
        'ajax_object',
        $script_settings
     );

    wp_enqueue_script( 'jquery-jeditable' );
    wp_enqueue_script( 'ajax-script' );
}

и вот мой скрипт jQuery:

( function( $ ) {
    'use strict';
    $( document ).ready( function() {

        var data = {
            'action': ajax_object.update_record,
            'id' : ajax_object.field_id,
            'name' : ajax_object.newInfo
        };

        $('.edit').editable(function(value, settings) {

         $.post(
            ajax_object.ajax_url,
            {
                submitdata : data,
            }, function(response)
               {
           });
              return(value);
         },

         {
            indicator : 'Saving...',
            placeholder : '',
            tooltip   : 'Click to edit, press Enter to save...',
            cancel : 'Cancel',
            submit : 'Save',
            cancelcssclass : 'btn btn-danger',
            submitcssclass : 'btn btn-success',
            maxlength : 200
         });
    } );

} )( jQuery );

Это выглядит так, как будто все работает, КРОМЕ реальной таблицы 'myCalendar'не обновляется.

Чего мне не хватает?

1 Ответ

0 голосов
/ 12 февраля 2019

НАКОНЕЦ!разобрался с проблемой.Моя функция 'update_record' для ОБНОВЛЕНИЯ базы данных содержит ошибку - она ​​должна быть:

$wpdb->update(
        $table_name,
        array( $field => $newInfo ),
        array( 'id' => $id ),
        array( '%s' )
    );

Считать, что проблема решена.

...