Задать вопрос
Hy_ok
@Hy_ok

Как передать данные с формы с помощью ajax php скрипту в wordpress?

в общем, есть форма, нужно с этой формы отправить данные php скрипту что бы тот отправил их на email, написал ajax запрос, но php скрипт не принимает почему то эти данные, файл со скриптом положил рядом с js в котором запрос находится, всеравно не работает(
  • Вопрос задан
  • 386 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
wppanda5
@wppanda5 Куратор тега WordPress
WordPress Mедведь
Ajax на морде сайта работает так, как собрать данные с формы, и отправить их почтой думаю сообразите, оно ничем не отличается от обычной отправки

PHP подключение скрипта с запуском AJAX и обработчик
<?php
#Подключение JS
    function my_enqueue_js() {
        #Скрипт с обработчиком код скрипта ниже
        wp_enqueue_script( 'my-ajax', get_template_directory_uri() . '/assets/js/my-ajax.js', array('jquery'), '1.0.0', true );
        #Отпрака переменных в скрипт
        wp_localize_script( 'my-ajax', 'MyAjax', array(
            'ajax_url' => admin_url( 'admin-ajax.php' ),
            'security' => wp_create_nonce( 'my-security-string' )
        ));
    }

    add_action( 'wp_enqueue_scripts', 'my_enqueue_js' );

    #Обработчик
    function my_action_callback() {
        check_ajax_referer( 'my-security-string', 'security' );
        $int = intval( $_POST['int'] );
        $int += 10;
        echo $int;
        wp_die();
    }

    #Добавление обработчика
    #  вешается на wp_ajax_{имя_экшена}
    # имя экшена должно совпадать с тем, которое задано  в js
    add_action( 'wp_ajax_my_action', 'my_action_callback' );
    #не забываем про nopriv для неавторизованных юзерей
    add_action( 'wp_ajax_nopriv_my_action', 'my_action_callback' );


Скрипт my-ajax.js в данном примере должен лежать по адресу
КОРЕНЬ_ТЕМЫ/assets/js/my-ajax.js
jQuery(document).ready(function($) {

  var $data = {
    action: 'my_action',
    security : MyAjax.security,
    int: 1234
  };

  $.post(MyAjax.ajax_url, $data, function($response) {
    alert('1234 + 10  =  ' + $response);
  });
  
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы