위의 질문과 비슷한 것을하려고합니다. 사용자가 프런트 엔드에서 이미지를 게시하고 업로드하도록하려고합니다. 나는 이미 게시물 양식과 작업을 수행했습니다.
난 그냥 다음에 의해 게시 대답을 시도 로빈 I 나이트 업로드-후 썸네일 -에서 - 더 - 프런트 엔드 . 슬프게도 나는 그것을 작동시키지 못했습니다. 변경하거나 편집 할 내용이 있습니까?
감사합니다.
위의 질문과 비슷한 것을하려고합니다. 사용자가 프런트 엔드에서 이미지를 게시하고 업로드하도록하려고합니다. 나는 이미 게시물 양식과 작업을 수행했습니다.
난 그냥 다음에 의해 게시 대답을 시도 로빈 I 나이트 업로드-후 썸네일 -에서 - 더 - 프런트 엔드 . 슬프게도 나는 그것을 작동시키지 못했습니다. 변경하거나 편집 할 내용이 있습니까?
감사합니다.
답변:
대답에 대해 이야기하고 있다면 여기 에 단순히 "Ajax like"제출을 달성하기 위해 iframe에 파일을 업로드합니다.
게시 제출을 처리하는 양식이 이미있는 경우 양식의 어딘가에 업로드 파일 필드 입력을 추가하면됩니다.
<form ...
...
<input type="file" name="thumbnail" id="thumbnail">
...
...
</form>
양식에 enctype="multipart/form-data"
속성 이 있는지 확인하십시오 .
그런 다음 게시물을 작성한 후 양식 처리 스크립트에서 (사용한다고 가정 wp_insert_post();
) 새 ID로 게시물 ID를 유지하십시오.
$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 마크 업 :
<p>
<label for="custom-upload">Upload New Image:</label>
<input type="file" tabindex="3" name="custom-upload" id="custom-upload" />
</p>
<?php
/*Retrieving the image*/
$attachment = get_post_meta($postid, 'custom_image');
if($attachment[0]!='')
{
echo wp_get_attachment_link($attachment[0], 'thumbnail', false, false);
}
?>
이미지 업로드 :
<?php
global $post; /*Global post object*/
$post_id = $post->ID; /*Geting current post id*/
$upload = $_FILES['upload']; /*Receive the uploaded image from form*/
add_custom_image($post_id, $upload); /*Call image uploader function*/
function add_custom_image($post_id, $upload)
{
$uploads = wp_upload_dir(); /*Get path of upload dir of wordpress*/
if (is_writable($uploads['path'])) /*Check if upload dir is writable*/
{
if ((!empty($upload['tmp_name']))) /*Check if uploaded image is not empty*/
{
if ($upload['tmp_name']) /*Check if image has been uploaded in temp directory*/
{
$file=handle_image_upload($upload); /*Call our custom function to ACTUALLY upload the image*/
$attachment = array /*Create attachment for our post*/
(
'post_mime_type' => $file['type'], /*Type of attachment*/
'post_parent' => $post_id, /*Post id*/
);
$aid = wp_insert_attachment($attachment, $file['file'], $post_id); /*Insert post attachment and return the attachment id*/
$a = wp_generate_attachment_metadata($aid, $file['file'] ); /*Generate metadata for new attacment*/
$prev_img = get_post_meta($post_id, 'custom_image'); /*Get previously uploaded image*/
if(is_array($prev_img))
{
if($prev_img[0] != '') /*If image exists*/
{
wp_delete_attachment($prev_img[0]); /*Delete previous image*/
}
}
update_post_meta($post_id, 'custom_image', $aid); /*Save the attachment id in meta data*/
if ( !is_wp_error($aid) )
{
wp_update_attachment_metadata($aid, wp_generate_attachment_metadata($aid, $file['file'] ) ); /*If there is no error, update the metadata of the newly uploaded image*/
}
}
}
else
{
echo 'Please upload the image.';
}
}
}
function handle_image_upload($upload)
{
global $post;
if (file_is_displayable_image( $upload['tmp_name'] )) /*Check if image*/
{
/*handle the uploaded file*/
$overrides = array('test_form' => false);
$file=wp_handle_upload($upload, $overrides);
}
return $file;
}
?>