Прямо сейчас вы можете сделать свое отображаемое имя как угодно, даже выдать себя за администратора. Можно ли сделать отображаемое имя уникальным?
13
Насколько я знаю, все, что вы можете сделать, это отфильтровать отображаемое имя pre_user_display_name
и проверить, существует ли оно уже. К сожалению WP_User_Query
, не поддерживает запросы через display_name
, поэтому мы также должны добавить к WHERE
предложению через pre_user_query
. Кроме того, я не могу придумать элегантного способа справиться со случаем, когда display_name
уже существует, не возвращая ничего, так как через фильтр мы не знаем, к какому пользователю прикреплено это потенциальное отображаемое имя. или, может быть, я просто устал и упускаю что-то очевидное! Во всяком случае, вот быстрый тест, который я создал:
class wpa82239_display_name {
private $display_name;
public function __construct(){
add_filter( 'pre_user_display_name', array( $this, 'display_name_filter' ) );
}
public function display_name_filter( $display_name ){
$this->display_name = $display_name;
add_action( 'pre_user_query', array( $this, 'user_query_filter' ) );
$args = array(
'number' => 1,
'fields' => 'ID'
);
$user_search = new WP_User_Query( $args );
remove_action( 'pre_user_query', array( $this, 'user_query_filter' ) );
if( 0 == $user_search->total_users )
return $display_name;
return null;
}
public function user_query_filter( $query ){
global $wpdb;
$query->query_where .= $wpdb->prepare(
" AND $wpdb->users.display_name = %s",
$this->display_name
);
}
}
$wpa82239_display_name = new wpa82239_display_name();
Он довольно грязный, но делает свою работу, просто поместите его в вашу тему functions.php на одном сайте или в файле functions.php внутри папки mu-plugins на мультисайте.
Сценарий также будет сканировать существующих пользователей (если на вашем сайте их уже много), и любые неуникальные отображаемые имена будут обновлены и заменены именем пользователя.
Я знаю, что это не совсем идеально, но всегда приветствуются любые предложения по работе с существующими пользователями или улучшениям.
источник
Попробуй это:
Ссылка: http://bappi-d-great.com/unique-display-name-and-nickname-in-wordpress/
источник