[AUTOMATIQUE] Cet article a plus de 5 ans.
Il se peut donc que les informations qu'il fournit ne soient plus totalement exactes.

Dans WordPress, toutes les informations d’un utilisateur sont stockées dans son profil. Les commentaires qu’il a laissé, les articles qu’il a publiés, et informations générales de profils (je reviendrais sur ces informations dans un tutoriel futur).

Nous allons voir comment créer une page de profil publique pour tous les utilisateurs de votre site WordPress (du moins, ceux qui ont créé un compte sur celui-ci).

Le fonctionnement

WordPress offre de nombreuses fonctions qu’il faut savoir activer et/ou utiliser en modifiant son thème (template). La fonctionnalité author en fait partie. Lorsque vous êtes auteur d’un article, votre nom est rattaché à cet article, lorsque vous postez un commentaire sur un article, le commentaire est également attribué à votre profil.

Nous allons donc tout simplement récupérer ces informations « de navigation » sur le site pour les afficher très simplement.

Pour accéder à ce profil il faut créer une nouvelle page : author.php qui devra intégrer le header, la sidebar et le footer de votre template.

La mise en place

Commençons par créer le fichier en question : author.php

Comme je vous l’ai expliqué ci-dessus il faut récupérer votre structure de page avec les balises classiques de WordPress :

<?php get_header(); ?>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

Personnellement, pour créer ce fichier author.php, je fais une copie de single.php que je renomme tout simplement.

Je récupère ainsi toute la structure de ma page et je n’ai plus qu’à coller le code que je vais vous donner en lieu et place de :

<?php the_content();?>

Voilà maintenant le code qui nous intéresse :

<h5>Articles commentés récemment</h5>
<?php $number=1000;
$authorid = $curauth->ID;
$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_approved = '1' and user_id='$authorid' ORDER BY comment_date_gmt DESC LIMIT $number");
?>

L'utilisateur à poster des commentaires dans les articles suivants :
<div id="lastcom">
<ul>
	<li><?php if ( $comments ) : foreach ( $comments as $comment) :
echo '</li>
	<li><a href="'. get_comment_link($comment->comment_ID) . '">' . get_the_title($comment->comment_post_ID) . '</a></li>
	<li>';
endforeach;
else:
?>
<?php echo "Il n'y a actuellement aucun commentaire."; ?>
<?php endif; ?></li>
</ul>
</div>
<div class="les_articles"><?php $blog_category = get_option(THEME_NAME.'_blog_include_category');
$categories = get_categories('orderby=name');
$include_category = null;
$slug = get_page_link();foreach ($categories as $category_list) {
if(!empty($blog_category[0][$category_list->cat_ID])) {
$cat = $category_list->cat_ID.",";
$include_category = $include_category.$cat;
}
}

$value = get_option(THEME_NAME.'_blog_number_of_posts');
$paged = (get_query_var('paged')) ? get_query_var('paged') : 0;
$args=array('cat'=>$include_category, 'post_status' => 'publish','paged' => $paged,'posts_per_page' => get_option('posts_per_page'),'ignore_sticky_posts'=> 1);

//La requête
query_posts($args);
$i=1;

//La boucle
if ( have_posts() ) : while ( have_posts() ) : the_post();
$data = get_post_meta( $post->ID, GD_THEME, true );
$title = the_title('','',FALSE);
$title = strtoupper($title);
if ($title&lt;>substr($title,0,165)) {
$dots = "...";
}else {
$dots = "";
}
?>
<div class="blog-one-post"><?php $imagedata = simplexml_load_string(get_the_post_thumbnail()); ?>
<?php $comments = get_comments("post_id=$post->ID");
$num_of_comments = 0;
foreach($categories as $category){
if($category->cat_ID == $id){
$cat_slug = $category->slug;
}
}
foreach($comments as $comm) :
$num_of_comments++;
endforeach;
$written = $post->post_author;
$user = get_user_by('id',$written);
$written = $user->nickname;
?>
<div class="titre_article"></div>

<div class="cadre_image"></div>

<div class="infos_article">
<div class="infos-text">Auteur : <?php the_author_posts_link(); ?></div>
<div class="infos-text">Date de publication : <?php the_time('d');?><?php the_time('F');?> <?php the_time('Y');?></div>
<div class="infos-text">Commentaire(s) :<?php echo $num_of_comments; ?></div>
</div>
<div class="appercu_article">
<div class="preview"></div>
<a class="lire_plus" href="&lt;?php the_permalink(); ?>">Lire</a>

</div>
</div>
<?php endwhile;	?>
<?php wp_paginate() //pour ajouter la fonction de navigation par pages?>
<?php else: ?>
<?php endif; ?>

</div>

Vous pouvez voir qu’on importe directement toutes les informations d’un article, y compris sa miniature. Je vous conseils de reprendre la boucle qui se trouve dans votre fichier archive.php et de la modifier en fonction du résultat que vous attendez. Pour le reste je vous laisse éditer votre style comme bon vous semble !

Il est maintenant possible d’accéder au profil public comme ceci :

http://votresite.fr/author/le_nom_d_utilisateur/

Voilà, c’est terminé, je vais publier un nouveau petit tutoriel d’ici peu pour vous expliquer comment intégrer un petit encart « à propos de l’auteur » en fin d’article et pouvoir ainsi accéder à sa page auteur.

Article rédigé parBrice CAPOBIANCO

Autodidacte passionné par WordPress. J'aime apprendre et créer pour ensuite partager !

Coorganisateur des Meetups WordPress Rennes et fondateur de bweb.
Partager cet article

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Afficher les 6 commentaires

6 commentaires

    • Ravis que ce vieil article puisse encore servir. Je vais essayer d’en rédiger un nouveau assez vite pour aller plus loin dans la personnalisation des pages auteurs. A bientôt donc 😉

  1. Et bien moi , j’utilise un thème très pratique mais sans page auteur …
    Et pour le ref sur google de son blog il paraît qu’il faut meiux en avoir une, c’est pourquoi j’ai copié/collé ce code, et après quelques modifs, je suis bien content du rédultat.
    Merci beaucoup pour le partage !!

  2. Merci pour tes compliments et pour ton aide.
    Pas évident de faire les choses bien qu’on on écrit un blog pour la première fois et qu’on est qu’un amateur ^^
    En tout cas merci pour l’attention que tu portes à mon site.

    EDIT : Je fais une mise à jour du poste selon tes recommandations 😉

  3. Bonjour Brice,
    Tes articles sont très intéressants mais tu te mets pas à la place de l’utilisateur final et je pense que tu ne testes pas tes scripts en dehors de ton site.
    J’ai fait un copié/coller pour créer author.php et j’ai pleins d’erreurs.
    N’ajoute pas d’images dans ton exemple si tu ne les proposes pas en téléchargement ^^
    Plus embêtant, il y a des erreurs de php. Je te donne le 1er qui m’a valu une erreur :
    foreach((get_the_category()) as $category) {
    $post_category = $category->cat_name;
    $post_category_id = $category->cat_ID;
    $cat_slug=get_cat_slug($post_category_id);
    }

    Que j’ai remplacé par :
    foreach($categories as $category){
    if($category->cat_ID == $id){
    $cat_slug = $category->slug;
    }
    }

    C’est un plaisir de parcourir ton site 🙂
    PS : Ton captcha est mal placé 😉