2017-03-28 64 views
0

我在網上找到了無數關於如何在wordpress中向用戶配置文件添加額外自定義字段的示例。但他們中沒有人展示瞭如何添加字段來上傳文件。如何將自定義文件字段添加到wordpress中的用戶配置文件?

繼承人什麼,我得到了我的額外領域:

add_action('show_user_profile', 'extra_user_profile_fields'); 
add_action('edit_user_profile', 'extra_user_profile_fields'); 

function extra_user_profile_fields($user) { 
?> 
    <h3><?php _e("Extra Information", "blank"); ?></h3> 
    <table class="form-table"> 

     <tr> 
      <th><label for="my_document"><?php _e("My Document"); ?></label></th> 
      <td> 
       <input type="file" name="my_document" id="my_document" value="<?php echo esc_attr(get_the_author_meta('my_document', $user->ID)); ?>" /> 
      </td> 
     </tr> 

    </table> 

<?php 
} 

那麼對於表單提交:

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

function yoursite_save_extra_user_profile_fields($user_id) { 
    $saved = false; 

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

    if(!empty($_FILES['my_document']['name'])) { 

     // Use the WordPress API to upload the file 
     $upload = wp_upload_bits($_FILES['my_document']['name'], null, file_get_contents($_FILES['my_document']['tmp_name'])); 

     if(isset($upload['error']) && $upload['error'] != 0) { 
      wp_die('There was an error uploading your file. The error is: ' . $upload['error']); 
     } else { 
      add_post_meta($user_id, 'my_document', $upload); 
      update_post_meta($user_id, 'my_document', $upload); 
     } // end if/else 

    } // end if 

} 

文檔沒有保存,我懷疑的形式在編輯個人資料不是招」 t標籤上傳文件。我也不知道如何在保存後在前端檢索文檔,以便向用戶顯示他已上傳文件。

回答

0

轉儲輸出時,您在控制檯中看到了什麼?

var_dump($upload); 

它可能與/ tmp目錄權限(或存在)有關。

我很抱歉,如果這不是你要求的,但你有沒有試過ACF

以下是如何到get fields from a User字段組。

1

這個工作對我來說:

add_action('show_user_profile', 'extra_user_profile_fields'); 
add_action('edit_user_profile', 'extra_user_profile_fields'); 

function extra_user_profile_fields($user) { 
?> 
    <h3><?php _e("Extra Information", "blank"); ?></h3> 
    <table class="form-table"> 
     <tr> 
      <th scope="row">My Document</th> 
      <td><input type="file" name="my_document" value="" /> 
      <?php 
       $doc = get_user_meta($user->ID, 'my_document', true); 
       if (!isset($doc['error'])) { 
        $doc = $doc['url']; 
        echo "<img src='$doc' />"; 
       } else { 
        $doc = $doc['error']; 
        echo $doc; 
       } 
      ?> 
      </td> 
     </tr> 
    </table> 

<?php 
} 
add_action('personal_options_update', 'yoursite_save_extra_user_profile_fields'); 
add_action('edit_user_profile_update', 'yoursite_save_extra_user_profile_fields'); 

function yoursite_save_extra_user_profile_fields($user_id) { 
    if (!current_user_can('edit_user', $user_id)) 
     return false; 
    if($_FILES['my_document']['error'] === UPLOAD_ERR_OK) { 
     $_POST['action'] = 'wp_handle_upload'; 
     $upload_overrides = array('test_form' => false); 
     $upload = wp_handle_upload($_FILES['my_document'], $upload_overrides); 
     update_user_meta($user_id, 'my_document', $upload); 
    } 
} 
相關問題