Если вы говорите об ответе, который я разместил здесь, то
просто загрузите файл в iframe, чтобы получить «Ajax like».
Теперь, если у вас уже есть форма, которая обрабатывает отправку сообщения, вы можете просто добавить поле ввода файла загрузки где-нибудь в вашей форме:
<form ...
...
<input type="file" name="thumbnail" id="thumbnail">
...
...
</form>
убедитесь, что ваша форма имеет enctype="multipart/form-data"
атрибут.
затем в вашем скрипте обработки формы после создания сообщения (при условии, что вы используете wp_insert_post();
) держите идентификатор сообщения в новой переменной:
$new_post = wp_insert_post($post_array);
и после этого добавьте:
if (!function_exists('wp_generate_attachment_metadata')){
require_once(ABSPATH . "wp-admin" . '/includes/image.php');
require_once(ABSPATH . "wp-admin" . '/includes/file.php');
require_once(ABSPATH . "wp-admin" . '/includes/media.php');
}
if ($_FILES) {
foreach ($_FILES as $file => $array) {
if ($_FILES[$file]['error'] !== UPLOAD_ERR_OK) {
return "upload error : " . $_FILES[$file]['error'];
}
$attach_id = media_handle_upload( $file, $new_post );
}
}
if ($attach_id > 0){
//and if you want to set that image as Post then use:
update_post_meta($new_post,'_thumbnail_id',$attach_id);
}
и ваше изображение будет загружено и сохранено как миниатюра поста.
$pid = wp_insert_post($new_post);
HTML-разметка:
Загрузка изображения:
источник