Поддержка Плагины Вывод ошибок в профиле

  • На странице профиля в админке при неправильном вводе в стандартные поля выводятся соответствующие ошибки. Я добавил одно поле в профиль для загрузки аватара, но мне хочется, чтобы при при выборе большого изображения выводились соответствующие ошибки. С помощью какого кода можно сообщить WP, что произошла ошибка и он бы вывел эти ошибки, а то выводит просто сообщение «Профиль обновлён»?

    Прикрепляю свой код на всякий:

    function my_show_extra_profile_fields( $user ) { ?>
    
    	<h3 style="margin-bottom:20px;">ваш аватар</h3>
        <div id="avatar">
    		<img src="<?php if(esc_attr( get_the_author_meta( 'foto', $user->ID ) )!='')
    		echo get_bloginfo('home').'/wp-content/uploads/avatars/'.esc_attr(get_the_author_meta('foto', $user->ID ));
    		else
    		echo get_bloginfo('home').'/wp-content/themes/j2/images/avatar.jpg'; ?>" width="100" alt="Аватар" style="float:left;margin-right:15px;">
            <input type="file" value="" name="foto" id="foto" /><br/>
    		<span>Новый аватар должен иметь<br> размер 100x100px и быть не <br> больше 50kb, иначе он не <br>загрузится.</span>
    		<br clear="all" />
    		<input type="submit" class="avatar-save" value="Обновить аватар" name="submit" />
        </div>
    
    <?php }
    
    add_action( 'personal_options_update', 'my_save_extra_profile_fields' );
    add_action( 'edit_user_profile_update', 'my_save_extra_profile_fields' );
    
    add_action('show_user_profile', 'my_show_extra_profile_fields');
    add_action('edit_user_profile', 'my_show_extra_profile_fields');
    
    function my_save_extra_profile_fields( $user_id ) {
    
    if ( !current_user_can( 'edit_user', $user_id ) )
    	return false;
    
    	$image = $_FILES['foto']['tmp_name'];
    	$image_info = GetImageSize($image);
    	if( !empty($image) and ($_FILES["foto"]["size"] < 50*1024) and ($image_info[0]<101) and ($image_info[1]<101))
    	{
    		move_uploaded_file($image, get_option('upload_path').'/avatars/'.md5($image));
    		update_usermeta($user_id, 'foto', md5($image) );
    	}else
    	{
    
    	}
    }

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Например, так: http://wordpress.pastebin.com/D4KZBLr0

    Попутно исправил несколько ошибок:

    • Загрузка у меня вообще не работала, т.к. в форме отсутствовал атрибут enctype="multipart/form-data", а в параметрах функции move_uploaded_file() не хватало полного пути (константы ABSPATH).
    • При обновлении профиля без загрузки аватара функция getimagesize() выводила предупреждение.

    Благодарю, всё действительно работает.
    По поводу enctype=»multipart/form-data»: я использую плагин theme-my-login с модулем вывода страницы профиля в шаблоне и там прописал необходимые данные к форме, но тем не менее спасибо за интересное решение.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Исправил опечатку — во втором условии тоже должно быть 100:

    if ( ($image_info[0]>100) or ($image_info[1]>10) )

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Тема «Вывод ошибок в профиле» закрыта для новых ответов.