Я новичок в мире WP. После прочтения множества сообщений я все еще не могу заставить простую загрузку Ajax-файла работать на WordPress.
Я пытаюсь сохранить в базе данных - имя, адрес электронной почты и резюме. Если я удалю поле входного файла, имя и адрес электронной почты будут правильно сохранены в базе данных.
В настоящее время моя форма выглядит следующим образом
<form method="post" id="applicantform" enctype="multipart/form-data">
<input type="text" name="name" placeholder="Name" />
<?php wp_nonce_field( 'my_nonce' ); ?>
<input type="email" name="email" placeholder="Email" />
<div class="upload">
<input type="file" id="upload-resume" name="upload-resume" />
</div>
<input type="submit" name="submit_form" id="submit_form" value="Send" />
</form>
Часть JS
jQuery(document).ready(function($){
$('#submit_form').click(function(e){
var applyformData = document.getElementById("applicantform");
e.preventDefault();
//ajax call
$.ajax({
type: 'POST',
url: myajax.ajaxurl, // ajax url you assigned!
contentType: false,
cache: false,
processData:false,
dataType: 'json',
data: {
action: 'applyform',
formdata: applyformData,
},
// Displaying succes message
success: function( data ){
},
// Displaying error message
error: function( request ){
console.log(request);
}
});
});
});
А это функция в моем function.php
add_action('wp_enqueue_scripts', 'my_ajax_scripts');
function my_ajax_scripts(){
wp_enqueue_script( 'myscript', get_template_directory_uri().'/assets/js/formSubmit.js', array('jquery'), '1.0', true );
wp_localize_script( 'myscript', 'myajax', array( 'ajaxurl' => admin_url( '/admin-ajax.php' ) ) );
}
function applyform(){
$valid_extensions = array('pdf' , 'doc' , 'ppt'); // valid extensions
$path = wp_basename( $uploads['baseurl'] ); // upload directory
if(!empty($_POST['name']) || !empty($_POST['email']) || $_FILES['upload-resume'])
{
$resume = $_FILES['upload-resume']['name'];
$tmp = $_FILES['upload-resume']['tmp_name'];
$ext = strtolower(pathinfo($resume, PATHINFO_EXTENSION));
$final_resume = rand(1000,1000000).$resume;
if(in_array($ext, $valid_extensions))
{
$path = $path.strtolower($final_resume);
if(move_uploaded_file($tmp,$path))
{
$table = 'UPC_jobs';
$data = array(
'customer_name' => $formdata_array['name'],
'customer_email' => $formdata_array['email'],
'customer_resume' => $path
);
$format = array(
'%s',
'%s',
'%s'
);
$success=$wpdb->insert( $table, $data, $format );
}
}
else {
echo 'invalid';
}
}
}
Текущая ошибка Status Code: 400
для admin-ajax.php.
Может кто-нибудь помочь немного