web-dev-qa-db-fra.com

Changer l'ordre par défaut du nom d'affichage

Le tableau de bord WordPress offre à l’utilisateur la possibilité de choisir si son nom est affiché en tant que Prénom Nom ou plusieurs autres options avec Prénom Nom, ordre par défaut.

J'aimerais que cette valeur par défaut soit changée en Nom de famille Prénom.

Quelqu'un peut-il suggérer comment cela peut être fait?

2
togethernet

Autant que je sache, l'option par défaut dans la liste déroulante des noms d'affichage est définie sur la valeur actuelle du nom d'affichage de l'utilisateur.

Ainsi, si nous définissons l'utilisateur avec display_name sur "Création", il sera utilisé par défaut.

Cela peut être fait en accrochant user_register:

add_action('user_register', 'last_name_first');
function last_name_first( $uid ) {  
  remove_action('user_register', 'last_name_first');
  $user = new WP_User($uid);
  $first = $user->first_name;
  $last = $user->last_name;
  $full = trim("{$last} {$first}");
  if ( ! empty( $full ) ) {
    global $wpdb;
    $wpdb->update(
      $wpdb->users,
      array( 'display_name' => $full ), array( 'ID' => $uid ),
      array('%s'), array('%d')
    );
  }

Toutefois, cela affectera le nom affiché sur le serveur, sur le serveur, dans la liste des utilisateurs, sous la colonne "Nom", nous verrons toujours "Prénom Nom".

Cela peut être modifié en utilisant les filtres 'manage_users_columns' et 'manage_users_custom_column', de manière à remplacer la colonne par défaut 'name' par une colonne personnalisée affichant le champ display_name:

add_filter('manage_users_columns', 'filter_users_colums', 9999);
function filter_users_colums( $cols ) {
  if ( isset($cols['name']) ) {
    $old = $cols;
    $cb = $old['cb'];
    $un = $old['username'];
    unset( $old['cb'], $old['username'], $old['name'] );
    $cols = array_merge( array(
      'cb' => $cb,
      'username' => $un,
      'display_name' => __( 'Name' )
    ), $old);
  }
  return $cols;
}

add_filter('manage_users_custom_column', 'show_diplay_name_as_name', 9999, 3);
function show_diplay_name_as_name ( $now, $column_name, $uid) {
  if ( $column_name === 'display_name' ) {
    $user = new WP_User($uid);
    $now = $user->display_name;
  }
  return $now;
}
1
gmazzap