我花了好几天的时间才弄明白这一点。我已经成功实现了一个表单,可以从我的站点前端提交帖子。但是我不知道如何上传图像。
我希望用户上传的任何图像都能自动附加到帖子并成为其特色图像。
有人能解释一下如何用我现有的代码做到这一点吗?
我在这个论坛上搜索了所有相关问题,没有一个解决方案对我有效。
<?
if( \'POST\' == $_SERVER[\'REQUEST_METHOD\'] && !empty( $_POST[\'insert_post\'] )) { //check that our form was submitted
//If it has, redirect to the dashboard
?><script language="javascript"><!--
location.replace("/dashboard/")
//-->
</script> <?php
$title = $_POST[\'thread_title\']; //set our title
if ($_POST[\'thread_description\']=="") { // check if a description was entered
$description = "See thread title..."; // if not, use placeholder
} else {
$description = $_POST[\'thread_description\']; //if so, use it
}
$tags = $_POST[\'thread_tags\']; //load thread tags (custom tax) into array
$post = array( //our wp_insert_post args
\'post_title\' => wp_strip_all_tags($title),
\'post_content\' => $description,
\'post_category\' => array(\'0\' => $_POST[\'cat\']),
\'tax_input\' => array(\'thread_tag\' => $tags),
\'post_status\' => \'publish\',
\'post_type\' => \'tsv_userpost\'
);
$my_post_id = wp_insert_post($post); //send our post, save the resulting ID
$current_user = wp_get_current_user(); //check who is logged in
add_post_meta($my_post_id, \'_your_custom_meta\', $var); //add custom meta data, after the post is inserted
} else {
if(is_user_logged_in()) { // check that the user is logged in before presenting form
$current_user = wp_get_current_user();
?>
<div id="postbox">
<form id="new_thread" name="new_thread" method="post" action="" enctype="multipart/form-data">
<input class="required" type="text" id="thread_title" value="" tabindex="1" name="thread_title" placeholder="Thread Title" />
<textarea id="thread_description" name="thread_description" cols="80" rows="20" tabindex="2"></textarea>
<div class="left">
<select name=\'cat\' id=\'cat\' class=\'postform required\' tabindex="3">
<option value="" selected="selected">Choose:</option>
<option class="writing" value="90">Writing</option>
<option class="image" value="91">Image</option>
<option class="video" value="92">Video</option>
<option class="audio" value="94">Audio</option>
<option class="link" value="95">Link</option>
</select>
</div>
<input type="text" value="" tabindex="4" size="16" name="thread_tags" id="thread_tags" placeholder="Tags" />
<br />
<!-- images -->
<label for="images">Featured Image:</label>
<input type="file" name="user-image-featured" id="user-image-featured" size="20">
<!-- Submit button-->
<br />
<input type="submit" value="Save Post" tabindex="5" id="thread_submit" name="thread_submit" class="thread-button" />
<input type="hidden" name="insert_post" value="post" />
<?php wp_nonce_field( \'new_thread\' ); ?>
</form>
</div>
<?php } else { echo \'please login\'; } } ?>
最合适的回答,由SO网友:fischi 整理而成
您可以通过运行函数来做到这一点
set_post_thumbnail( $my_post_id, $thumbnail_id );
请记住,您必须先处理图像并将其插入库中:
$uploaddir = wp_upload_dir();
$file = $_FILES[ ... whatever you have in your POST data ... ];
$uploadfile = $uploaddir[\'path\'] . \'/\' . basename( $file );
move_uploaded_file( $file , $uploadfile );
$filename = basename( $uploadfile );
$wp_filetype = wp_check_filetype(basename($filename), null );
$attachment = array(
\'post_mime_type\' => $wp_filetype[\'type\'],
\'post_title\' => preg_replace(\'/\\.[^.]+$/\', \'\', $filename),
\'post_content\' => \'\',
\'post_status\' => \'inherit\',
\'menu_order\' => $_i + 1000
);
$attach_id = wp_insert_attachment( $attachment, $uploadfile );
没有测试脚本-它是根据我创建的版本改编的。也许你想更改文件名之类的东西,但总的来说,它是这样工作的:)
SO网友:vaibhav govani
/*******这对我有用********/
$uploaddir = wp_upload_dir();
$file = $_FILES["post_Fimage"]["name"];
$uploadfile = $uploaddir[\'path\'] . \'/\' . basename( $file );
move_uploaded_file( $_FILES["post_Fimage"]["tmp_name"] , $uploadfile );
$filename = basename( $uploadfile );
$wp_filetype = wp_check_filetype(basename($filename), null );
$attachment = array(
\'post_mime_type\' => $wp_filetype[\'type\'],
\'post_title\' => preg_replace(\'/\\.[^.]+$/\', \'\', $filename),
\'post_content\' => \'\',
\'post_status\' => \'inherit\',
\'menu_order\' => $_i + 1000
);
$attach_id = wp_insert_attachment( $attachment, $uploadfile );
set_post_thumbnail( $post_id, $attach_id );
SO网友:Vaibhav Govani
这工作正常!
$uploaddir = wp_upload_dir();
$file = $_FILES["post_Fimage"]["name"];
$uploadfile = $uploaddir[\'path\'] . \'/\' . basename( $file );
move_uploaded_file( $_FILES["post_Fimage"]["tmp_name"] , $uploadfile );
$filename = basename( $uploadfile );
$wp_filetype = wp_check_filetype(basename($filename), null );
$attachment = array(
\'post_mime_type\' => $wp_filetype[\'type\'],
\'post_title\' => preg_replace(\'/\\.[^.]+$/\', \'\', $filename),
\'post_content\' => \'\',
\'post_status\' => \'inherit\',
\'menu_order\' => $_i + 1000
);
$attach_id = wp_insert_attachment( $attachment, $uploadfile );
//echo "<pre>";print_r($wp_filetype);echo "</pre>";
//echo "<pre>";print_r($_FILES);echo "</pre>";
set_post_thumbnail( $post_id, $attach_id );
SO网友:biancardi
我可以修复你的代码吗?
$uploaddir = wp_upload_dir();
$file = $_FILES[ ... whatever you have in your POST data ... ];
$uploadfile = $uploaddir[\'path\'] . \'/\' . basename( $file[\'name\'] );
move_uploaded_file( $file[\'tmp_name\'] , $uploadfile );
$filename = basename( $uploadfile );
$wp_filetype = wp_check_filetype(basename($filename), null );
$attachment = array(
\'post_mime_type\' => $wp_filetype[\'type\'],
\'post_title\' => preg_replace(\'/\\.[^.]+$/\', \'\', $filename),
\'post_content\' => \'\',
\'post_status\' => \'inherit\',
\'menu_order\' => $_i + 1000
);
$attach_id = wp_insert_attachment( $attachment, $uploadfile );