À l'heure actuelle, vous pouvez créer votre nom d'affichage comme vous le souhaitez, vous pouvez même vous faire passer pour un administrateur. Est-il possible de rendre le nom d'affichage unique?
13
Pour autant que je sache, tout ce que vous pouvez faire est de filtrer le nom d'affichage via pre_user_display_name
et de vérifier s'il existe déjà. Malheureusement, WP_User_Query
ne prend pas en charge les requêtes par display_name
, nous devons donc également ajouter à la WHERE
clause via pre_user_query
. De plus, il n'y a pas de façon élégante de penser au cas où le display_name
existe déjà au-delà de ne rien retourner, car nous ne savons pas via le filtre à quel utilisateur ce nom d'affichage potentiel est attaché. ou peut-être que je suis juste fatigué et que je manque quelque chose d'évident! Quoi qu'il en soit, voici un test rapide que j'ai créé:
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();
C'est assez sale, mais fait le travail, il suffit de le placer dans votre thème functions.php sur un seul site, ou dans un fichier functions.php à l'intérieur de votre dossier mu-plugins sur un multisite.
Le script analysera également les utilisateurs existants (si votre site en compte déjà plusieurs) et tout nom d'affichage non unique sera mis à jour et remplacé par nom d'utilisateur.
Je sais que ce n'est pas totalement idéal, mais toutes les suggestions pour traiter avec les utilisateurs existants ou les améliorations sont toujours les bienvenues.
la source
Essaye ça:
Lien: http://bappi-d-great.com/unique-display-name-and-nickname-in-wordpress/
la source