【问题标题】:Issue to add upload image in wordpress media library在 wordpress 媒体库中添加上传图片的问题
【发布时间】:2019-12-22 16:00:02
【问题描述】:

我已经编写代码来上传文件夹和 wordpress 媒体库中的文件。 文件将上传到 wordpress 文件夹,但问题是它没有在媒体库中移动。

函数 fb_save_custom_user_profile_fields( $user_id ) {

    $uploadUrl= wp_get_upload_dir();

    if ( !current_user_can( 'edit_user', $user_id ) )
        return FALSE;

        $rel = $_POST['relation'];

    update_user_meta( $user_id, 'fname_'. $rel, $_POST['fname'] );
    update_user_meta( $user_id, 'mname_'.$rel, $_POST['mname'] );
    update_user_meta( $user_id, 'lname_'. $rel, $_POST['lname'] );
    update_user_meta( $user_id, 'relation', $_POST['relation'] );
    update_user_meta( $user_id, 'bod_'. $rel, $_POST['bod'] );
    update_user_meta( $user_id, 'education_'.$rel ,$_POST['education'] );
    update_user_meta( $user_id, 'occupation_'. $rel, $_POST['occupation'] );

    // update_user_meta( $user_id, 'picture_'. $rel, $uploadUrl['url']."/".$_POST['picture'] );

    if($_FILES['picture']['name'] != ''){
    $uploadedfile = $_FILES['picture'];
    $upload_overrides = array( 'test_form' => false );

    $movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
    $imageurl = "";
    if ( $movefile && ! isset( $movefile['error'] ) ) {
       $imageurl = $movefile['url'];
       echo "url : ".$imageurl;

       update_user_meta( $user_id, 'picture_'. $rel, $_FILES['picture']['name'] );
    } else {
       echo $movefile['error'];
    }
  }
}
add_action( 'show_user_profile', 'fb_add_custom_user_profile_fields' );
add_action( 'edit_user_profile', 'fb_add_custom_user_profile_fields' );

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    您需要将文件另存为附件:

            // Save to media library
            $filename = $_FILES['picture']['name'];
            $wp_filetype = wp_check_filetype($filename, null );
            $attachment = array(
               'guid' => $imageurl,
               'post_mime_type' => $wp_filetype['type'],
               'post_title' => sanitize_file_name($filename),
               'post_content' => '',
               'post_status' => 'inherit'
            );
            $attach_id = wp_insert_attachment( $attachment, $file );
            require_once(ABSPATH . 'wp-admin/includes/image.php');
            $attach_data = wp_generate_attachment_metadata( $attach_id, $file );
            $res1= wp_update_attachment_metadata( $attach_id, $attach_data );
    

    所以基本上,您的代码将如下所示:

    add_action( 'show_user_profile', 'fb_add_custom_user_profile_fields' );
    add_action( 'edit_user_profile', 'fb_add_custom_user_profile_fields' );
    function fb_save_custom_user_profile_fields( $user_id ) {
    
        $uploadUrl = wp_get_upload_dir();
    
        if ( !current_user_can( 'edit_user', $user_id ) )
                return FALSE;
    
                $rel = $_POST['relation'];
    
        update_user_meta( $user_id, 'fname_'. $rel, $_POST['fname'] );
        update_user_meta( $user_id, 'mname_'.$rel, $_POST['mname'] );
        update_user_meta( $user_id, 'lname_'. $rel, $_POST['lname'] );
        update_user_meta( $user_id, 'relation', $_POST['relation'] );
        update_user_meta( $user_id, 'bod_'. $rel, $_POST['bod'] );
        update_user_meta( $user_id, 'education_'.$rel ,$_POST['education'] );
        update_user_meta( $user_id, 'occupation_'. $rel, $_POST['occupation'] );
    
        // update_user_meta( $user_id, 'picture_'. $rel, $uploadUrl['url']."/".$_POST['picture'] );
    
        if($_FILES['picture']['name'] != ''){
            $uploadedfile = $_FILES['picture'];
            $upload_overrides = array( 'test_form' => false );
    
            $movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
            $imageurl = "";
            if ( $movefile && ! isset( $movefile['error'] ) ) {
                 $imageurl = $movefile['url'];
    
    
                    // Save to media library
                    $filename = $_FILES['picture']['name'];
                    $wp_filetype = wp_check_filetype($filename, null );
                    $attachment = array(
                       'guid' => $imageurl,
                       'post_mime_type' => $wp_filetype['type'],
                       'post_title' => sanitize_file_name($filename),
                       'post_content' => '',
                       'post_status' => 'inherit'
                    );
                    $attach_id = wp_insert_attachment( $attachment, $file );
                    require_once(ABSPATH . 'wp-admin/includes/image.php');
                    $attach_data = wp_generate_attachment_metadata( $attach_id, $file );
                    $res1= wp_update_attachment_metadata( $attach_id, $attach_data );
    
    
                 echo "url : ".$imageurl;
    
                 update_user_meta( $user_id, 'picture_'. $rel, $_FILES['picture']['name'] );
            } else {
                 echo $movefile['error'];
            }
        }
    }
    

    【讨论】:

    • 无法使用此代码。我对 thi 做了一些更改,现在效果很好。感谢您提供此代码。
    • 嗨@Mahen,如果这个答案已经解决了你的问题,请考虑点击复选标记接受它。
    • 我不认为你可以从互联网上获取任何代码,它会开箱即用,任何代码都需要你自己实现。
    【解决方案2】:

    通过将这两个“$file”变量更改为这样,我得到了@Ali_k 的答案:

    $attach_id = wp_insert_attachment( $attachment, $filename, $user_id );
    require_once(ABSPATH . 'wp-admin/includes/image.php');
    $attach_data = wp_generate_attachment_metadata( $attach_id, $movefile['file'] );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2022-11-04
      • 1970-01-01
      • 2012-05-24
      • 2019-01-31
      • 1970-01-01
      相关资源
      最近更新 更多