Каков наилучший способ размещения входных данных и вставки их в базу данных с ajax в WordPress? - PullRequest
0 голосов
/ 21 марта 2020

Я разработал контактную форму с чистыми PHP и HTML. Я хочу вставить входные значения в базу данных с AJAX. Вот мой Javascript / jQuery код:

var email = jQuery("#email").val();

var data = {
    'email': email
}            

jQuery.ajax({
    type: "POST",
    url: "http://mywebsitedomain.com/wp-content/themes/mytheme/contactform.php",
    dataType: "json",
    data: data,
    success : function(data) {
      // do something
    }
});

И моя контактная форма. php:

$date = date('Y-m-d H:i:s');
global $wpdb;
$wpdb->insert('myTableName', array(
    'email' => $_POST["email"],
    'date' => $date,
));

Мой код работает хорошо. Мой вопрос: как правильно это сделать? Потому что я думаю, что не стоит создавать файл. php внутри темы WordPress и использовать его только для вставки данных в базу данных. Я думаю, что у него есть проблемы с безопасностью, и пользователи могут видеть URL моего скрипта (http://mywebsitedomain.com/wp-content/themes/mytheme/contactform.php), который использовался в моем файле javascript для использования ajax.

Есть ли у вас лучшие способы сделать это?

1 Ответ

0 голосов
/ 21 марта 2020

Создать функцию для вставки данных, а также поставить скрипт в очередь для вызова ajax и передать его в URL. Пример, например:

function mytheme_admin_scripts() {
    wp_enqueue_script( 'ajax-script',  get_stylesheet_directory_uri().'/admin_script.js');
    wp_localize_script( 'ajax-script', 'my_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}
add_action( 'wp_enqueue_scripts','mytheme_admin_scripts' );

Поставьте в очередь ваш файл js, в который вы записали свой вызов ajax, и передайте my_ajax_object.ajx_url в ваш ajax URL.

jQuery.ajax({
        type : "POST",
        url :  my_ajax_object.ajax_url,
        data : data,
        dataType: "json",
        cache: false,
        success : function(data) {
              // do something
        }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...