У меня есть форма с вводом типа файла. Я хочу иметь возможность захватывать изображение, прикрепленное к этому входу, в JavaScript / jQuery и передавать его моей функции PHP для последующей загрузки на мой носитель WordPress. Использование функции WordPress media_handle_upload()
, которая согласно docs требует индекса массива $_FILES
, который файл был отправлен в качестве первого параметра.
Вот моя попытка:
HTML
<form id="company-logo-form" method="post" action="#" enctype="multipart/form-data">
<input type="file" name="company_logo" multiple="false" id="logo-test"/>
<input class="btn bg green" name="upload_company_logo" type="submit" value="Upload Image" />
</form>
Javascript
$('#company-logo-form').on('submit', function(e) {
e.preventDefault();
let logo = $('#logo-test').prop('files');
$.ajax({
url: ajax_url,
type: 'POST',
// dataType: 'html',
data: {
company_logo: logo,
action: 'uploadCompanyLogo'
},
error: function(res) {
console.log(res);
},
success: function(res) {
console.log(res);
}
});
});
PHP
add_action('wp_ajax_uploadCompanyLogo', 'update_company_logo');
function update_company_logo() {
$logo = $_POST['company_logo'];
$attachment_id = media_handle_upload($logo, 0);
echo $attachment_id;
}
Используя этот код, когда я отправляю форму В консоли появляется следующая ошибка jQuery:
Uncaught TypeError: Illegal invocation