Intereting Posts
Название темы перешло в некоторые из функций? WordPress 4.7.1 REST API, все еще подвергая пользователей Пользовательский термин таксономии в продукте WooCommerce permalink Установите внешний плагин в текущем плагине Работа с Gravatars в области развития локального хоста Как вы отформатируете дату как двухзначный год? (например, «10.12.10» вместо «10.12.2010») Как добавить функциональность Post Like и Bookmark на мой сайт WordPress? Как печатать текст с поддержкой перевода с URL-адресом HTML Почта не отправляется, когда я устанавливаю заголовки HTML Как создать плагин WordPress с пользовательскими типами сообщений / пользовательскими функциями поля? Какова минимальная роль / разрешения для внештатного разработчика? Какие модули Apache необходимо включить? Как показать сообщение (выдержка) из определенной категории на странице wp? Утвердить измененные должности создание запроса wp с сообщениями определенной категории

Загрузка файла Frontend Simple Local Avatar

Я использую Simple Local Avatars для загрузки пользовательских аватаров пользователей.

Как создать внешнюю страницу с функцией загрузки аватара?

Ниже вы найдете код плагина Simple Local Avatars:

<?php /** * add field to user profiles */ class simple_local_avatars { function simple_local_avatars() { add_filter('get_avatar', array($this, 'get_avatar'), 10, 5); add_action('admin_init', array($this, 'admin_init')); add_action('show_user_profile', array($this, 'edit_user_profile')); add_action('edit_user_profile', array($this, 'edit_user_profile')); add_action('personal_options_update', array($this, 'edit_user_profile_update')); add_action('edit_user_profile_update', array($this, 'edit_user_profile_update')); add_filter('avatar_defaults', array($this, 'avatar_defaults')); } function get_avatar($avatar = '', $id_or_email, $size = '80', $default = '', $alt = false) { if (is_numeric($id_or_email)) $user_id = (int) $id_or_email; elseif (is_string($id_or_email)) { if ($user = get_user_by_email($id_or_email)) $user_id = $user->ID; } elseif (is_object($id_or_email) && !empty($id_or_email->user_id)) $user_id = (int) $id_or_email->user_id; if (!empty($user_id)) $local_avatars = get_user_meta($user_id, 'simple_local_avatar', true); if (!isset($local_avatars) || empty($local_avatars) || !isset($local_avatars['full'])) { if (!empty($avatar)) return "<img src='http://www.wrongmag.ru/wp-content/themes/wrongmag/scripts/timthumb.php?src=/uploads/default-avatar.png&amp;w={$size}&amp;h={$size}&amp;zc=1' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />"; remove_filter('get_avatar', 'get_simple_local_avatar'); $avatar = get_avatar($id_or_email, $size, $default); add_filter('get_avatar', 'get_simple_local_avatar', 10, 5); return $avatar; } if (!is_numeric($size)) $size = '80'; if (empty($alt)) $alt = get_the_author_meta('display_name', $user_id); if (empty($local_avatars[$size])) { $upload_path = wp_upload_dir(); $avatar_full_path = str_replace($upload_path['baseurl'], $upload_path['basedir'], $local_avatars['full']); $image_sized = image_resize($avatar_full_path, $size, $size, true); if (is_wp_error($image_sized)) $local_avatars[$size] = $local_avatars['full']; else $local_avatars[$size] = str_replace($upload_path['basedir'], $upload_path['baseurl'], $image_sized); update_user_meta($user_id, 'simple_local_avatar', $local_avatars); } elseif (substr($local_avatars[$size], 0, 4) != 'http') $local_avatars[$size] = site_url($local_avatars[$size]); $author_class = is_author($user_id) ? ' current-author' : ''; $avatar = "<img alt='" . esc_attr($alt) . "' src='" . $local_avatars[$size] . "' class='avatar avatar-{$size}{$author_class} photo' height='{$size}' width='{$size}' />"; return $avatar; } function admin_init() { load_plugin_textdomain('simple-local-avatars', false, dirname(plugin_basename(__FILE__)) . '/languages/'); register_setting('discussion', 'simple_local_avatars_caps', array($this, 'sanitize_options')); add_settings_field('simple-local-avatars-caps', __('Local Avatar Permissions', 'simple-local-avatars'), array($this, 'avatar_settings_field'), 'discussion', 'avatars'); } function sanitize_options($input) { $new_input['simple_local_avatars_caps'] = empty($input['simple_local_avatars_caps']) ? 0 : 1; return $new_input; } function avatar_settings_field($args) { $options = get_option('simple_local_avatars_caps'); echo '<label for="simple_local_avatars_caps"> <input type="checkbox" name="simple_local_avatars_caps" id="simple_local_avatars_caps" value="1" ' . @checked($options['simple_local_avatars_caps'], 1, false) . ' /> ' . __('Only allow users with file upload capabilities to upload local avatars (Authors and above)', 'simple-local-avatars') . ' </label>'; } function edit_user_profile($profileuser) { ?> <h3><?php _e('Avatar', 'simple-local-avatars'); ?></h3> <table class="form-table"> <tr> <th><label for="simple-local-avatar"><?php _e('Upload Avatar', 'simple-local-avatars'); ?></label></th> <td style="width: 50px;" valign="top"> <?php echo get_avatar($profileuser->ID); ?> </td> <td> <?php $options = get_option('simple_local_avatars_caps'); if (empty($options['simple_local_avatars_caps']) || current_user_can('upload_files')) { do_action('simple_local_avatar_notices'); wp_nonce_field('simple_local_avatar_nonce', '_simple_local_avatar_nonce', false); ?> <input type="file" name="simple-local-avatar" id="simple-local-avatar" /><br /> <?php if (empty($profileuser->simple_local_avatar)) echo '<span class="description">' . __('No local avatar is set. Use the upload field to add a local avatar.', 'simple-local-avatars') . '</span>'; else echo '<input type="checkbox" name="simple-local-avatar-erase" value="1" /> ' . __('Delete local avatar', 'simple-local-avatars') . '<br /> <span class="description">' . __('Replace the local avatar by uploading a new avatar, or erase the local avatar (falling back to a gravatar) by checking the delete option.', 'simple-local-avatars') . '</span>'; } else { if (empty($profileuser->simple_local_avatar)) echo '<span class="description">' . __('No local avatar is set. Set up your avatar at Gravatar.com.', 'simple-local-avatars') . '</span>'; else echo '<span class="description">' . __('You do not have media management permissions. To change your local avatar, contact the blog administrator.', 'simple-local-avatars') . '</span>'; } ?> </td> </tr> </table> <script type="text/javascript">var form=document.getElementById('your-profile');form.encoding='multipart/form-data';form.setAttribute('enctype','multipart/form-data');</script> <?php } function edit_user_profile_update($user_id) { if (!wp_verify_nonce($_POST['_simple_local_avatar_nonce'], 'simple_local_avatar_nonce')) return; if (!empty($_FILES['simple-local-avatar']['name'])) { $mimes = array( 'jpg|jpeg|jpe' => 'image/jpeg', 'gif' => 'image/gif', 'png' => 'image/png', 'bmp' => 'image/bmp', 'tif|tiff' => 'image/tiff' ); $avatar = wp_handle_upload($_FILES['simple-local-avatar'], array('mimes' => $mimes, 'test_form' => false)); if (empty($avatar['file'])) { switch ($avatar['error']) { case 'File type does not meet security guidelines. Try another.': add_action('user_profile_update_errors', create_function('$a', '$a->add("avatar_error",__("Please upload a valid image file for the avatar.","simple-local-avatars"));')); break; default: add_action('user_profile_update_errors', create_function('$a', '$a->add("avatar_error","<strong>".__("There was an error uploading the avatar:","simple-local-avatars")."</strong> ' . esc_attr($avatar['error']) . '");')); } return; } $this->avatar_delete($user_id); update_user_meta($user_id, 'simple_local_avatar', array('full' => $avatar['url'])); } elseif (isset($_POST['simple-local-avatar-erase']) && $_POST['simple-local-avatar-erase'] == 1) $this->avatar_delete($user_id); } function avatar_defaults($avatar_defaults) { remove_action('get_avatar', array($this, 'get_avatar')); return $avatar_defaults; } function avatar_delete($user_id) { $old_avatars = get_user_meta($user_id, 'simple_local_avatar', true); $upload_path = wp_upload_dir(); if (is_array($old_avatars)) { foreach ($old_avatars as $old_avatar) { $old_avatar_path = str_replace($upload_path['baseurl'], $upload_path['basedir'], $old_avatar); @unlink($old_avatar_path); } } delete_user_meta($user_id, 'simple_local_avatar'); } } $simple_local_avatars = new simple_local_avatars; if (!function_exists('get_simple_local_avatar')): function get_simple_local_avatar($id_or_email, $size = '80', $default = '', $alt = false) { global $simple_local_avatars; return $simple_local_avatars->get_avatar('', $id_or_email, $size, $default, $alt); } endif; register_uninstall_hook(__FILE__, 'simple_local_avatars_uninstall'); function simple_local_avatars_uninstall() { $simple_local_avatars = new simple_local_avatars; $users = get_users_of_blog(); foreach ($users as $user) $simple_local_avatars->avatar_delete($user->user_id); delete_option('simple_local_avatars_caps'); } 

