Page archive auteur, comment la modifier et y inclure une biographie

WordPress crée automatiquement une page d’archive pour chacun des auteurs d’articles de vos sites. Le CMS construit automatiquement une URL de type « https://monsite.com/auteur/antoine-pitula/ » et reprend tout aussi automatiquement les articles de l’auteur en question. Dans un souci d’optimisation du référencement naturel d’un site, on tente de se débarrasser de ces pages d’archives de différentes manières mais, pour certains sites éditoriaux avec de nombreux auteurs, modifier cette page pour qu’elle affiche du contenu plus qualitatif qu’une simple liste d’article semble de mise, à défaut de désindexation. Voici donc comment s’y prendre.

  1.  Créer des champs personnalisés dans le profil
  2. Créer plus de champs personnalisés
  3.  Comment modifier archives auteur ?
  4. Inclure d’autres champs dans les archives auteur
  5.  Comment éviter le duplicate content ?

Avant propos, travailler avec un thème enfant, une pratique conseillée

Dans cet article, nous allons ajouter et modifier du code dans différents fichiers de WordPress. La pratique la plus saine est de travailler avec un thème enfant afin de préserver ses modifications en cas de mises à jour tout en préservant les fichiers sources de votre thème principal.

Création de champs de présentation des auteurs personnalisé

Dans cette première étape, nous allons créer un champ de présentation personnalisé dans la page de profil du backcoffice. Cette action nous permet de l’intégration automatique des biographies dans les parties suivantes du tutoriel. Ainsi, chaque auteur pourra de lui-même écrire sa propre bio et la modifier, cette dernière sera automatiquement mise à jour dans sa page d’archive sans avoir à remodifier les fichiers php de notre FTP.

Dans le fichier function.php de votre thème enfant, coller le code suivant (soyez attentifs à ce que le code soit inclus entre les balises <?php  ?>):

function extra_user_profile_fields( $user ) { ?>

    <h3>Biographies persnnalisés</h3>
    <table class="form-table">
        <tbody>
            <tr>
                <th>présentation</th>

                <td><textarea class="present-text" id="present" name="present" value="<?php echo esc_attr( get_the_author_meta( 'present', $user->ID ) ); ?>"><?php echo esc_attr( get_the_author_meta( 'present', $user->ID ) ); ?></textarea></td>
            </tr>

        </tbody>
    </table>
    
<?php }
add_action( 'show_user_profile', 'extra_user_profile_fields' );
add_action( 'edit_user_profile', 'extra_user_profile_fields' );


function save_extra_user_profile_fields( $user_id ) {

    if ( !current_user_can( 'edit_user', $user_id ) ) { 
        return false; 
    }
    update_user_meta( $user_id, 'present', $_POST['present'] );
    
}
add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );

Une fois votre fichier mis à jour, vous pourrez observer qu’un nouveau champ est apparu en bas de la page de profil du backoffice.

Créer d’avantages de champs de profil personnalisés

Si vous avez les bases en HTML et en PHP, vous pouvez également créer facilement d’autres champs. Par exemple, ajoutons un champ pour le numéro de téléphone des auteurs. Dans la première partie du code, collons le code suivant juste avant la balise </tbody> :

<tr>
    <th>Télépone</th>
    <td><input type="text" name="telephone" class="telephone" id="telephone" value="<?php echo esc_attr( get_the_author_meta( 'telephone', $user->ID ) ); ?>"></td>
</tr>

Cela crée visuellement le champ dans le backoffice, notez également que nous avons utilisé non plus un <textarea>, mais un <input>, les deux sont valables.

Un peu plus bas, au sein de la fonction nommée « save_extra_user_profile_fields », nous allons inclure le code suivant :

update_user_meta($user_id, 'telephone', $_POST['telephone']);

Cette fonction sert à enregistrer le contenu de ce champ dans le profil de l’utilisateur, afin que nous puissions appeler ce contenu sur d’autres pages.

Modifier la page archive auteur et inclure les champs de biographie

