无法在wordpress管理页面上传图片

时间:2017-10-21 14:06:20

标签: php wordpress

我正在尝试添加一个表单来在wordpress的用户配置文件管理页面中上传图像,我之前尝试过这个代码并且它在正常的php页面中工作正常但是当我在这个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');

2 个答案:

答案 0 :(得分: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);

}

答案 1 :(得分: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您可以保存表单/上传图片,为此,请使用以下代码:

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