Я пробовал много вариантов, но все они потерпели неудачу.

Не могли бы вы дать подсказку, какие фрагменты кода я буду копировать в свой файл шаблонов интерфейса?

Большое спасибо.

Solutions Collecting From Web of "Загрузка файла Frontend Simple Local Avatar"

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

 <?php $myAv = new simple_local_avatars(); $myAv->edit_user_profile($profileuser); ?> 

Добавить

 do_action('show_user_profile'); do_action('edit_user_profile'); 

к вашему пользовательскому шаблону интерфейса

и при сохранении добавьте:

 do_action('personal_options_update'); do_action('edit_user_profile_update'); 

Нам нужны следующие параметры:

  1. action edit_user_profile нужен объект WordPress (мы берем его из класса WP_User)
  2. Действие edit_user_profile_update требует идентификатора пользователя

Первое действие – это рендеринг поля для загрузки, а текущий аватар – второй, который выполняет загрузку. Вот почему нам нужно вызвать его после нажатия кнопки. Мы слушаем кнопку в начале кода, поэтому после отправки обновления страницы и обновления аватара (в противном случае она отображается как сломанное изображение).

Вот моя настройка:

 <?php if(isset($_POST['user_avatar_edit_submit'])) { do_action('edit_user_profile_update', bbp_get_displayed_user_id()); } ?> <form id="your-profile" action="<?php bbp_user_profile_edit_url( bbp_get_displayed_user_id() ); ?>" method="post"> <?php $this_user = new WP_User(bbp_get_displayed_user_id()); do_action('edit_user_profile', $this_user); ?> <input type="submit" name="user_avatar_edit_submit" value="OK"/> </form> 
 <?php get_header(); global $user_ID; if ($user_ID) { $user_info = get_userdata($user_ID); $id = $user_info->ID; } ?> <?php if(isset($_POST['user_avatar_edit_submit'])) { do_action('edit_user_profile_update', $id); } ?> <form id="your-profile" action="" method="post"> <?php $myAv = new simple_local_avatars(); $myAv->edit_user_profile($user_info); ?> <input type="submit" name="user_avatar_edit_submit" value="OK"/> </form> <?php get_footer(); ?> 

