Как сохранить данные с формы в базу данных используя ajax/jquery?
Оказываться в WordPress очень неудобно использовать отдельные от него php-скрипты (как мой mail.php). Не работала переменная ABSPATH.
Я создал функцию send_form() в function.php (лежит в папке с темой) и добавил в неё весь код из моего mail.php. 
Перед всякими require get_template_directory()............. написал:function send_form(){
    //весь код из mail.php тут
}
add_action('wp_ajax_send_form', 'send_form');
add_action('wp_ajax_nopriv_send_form', 'send_form');
Так переменная ABSPATH корректно заработала.
Ну и в аяксе url заменил на/wp-admin/admin-ajax.php?action=send_form
И все заработало! ))
добавляем в php скриптwp_enqueue_script( 'bundle', plugins_url( '/bundle.js', __FILE__ ), array('jquery'), '1.11', true );
wp_localize_script( 'bundle', 'MyAjax', array(
    'ajaxurl' => admin_url('admin-ajax.php'),
    'nonce' => wp_create_nonce('myajax-nonce')
) );
это код функции с одного моего проекта, но смысл тот же - из jQuere.ajax посылаем переменные и в базу данныхadd_action( 'wp_ajax_cr_new_patient', 'cr_new_patient' );

function cr_new_patient() {
    $nonce = $_POST['nonce'];
    if(wp_verify_nonce( $nonce, 'myajax-nonce' )){
        $id = sanitize_text_field($current_user->user_login);
        $ur = sanitize_text_field($_POST["patient_ur"]);
        $dob = sanitize_text_field($_POST["patient_dob"]);
        $gender = sanitize_text_field($_POST["patient_gender"]);
        $ident = sanitize_text_field($_POST["patient_ident"]);
        $other = sanitize_text_field($_POST["patient_other"]);
        $loc = sanitize_text_field($_POST["patient_loc"]);

        $query="INSERT INTO patient (
        'ur', 'dob', 'gender', 'ident', 'other', 'loc'
        ) VALUES (
        '$ur', '$dob', '$gender', '$ident', '$other', '$loc',
        )";

        $mysqli = new mysqli("xxx","xxx","xxx","xxx");
        
        /* check connection */
        if (mysqli_connect_errno()) {
            printf("Connect failed: %s\n", mysqli_connect_error());
            exit();
        }
сам js такойhandleSubmit(data) {

        jQuery.post(
            MyAjax.ajaxurl,
            {
                'action': 'cr_new_patient',

                'patient_ur': data.patient_ur,
                'patient_dob': data.patient_dob,
                'patient_gender': data.patient_gender,
                'patient_ident': data.patient_ident,
                'patient_other': data.patient_other,
                'patient_loc': data.patient_loc,

                'nonce' : MyAjax.nonce
            },
            function(response){
                alert('The server responded: ' + response);
            }
        );
    }