Cette étape va nous permettre d’appeler les champs de biographie créés précédemment sur les pages d’archive auteur. Chaque utilisateur enregistré sur votre site WordPress possède un ID, quel que soit son rôle. Il va dans un premier temps nous falloir chercher l’ID de chacun des auteurs, la méthode la plus simple étant d’aller dans le backoffice>Utilisateurs et de cliquer sur l’un d’entre eux. Observez l’URL de cette page, elle se présente sous cette forme :

https://monsite.com/wp-admin/user-edit.php?user_id=9&wp_http_referer=%2Fwp-admin%2Fusers.php

Cette URL contient toujours user_id= suivi de l’identifiant de l’utilisateur, dans l’exemple ci-dessus, l’ID est 9. Sachez simplement que cette méthode ne vous permet pas de voir votre propre ID, passez par un autre compte pour le voir.

Une fois tous les ID d’auteurs notés, il nous faut maintenant créer un fichier php pour chacun d’entre eux dans notre thème enfant. Ces fichiers doivent se nommer author-{ID}.php. Pour l’auteur ayant l’identifiant 5, le fichier se nommera donc author-5.php. Dans chacun de ces fichiers, intégrez l’intégralité du contenu de single.php (qui sera présent soit dans votre thème enfant, soit dans le thème principal. La page d’auteur se comporte de la même manière que n’importe quelle archive de catégorie, elle se concentre juste sur un seul auteur correspondant à l’ID du nom de fichier.

Dans ce code fraîchement importé, nous allons inclure de quoi modifier à notre convenance. L’endroit où appliquer ces changements changera en fonction du thème, mais il est en général préférable de travailler au-dessus de la fonction have_post(); qui appelle la liste d’articles. Voici le code :

<?php $curauth = (isset($_GET['author_name'])) ? get_user_by('slug', $author_name) : get_userdata(intval($author)); ?>
<h1 class="author-name"><?php the_author_meta( 'nickname' ); ?></h1>
<div class="present-auteur">
	<? echo get_avatar( get_the_author_meta('user_email'), $size = '150'); ?>
	<p><?php echo $curauth->present; ?></p>
</div>
<h2>Voir les articles de <?php the_author_meta( 'nickname' ); ?> : </h2>

Regardons de plus près :

  • La première ligne récupère les informations du profil de l’auteur
  • la fonction the_author_meta(‘nickname’); permet d’afficher les informations d’un auteur, ici le nom, que nous mettons en h1
  • nous créons une div avec la class « present-auteur » pour modifier la présentation en css au besoin
  • la fonction get_avatar(); affiche l’avatar de l’utilisateur avec ici une taille de 150px (modifiable avec la valeur $size)
  • $curauth->present; nous permet d’afficher le contenu du champ de biographie que nous avons créé dans le profil
  • Enfin nous créons un h2 dans lequel nous utilisons à nouveau the_author_meta();

Appeler d’autres champs personnalisés dans la page archive auteurs

Si vous voulez afficher plus d’informations des auteurs, il est possible et relativement simple d’appeler d’autres champs personnalisés. Un peu plus haut, nous avons créé un champ pour le numéro de téléphone. Admettons que nous désirons l’afficher sous le h1 de la page. Il suffit de coller :

<p><?php echo $curauth->telephone; ?></p>

Éviter le duplicate content dû à la pagination

Parlons SEO ! À partir d’un certain nombre d’articles, toute page d’archive utilise une pagination, cette option est utile pour limiter le temps de chargement de ces pages. Le souci c’est que notre petite modification va se dupliquer sur autant de pages que de celles créées par la pagination. Une des solutions, et certainement la plus directe, revient à augmenter le nombre d’articles affichés sur une page d’archive auteur. Dans function.php de votre thème enfant, collez le code suivant :

/*----erase pagination from author pages----*/
function wpsites_query( $query ) {
if ( $query->is_author() && $query->is_main_query() && !is_admin() ) {
        $query->set( 'posts_per_page', 100 );
    }
}
add_action( 'pre_get_posts', 'wpsites_query' );

Ce code affiche donc 100 articles à la fois sur les pages auteur, vous pouvez modifier cette valeur à volonté.

A propos de l'auteur(e)