2017-10-21 77 views
1

我想添加一个表单在wordpress中的用户配置文件管理页面中上传图像,我以前试过这个代码,它在正常的php页面中工作正常,但是当我尝试它在这个WordPress的功能,它不工作。无法在wordpress管理页面上传图像

有人可以帮忙吗?

function image_up_gall(){ 
?> 
    <form action="#" method="post" enctype="multipart/form-data"> 
    Select image to upload: 
    <input type="file" name="fileToUpload" id="fileToUpload"> 
    <input type="submit" value="Upload Image" name="submit"> 
    </form> 

<?php 
$target_dir = "uploads/"; 
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); 
$uploadOk = 1; 
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
// Check if image file is a actual image or fake image 
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { 
     echo "The file ". basename($_FILES["fileToUpload"]["name"]). " has been uploaded."; 
    } else { 
     echo "Sorry, there was an error uploading your file."; 
    } 
} 
add_action('edit_user_profile', 'image_up_gall'); 
add_action('show_user_profile', 'image_up_gall'); 

回答

0

你可以试试这个波纹管

if (isset($_FILES["file"]["name"])) { 

    $destination = $_POST["dir"]; 

    $name = $_FILES["file"]["name"]; 
    $tmp_name = $_FILES['file']['tmp_name']; 
    $error = $_FILES['file']['error']; 

    //echo $name; 
    //echo $tmp_name; 
    //echo $error; 

    move_uploaded_file($_FILES['file']['tmp_name'], $destination.$name); 

} 
0

首先edit_user_profileshow_user_profile行动挂钩不必保存图像,你可以只添加一个字段存在。所以

function image_up_gall(){ 
?> 

    Select image to upload: 
    <input type="file" name="fileToUpload" id="fileToUpload"> 
    <input type="submit" value="Upload Image" name="submit"> 
<?php 
} 
add_action('edit_user_profile', 'image_up_gall'); 
add_action('show_user_profile', 'image_up_gall'); 

这是因为WordPress的有自己的表单标签已经,只是确保它具有enctype="multipart/form-data"

第二步,使用personal_options_updateedit_user_profile_update可以保存表单/上传IMAG,这样做,使用此代码:

function save_profile_fields($user_id) { 
$target_dir = "uploads/"; // I recommend to use wp_upload_dir() to get the correct path 
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); 
$uploadOk = 1; 
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
// Check if image file is a actual image or fake image 
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { 
      // here the image is uploaded and we can save it to user profile with: 
      update_usermeta($user_id, 'profile_pic', $target_file); 
    } 
} 

add_action('personal_options_update', 'save_profile_fields'); 
add_action('edit_user_profile_update', 'save_profile_fields'); 

但我建议你使用WordPress默认的媒体库要做到这一点,有大量的代码,所以我最好给你一个链接到教程:https://rudrastyh.com/wordpress/customizable-media-uploader.html

+0

感谢您的帮助,但它不工作。 – Tarek

+0

你能描述一下吗? –

+0

图片没有上传。 – Tarek