Php 文件上传到wordpress中的文件夹

Php 文件上传到wordpress中的文件夹,php,wordpress,file-upload,Php,Wordpress,File Upload,我使用下面的书面代码将文件移动到名为“training”的文件夹中 但是我没有得到任何结果。我做错什么了吗。请帮帮我 这是我的全部代码 function training_user_profile_fields( $user ) { ?> <h3><?php// _e("Extra profile information", "blank"); ?></h3> <table class="form-table"> <tr>

我使用下面的书面代码将文件移动到名为“training”的文件夹中

但是我没有得到任何结果。我做错什么了吗。请帮帮我

这是我的全部代码

function training_user_profile_fields( $user ) { ?>
<h3><?php// _e("Extra profile information", "blank"); ?></h3>

<table class="form-table">
  <tr>
    <th><label for="traing-image"><?php _e("Upload Your Training Certificate:"); ?></label></th>
      <td>
       <input type="file" name="training_image" id="traing-image"value="<?php echo esc_attr( get_the_author_meta( 'training_image', $user->ID ) ); ?>" class="regular-text" />
      </td>
    </tr>
</table>
<?php }

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

function save_extra_user_profile_fields( $user_id ) {

if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
$training_path = time().'_'.$_FILES['training_image']['name'];
$tmp_file_name = $_FILES['training_image']['tmp_name'];
echo "filename".$_FILES['training_image']['tmp_name']; exit;
$upload_dir = wp_upload_dir();
if($training_path){
       move_uploaded_file($tmp_file_name,$upload_dir['baseurl'].'/training/'.$training_path);
}
update_user_meta( $user_id, 'training-image', $training_path );
}
function training\u user\u profile\u字段($user){?>

您做错了。
$upload_dir['baseurl']
URL
提供给上载目录,而不是
绝对路径
到目录。您无法使用URL上载或移动文件

HTTP包装器不支持可写连接

因此,
$upload\u dir['baseurl']
应该更改为$upload\u dir['basedir']

应该是

$training_path = time().'_'.$_FILES['training_image']['name'];
$tmp_file_name = $_FILES['training_image']['tmp_name'];
$upload_dir = wp_upload_dir();
if($training_path){
       move_uploaded_file($tmp_file_name,$upload_dir['basedir'].'/training/'.$training_path);
}
update_user_meta( $user_id, 'training-image', $training_path );
还要确保表单的
enctype
设置为
multipart/form data
(enctype=“multipart/form data”)

更新

WordPress配置文件表单在默认情况下没有
enctype
属性。在默认情况下,您可以使用钩子添加该属性。将其添加到主题
functions.php

add_action('user_edit_form_tag', 'add_enctype');

function add_form_enctype () {
    echo  'enctype="multipart/form-data"';
}

希望这有帮助

当我打印$training\u路径时,您能显示完整的表单号吗?我只能找到时间和'\u',但找不到$u文件['training\u image']['name'];。所以我很困惑。@Ranjit可能是您没有在表单中设置enctype。请粘贴完整的表单。set enctype=“multipart/form data”在表单标记中,它是wordpress用户配置文件表单。并在表单中添加额外字段。
$training_path = time().'_'.$_FILES['training_image']['name'];
$tmp_file_name = $_FILES['training_image']['tmp_name'];
$upload_dir = wp_upload_dir();
if($training_path){
       move_uploaded_file($tmp_file_name,$upload_dir['basedir'].'/training/'.$training_path);
}
update_user_meta( $user_id, 'training-image', $training_path );
add_action('user_edit_form_tag', 'add_enctype');

function add_form_enctype () {
    echo  'enctype="multipart/form-data"';
}