我是一个初级网站,使用WordPress,我正在编写涉及个人资料页面的插件(不是avatar,因为我实现了这个字段,用户可以上传图像,任何东西,比如我朋友的照片),我添加了字段上传,从目录浏览文件,并使用WordPress将其保存到数据库wp_handle_upload
. 我运行了我的代码,但图片没有显示我不知道我的代码(下面)的哪一部分是错误的。
我应该怎么做才能解决这个问题!
这是我修改的代码this discussion
<?php
add_action( \'user_edit_form_tag\',\'make_uploadable_form\');
function make_uploadable_form() {
echo \' enctype="multipart/form-data"\';
}
?>
==================编辑=======================以下是HTML代码
<?php
add_action( \'show_user_profile\', \'UploadField\' );
add_action( \'edit_user_profile\', \'UploadField\' );
function UploadField( $user ) {
if ( !current_user_can( \'edit_user\') )
return false;
$prfile_image_id = get_user_meta($user->ID,\'profile_photo\',true);
$profile_image = wp_get_attachment_image($profile_image_id,"full");
if(!empty($profile_image)){
echo $profile_image;
}
else{
?>
<h3>Extra profile information</h3>
<table class="form-table">
<tr>
<th><label for="Upload">Upload</label></th>
<td>
<input name="profile_photo" type="file" id="profile_photo" value="" />
</td>
</table>
<?php
}
以下是句柄文件上载:add_action( \'personal_options_update\', \'save_user_custom\' );
add_action( \'edit_user_profile_update\', \'save_user_custom\' );
function save_user_custom($user_id){
if($user_id == false)
return false;
// If the upload field has a file in it
if(isset($_FILES[\'profile_photo\'])){
if(!function_exists(\'wp_handle_upload\'))
require_once(ABSPATH.\'wp-admin/includes/file.php\');
// Get the type of the uploaded file. This is returned as "type/extension"
$arr_file_type = wp_check_filetype(basename($_FILES[\'profile_photo\'][\'name\']));
$uploaded_file_type = $arr_file_type[\'type\'];
// Set an array containing a list of acceptable formats
$allowed_file_types = array(\'image/jpg\',\'image/jpeg\',\'image/gif\',\'image/png\');
// If the uploaded file is the right format
if(in_array($uploaded_file_type, $allowed_file_types)) {
// Options array for the wp_handle_upload function. \'test_upload\' => false
$upload_overrides = array( \'test_form\' => false );
// Handle the upload using WP\'s wp_handle_upload function. Takes the posted file and an options array
$uploaded_file = wp_handle_upload($_FILES[\'profile_photo\'], $upload_overrides);
// If the wp_handle_upload call returned a local path for the image
if(isset($uploaded_file[\'file\'])) {
// The wp_insert_attachment function needs the literal system path, which was passed back from wp_handle_upload
$file_name_and_location = $uploaded_file[\'file\'];
// Generate a title for the image that\'ll be used in the media library
$file_title_for_media_library = \'your title here\';
// Set up options array to add this file as an attachment
$attachment = array(
\'post_mime_type\' => $uploaded_file_type,
\'post_title\' => \'Uploaded image \' . addslashes($file_title_for_media_library),
\'post_content\' => \'\',
\'post_status\' => \'inherit\'
);
// Run the wp_insert_attachment function. This adds the file to the media library and generates the thumbnails. If you wanted to attch this image to a post, you could pass the post id as a third param and it\'d magically happen.
$attach_id = wp_insert_attachment( $attachment, $file_name_and_location );
require_once(ABSPATH . "wp-admin" . \'/includes/image.php\');
$attach_data = wp_generate_attachment_metadata( $attach_id, $file_name_and_location );
wp_update_attachment_metadata($attach_id, $attach_data);
update_user_meta( $user_id, \'profile_photo\', $attach_id );
}
}
}
}
?>