2012-05-02 3 views
2

Я пытаюсь разрешить пользователям загружать изображение профиля на их странице редактирования профиля пользователя, вот код для формы загрузки:Пользовательские поля загрузки в профиль WordPress пользователя

function add_extra_profile_fields($user) { 
    $output = '<h3>صورة المستخدم</h3> 

    <table class="form-table"> 

     <tr> 
      <th><label for="twitter">صورة المستخدم</label></th> 

      <td> 
       <img class="video_author_img" src="'.ms_user_img_single_php($user->ID, false).'" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
       <input type="file" id="admin_user_photo" name="admin_user_photo" class="form-text" /><br /> 
       <span class="description">لأفضل نتيجة يرجى استخدام صورة 90px في 90px - الحجم الأقصى 2 ميجا</span> 
      </td> 
     </tr> 

    </table>'; 

    echo $output; 
} 
add_action('edit_user_profile', 'add_extra_profile_fields'); 
add_action('show_user_profile', 'add_extra_profile_fields'); 

Следующая функция должна быть экономия загруженные изображения и обрабатывать кадрирование и размещение его с другой функцией:

function my_save_extra_profile_fields($user_id) { 

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

    // User image upload 
    $allowedTypes = array('image/gif', 'image/jpeg', 'image/png'); 

    if (in_array($_FILES["admin_user_photo"]["type"], $allowedTypes) && ($_FILES["admin_user_photo"]["size"] < 1048576)){ 

     ms_upload_crop_image('admin_user_photo', $user_id, '../../uploads/user_images/', 90, 90); 

    } 
} 
add_action('personal_options_update', 'my_save_extra_profile_fields'); 
add_action('edit_user_profile_update', 'my_save_extra_profile_fields'); 

Я также изменил ENCTYPE формы с JQuery:

$('form#your-profile').attr('enctype', 'multipart/form-data'); 

Проблема заключается в том, что браузер даже не загружает изображение так, как будто поле не существует, не знаю, в чем проблема?

ответ

6

Вы должны изменить два параметра в своей профильной форме, а не одну. Может быть, это поможет:

form.encoding = "multipart/form-data"; 
    form.setAttribute('enctype', 'multipart/form-data'); 

И я предлагаю вам использовать готовый плагин для этой цели, называется Добавить локальный аватар (http://wordpress.org/extend/plugins/add-local-avatar/) Или если вы настаиваете на использовании своего собственного кода, то просто загрузите плагин и исследуйте его простой исходный код. Сравните их и найдите свои ошибки.

Смежные вопросы