Intereting Posts
Как я могу очистить кэширование oEmbed для YouTube в сообщениях по мере их загрузки Использует ли codex.wordpress.org какой-нибудь плагин? Если да, то какой плагин? Заказывать сообщения по таксономии и метазначению Отображение переменной цены woocommerce (обычная цена и цена продажи) Отображение всех настраиваемых полей на почте, за исключением некоторых Как сохранить разрывы строк из текстовых полей профиля пользователя Используйте wp_nav_menu для отображения ВСЕХ страниц Два запроса для поиска WP_User_Query работают отлично, но не вместе Meta_Query отказывается возвращать результаты Как поместить текст заполнителя в область ввода основного сообщения? как создать cron, который ежедневно публикует события в WordPress? Можно ли переписать URL-адреса в этой ситуации? Как получить таксономию родителей? Перенаправление веб-сайта на прежнее доменное имя Создать тему автоматически выбрать меню по умолчанию

Изменение ограничения имени пользователя с четырех до менее символов

Я хочу создать учетную запись пользователя на моей многосайтовой установке WordPress с именем пользователя менее 4 символов. Но поскольку WordPress имеет ограничение на имена пользователей, по крайней мере, на 4 символа, это сообщение об ошибке отображается:

Имя пользователя должно быть не менее 4 символов.

Я нашел решение, содержащее папку mu-plugins в папке wp-content, но это не сработает. Есть ли способ, который позволил бы мне создать учетную запись пользователя с именем пользователя менее 4 символов?

Solutions Collecting From Web of "Изменение ограничения имени пользователя с четырех до менее символов"

Вы можете фильтровать 'wpmu_validate_user_signup' и проверить, соответствует ли код ошибки предупреждению на 4 символа. Затем просто отключите код ошибки.

Пример плагина:

 <?php # -*- coding: utf-8 -*- /* Plugin Name: Allow short user names for multi site. */ add_filter( 'wpmu_validate_user_signup', 'wpse_59760_short_user_names' ); /** * Allow very short user names. * * @wp-hook wpmu_validate_user_signup * @param array $result * @return array */ function wpse_59760_short_user_names( $result ) { $error_name = $result[ 'errors' ]->get_error_message( 'user_name' ); if ( empty ( $error_name ) or $error_name !== __( 'Username must be at least 4 characters.' ) ) { return $result; } unset ( $result[ 'errors' ]->errors[ 'user_name' ] ); return $result; } 

Поскольку для имен пользователей может быть более одной ошибки, принятый ответ может удалить ошибки, которые мы хотели бы сохранить. Например, теперь вводится имя пользователя 123, тогда как оно должно по-прежнему выдавать сообщение об ошибке 'Sorry, usernames must have letters too!'

Измененный пример кода, чтобы исправить это:

 /* Plugin Name: Allow short user names for multi site. */ add_filter( 'wpmu_validate_user_signup', 'wpse_59760_short_user_names' ); /** * Allow very short user names. * * @wp-hook wpmu_validate_user_signup * @param array $result * @return array */ function wpse_59760_short_user_names( $result ) { $error_name = $result[ 'errors' ]->get_error_messages( 'user_name' ); if ( empty ( $error_name ) or false===$key=array_search( __( 'Username must be at least 4 characters.' ), $error_name) ) { return $result; } // only remove the error we are disabling, leaving all others unset ( $result[ 'errors' ]->errors[ 'user_name' ][$key] ); /** * re-sequence errors in case a non sequential array matters * eg if a core change put this message in element 0 then get_error_message() would not behave as expected) */ $result[ 'errors' ]->errors[ 'user_name' ] = array_values( $result[ 'errors' ]->errors[ 'user_name' ] ); return $result; } 

EDIT : Это работает в WordPress до версии 3.9.6 и снова в 4.2

Обратите внимание, что это не работает в WordPress 4.0 или 4.1, потому что https://core.trac.wordpress.org/ticket/22234 сделал ошибки частной переменной. Хотя метод магии __get был предоставлен «для обратной совместимости», для массивов он возвращает копию массива (а не ссылку на оригинал), которая затем не редактируется. Если вы включили WP_DEBUG, вы получите уведомление PHP: «Уведомление: косвенная модификация перегруженного свойства WP_Error :: $ errors не влияет на / path / to / plugin on line xxx», в противном случае код терпит неудачу и не имеет эффекта ,

Он снова работает в версии 4.2, потому что https://core.trac.wordpress.org/ticket/30891 вернул изменение для WP_Error и ряд других мест в ядре, хотя и не так, чтобы такой код работал.

Для WordPress> = 4.1, который дал нам метод удаления, это также работает:

 function wpse_59760_short_user_names( $result ) { $error_name = $result[ 'errors' ]->get_error_messages( 'user_name' ); if ( empty ( $error_name ) or false===$key=array_search( __( 'Username must be at least 4 characters.' ), $error_name) ) { return $result; } // remember any error data $data = $result[ 'errors' ]->get_error_data( 'user_name' ); // remove all user name errors $result[ 'errors' ]->remove( 'user_name' ); // add back in any other user name errors we want to keep foreach ( $error_name as $index=>$message ) { if ( $index !== $key ) $result[ 'errors' ]->add( 'user_name', $message ); } // restore any user_name error data that was present if ( !empty( $data ) ) $result[ 'errors' ]->add_data( $data, 'user_name' ); return $result; }