нужно добавить миниатюру прикрепления из моей формы

мне нужно добавить [attach thumbnail] в эту форму

functions.php Код:

if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == "new_post") { // Do some minor form validation to make sure there is content $title = $_POST['title']; $ordertype = $_POST['ordertype']; $price = $_POST['price']; $ordertime = $_POST['ordertime']; // Add the content of the form to $post as an array $new_post = array( 'post_title' => $title, 'post_content' => $description, 'post_category' => array($_POST['category']), 'post_status' => 'publish', 'post_type' => 'post' ); //save the new post $pid = wp_insert_post($new_post); add_post_meta($pid, 'ordertype', $ordertype, true); add_post_meta($pid, 'price', $price, true); add_post_meta($pid, 'ordertime', $ordertime, true); wp_redirect('/'); exit; //insert taxonomies } 

source: Форма для добавления сообщений в пользовательский тип сообщения

Solutions Collecting From Web of "нужно добавить миниатюру прикрепления из моей формы"

На самом деле это довольно просто. Вот ссылка для ссылочного кода функции set_thumbnail. И вот ответ на загрузку файла .

Прежде всего, вы должны прикрепить файл к сообщению:

 function attach_uploads($uploads,$post_id = 0){ $files = rearrange($uploads); if($files[0]['name']==''){ return false; } foreach($files as $file){ $upload_file = wp_handle_upload( $file, array('test_form' => false) ); $attachment = array( 'post_mime_type' => $upload_file['type'], 'post_title' => preg_replace('/\.[^.]+$/', '', basename($upload_file['file'])), 'post_content' => '', 'post_status' => 'inherit' ); $attach_id = wp_insert_attachment( $attachment, $upload_file['file'], $post_id ); $attach_array[] = $attach_id; require_once(ABSPATH . 'wp-admin/includes/image.php'); $attach_data = wp_generate_attachment_metadata( $attach_id, $upload_file['file'] ); wp_update_attachment_metadata( $attach_id, $attach_data ); } return $attach_array; } 

Подробнее о переходе на загрузку php-файла: php.net .

И это функция для установки загруженного файла в виде миниатюры сообщения. Поместите его в соответствующую функцию wp_ajax.

 // put this one early, before any process $files = $_FILES['profile-picture']; // insert attachment, after you have the new post id of course $attached_files = attach_uploads($files,$pid); // set the first file as post thumbnail // $attached_files[0] is for the first file if($attached_files){ set_post_thumbnail( $pid, $attached_files[0] ); } 

Надеюсь, что эта помощь

ДОБАВЛЕНО:

 function rearrange( $arr ){ foreach( $arr as $key => $all ){ foreach( $all as $i => $val ){ $new[$i][$key] = $val; } } return $new; } 

Просто поместите его в functions.php

спасибо @ifdion .. Это мой код finally.php

 if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == "new_post") { // Do some minor form validation to make sure there is content $title = $_POST['title']; $ordertype = $_POST['ordertype']; $price = $_POST['price']; $ordertime = $_POST['ordertime']; $files = $_FILES['profile-picture']; // Add the content of the form to $post as an array $new_post = array( 'post_title' => $title, 'post_content' => $description, 'post_category' => array($_POST['category']), // Usable for custom taxonomies too 'post_status' => 'publish', // Choose: publish, preview, future, draft, etc. 'post_type' => 'post' //'post',page' or use a custom post type if you want to ); //save the new post $pid = wp_insert_post($new_post); add_post_meta($pid, 'ordertype', $ordertype, true); add_post_meta($pid, 'price', $price, true); add_post_meta($pid, 'ordertime', $ordertime, true); $attached_files = attach_uploads($files,$pid); if($attached_files){ set_post_thumbnail( $pid, $attached_files[0] ); } wp_redirect(get_permalink($pid)); exit; //insert taxonomies } function attach_uploads($uploads,$post_id = 0){ $files = rearrange($uploads); if($files[0]['name']==''){ return false; } foreach($files as $file){ $upload_file = wp_handle_upload( $file, array('test_form' => false) ); $attachment = array( 'post_mime_type' => $upload_file['type'], 'post_title' => preg_replace('/\.[^.]+$/', '', basename($upload_file['file'])), 'post_content' => '', 'post_status' => 'inherit' ); $attach_id = wp_insert_attachment( $attachment, $upload_file['file'], $post_id ); $attach_array[] = $attach_id; require_once(ABSPATH . 'wp-admin/includes/image.php'); $attach_data = wp_generate_attachment_metadata( $attach_id, $upload_file['file'] ); wp_update_attachment_metadata( $attach_id, $attach_data ); } return $attach_array; } 

и эта загрузка [вход] в тему ..

 <input type="file" id="profile-picture" name="profile-picture[]" size="40" multiple /> 

но если я действительно отправляю форму, отвечаю с этой ошибкой …

Неустранимая ошибка: вызов функции undefined redrange ()

извините за ваше время