Примечание редактора. Следующий фрагмент, как представляется, содержит исходный код частично из следующего плагина Simple Local Avatars .

 <?php global $current_user; $user_id = get_current_user_id(); $user_last = get_user_meta($user_id); $unserialize = unserialize($user_last['simple_local_avatar'][0]); class Simple_Local_Avatarssss { private $user_id_being_edited, $avatar_upload_error, $remove_nonce, $avatar_ratings; public $options; public function unique_filename_callback( $dir, $name, $ext ) { $user = get_user_by( 'id', (int) $this->user_id_being_edited ); $name = $base_name = sanitize_file_name( $user->display_name . '_avatar_' . time() ); // ensure no conflicts with existing file names $number = 1; while ( file_exists( $dir . "/$name$ext" ) ) { $name = $base_name . '_' . $number; $number++; } return $name . $ext; } private function assign_new_user_avatar( $url_or_media_id, $user_id ) { // delete the old avatar $this->avatar_delete( $user_id ); // delete old images if successful $meta_value = array(); // set the new avatar if ( is_int( $url_or_media_id ) ) { $meta_value['media_id'] = $url_or_media_id; $url_or_media_id = wp_get_attachment_url( $url_or_media_id ); } $meta_value['full'] = $url_or_media_id; update_user_meta( $user_id, 'simple_local_avatar', $meta_value ); // save user information (overwriting old) } public function avatar_delete( $user_id ) { $old_avatars = (array) get_user_meta( $user_id, 'simple_local_avatar', true ); if ( empty( $old_avatars ) ) return; // if it was uploaded media, don't erase the full size or try to erase an the ID if ( array_key_exists( 'media_id', $old_avatars ) ) unset( $old_avatars['media_id'], $old_avatars['full'] ); if ( ! empty( $old_avatars ) ) { $upload_path = wp_upload_dir(); foreach ($old_avatars as $old_avatar ) { // derive the path for the file based on the upload directory $old_avatar_path = str_replace( $upload_path['baseurl'], $upload_path['basedir'], $old_avatar ); if ( file_exists( $old_avatar_path ) ) unlink( $old_avatar_path ); } } delete_user_meta( $user_id, 'simple_local_avatar' ); delete_user_meta( $user_id, 'simple_local_avatar_rating' ); } public function edit_user_profile_update( $file , $user_id ) { $_FILES['simple-local-avatar'] = $file['file']; // check for uploaded files if ( ! empty( $_FILES['simple-local-avatar']['name'] ) ) : // front end (theme my profile etc) support if ( ! function_exists( 'wp_handle_upload' ) ) require_once( ABSPATH . 'wp-admin/includes/file.php' ); $this->user_id_being_edited = $user_id; // make user_id known to unique_filename_callback function $avatar = wp_handle_upload( $_FILES['simple-local-avatar'], array( 'mimes' => array( 'jpg|jpeg|jpe' => 'image/jpeg', 'gif' => 'image/gif', 'png' => 'image/png', ), 'test_form' => false, 'unique_filename_callback' => array( $this, 'unique_filename_callback' ) ) ); if ( empty($avatar['file']) ) { // handle failures switch ( $avatar['error'] ) { case 'File type does not meet security guidelines. Try another.' : $this->avatar_upload_error = __('Please upload a valid image file for the avatar.','simple-local-avatars'); break; default : $this->avatar_upload_error = '<strong>' . __('There was an error uploading the avatar:','simple-local-avatars') . '</strong> ' . esc_html( $avatar['error'] ); } return; } $this->assign_new_user_avatar( $avatar['url'], $user_id ); endif; // handle rating if ( isset( $avatar['url'] ) || $avatar = get_user_meta( $user_id, 'simple_local_avatar', true ) ) { if ( empty( $_POST['simple_local_avatar_rating'] ) || ! array_key_exists( $_POST['simple_local_avatar_rating'], $this->avatar_ratings ) ) // $_POST['simple_local_avatar_rating'] = key( $this->avatar_ratings ); update_user_meta( $user_id, 'simple_local_avatar_rating', $_POST['simple_local_avatar_rating'] ); return 1; } } } if(isset($_POST['sub'])) { $fname=$_FILES['file']['name']; $ftype=$_FILES['file']['type']; } if(isset($_FILES['file']['name']) && !empty($_FILES['file']['name']) ){ $simple_local_avatars = new Simple_Local_Avatarssss; $result = $simple_local_avatars->edit_user_profile_update($_FILES,$user_id); if($result): echo 'Updated'; endif; } ?> <form action="" method="POST" enctype="multipart/form-data"> <?php echo get_avatar( $user_id, 96, $default, $alt ); ?><br /><br /> <input type="file" name="file"><br /><br /> <input style="float: left;" type="submit" name="sub" value="Upload Image"> </form>