Lister les articles d’un auteur sous WordPress

Il y a quelques temps, dans les commentaires de l'article 8 plugins pour gérer votre webzine WordPress, me fut posée la question suivante.

Je suis à la recherche d’un plugin pour pouvoir afficher les articles d’un même auteur sur une page ou un article.

Je répondis que je n’utilisais pas un plugin à cet effet, mais une petite portion de code placée dans mon thème WordPress. Histoire d’être constructive, je partage aujourd’hui ce code, qui vous permettra de lister tous les articles d’un auteur sur votre site.

Pour commencer, dans le fichier functions.php de votre thème, insérez le code qui suit :

/* Query page auteur */
function my_post_queries( $query ) {
    // vérifier qu'on n'est pas sur une page admin
    if ( !is_admin() && $query->is_main_query() ) {

        if ( is_author() ) {

            // montrer tous les articles
            $query->set( 'posts_per_page', -1 );
            $query->set( 'post_type', array( 'post' ) );
        }

    }
}
add_action( 'pre_get_posts', 'my_post_queries' );

Pour lister des custom post types, pensez à modifier la ligne commençant par $query->set('post_type') à votre convenance, en changeant le ('post') en ('nom-de-votre-custom-post-type').

Ensuite, dans le dossier de mon thème, un fichier author.php, dans lequel j’ai inséré le code qui suit :

<?php get_header(); ?>
<?php
if(isset($_GET['author_name'])) :
$curauth = get_userdatabylogin($author_name);
else :
$curauth = get_userdata(intval($author));
endif;
?>

<h2>Les articles de <?php echo $curauth->nickname; ?> sur <a href="http://www.https://wpchannel.com/">WordPress Channel</a> :</h2>

<?php while (have_posts()) : the_post(); ?>

<h3> <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a><h3>
<?php the_time('j/n/Y'); ?></span>, <?php $category = get_the_category(); echo $category[0]->cat_name;?>

<?php endwhile; wp_reset_query(); ?>
<?php get_footer(); ?>

WordPress prendra en compte la présence du fichier author.php dans votre thème et s’en servira pour afficher une page de l’auteur qui contiendra « Les articles de (nom / pseudo de l’auteur) sur WordPress Channel », suivi de la liste des articles qu’il a publié, accompagnés de leur date de publication et de la catégorie dans laquelle ils sont classés.

Pensez à changer la phrase d’introduction pour qu’elle s’accorde à votre propre site avant d’uploader le fichier sur votre FTP !

Par Mylène Boyrie

Freelance, passionnée de livres et installée à Bordeaux, Mylène Boyrie est spécialisée dans l’édition print et numérique, ainsi que dans la création de sites Web développés sous WordPress.

Des tutoriels et des bons plans en exclusivité !
  • Ce champ n’est utilisé qu’à des fins de validation et devrait rester inchangé.
3 commentaires
  1. Julio Potier

    Hello

    Il y a un soucis dans le code, les variables $author_name et $author ne sont pas déclarées, et la variable en GET n’est pas utilisée (et le pastacode a buggé on voit PRE et CODE).
    Aussi manque une vérif que $curauth est bien un user trouvé avant de continuer, sinon warning partout 😉
    Bye !

    1. Mylène Boyrie auteur de l’article

      Forcément, j’avais carrément oublié une partie du tuto… Merci de me l’avoir fait remarquer 🙂

  2. andro

    Merci Julio Potier pour la correction j’ai tésté le code le premier jour de la publication du post et ça pas marché mais en revisitant encore une fois le post, j’ai remarqué les modifications maintenant ça marche nickel 😉
    Merci Mylène Boyrie pour le post très utiles pour plusieurs webmaster qui partagent leurs blogs avec d’autres rédacteurs

Laisser un commentaire