NB : Faire une sauvegarde de votre thème, de votre fichier et/ou votre base de données avant d’ajouter ces fonctions tutoriels.
Publié le : 04 février 2016 - Modifié le : 18 janvier 2022
Temps de lecture : 4 minutes, 18 seconds - 383 mots
Partager la publication "Auteur WordPress : Afficher les articles reliés"
Quelque fois on se fait plaisir et on partage des fonctionnalités aux internautes. Voici un tutoriel WordPress permettant d’afficher les articles reliés par auteur WordPress. Consultez le Codex Author Templates
Il y a deux solution pour le faire… Les deux solutions sont aussi efficaces mais la deuxième est plus facile et plus propre en intégration….
Les articles reliés par auteur WordPress (1ere Solution)
Cette fonction vous permet de faire une requête pour afficher les articles par auteur WordPress. Cette fonction marche pour les articles généraux.
Mais si par exemple vous souhaitez afficher les (Annonces) post types du nom de (ads) par auteur, il suffit d’ajouter vos arguments ‘post_type’ =>’ads’.
Pour le get_the_post_thumbnail
, on choisit la taille du thumbnail souhaité. Vous pouvez mettre thumbnail ou medium, ou une image de taille personnalisée en utilisant la fonction add_image_size
<?php ////////////////////////////////////// // Fonction post reliés author /////////////////////////////////////// function get_author_posts() { global $authordata, $post; // Nous creons une variable qui stocke tous les posts par auteur en excluant l'article consulté sur la page en affichant en aléatoire et un certain nombre $authors_posts = get_posts( array( 'category__in' => wp_get_post_categories($post->ID), 'author' => $authordata->ID, 'post__not_in' => array( $post->ID ), 'posts_per_page' => 6, 'orderby' => 'rand' ) ); // Nous commencons a afficher nos resultats $output =''; foreach ( $authors_posts as $authors_post ) { // Nous allons chercher le title du post $parent_title = get_the_title($authors_post->ID); $excerpt = get_the_excerpt($authors_post->ID); // Nous commencons a afficher nos resultats $output .= ''; $output .= get_the_post_thumbnail($authors_post->ID,’thumbnail’); $output .= '' . apply_filters( ‘the_title’, $authors_post->post_title, $authors_post->ID ) . ''; $output .= ''; } $output .= ''; // On retourne tous les résultats return $output; } ?>
Vous remarquerez que il y a dans la requête le ‘category__in’ => wp_get_post_categories($post->ID) qui permet domnc d’afficher les articles reliés dans la ou les catégories consulté uniquement
On affiche dans le template single.php ou le single-post-type.php par exemple
<?php echo get_author_posts(); ?>
La deuxième solution
Voici la fonction. Elle est plus facile car nous faisons une requête simple avec des arguments dans un tableau en retournant les résultats dans une variable $authors_posts. C’est plus propre et plus lisible.
Vous remarquez que nous définissons un Post_type qui correspond aux post, mais vous pouvez le changer par le nom de votre POST_TYPE et ajouter d’autres arguments.
Le ‘post__not_in’ => array( $post->ID ), permets d’exclure l’article ou le single post type consulté puisque par logique on veut pas le retrouver dans les articles reliés.
On pourrait même rajouté la catégorie des posts reliés par auteur WordPress en ajoutant cet argument ‘category’ => ‘category id’. Remplacer category id par votre id de la catégorie.
function get_theme_author_posts( $items = 1 ) { global $authordata, $post; $authors_posts = get_posts( array( 'author' => $authordata->ID, 'post__not_in' => array( $post->ID ), 'posts_per_page' => $items, 'post_type' => 'post' ) ); return $authors_posts; }
Ce qu’on affiche dans le template single.php ou le single-post-type.php
<?php $related_posts = get_theme_author_posts(3); foreach( $related_posts as $post ) : setup_postdata( $post ); ?>
Comme si vous consultez les articles d’un auteur, vous savez le permalien par default est en anglais et est author.
Ex : http://www.viamultimedia.ca/author/tony
Si vous souhaitez changer le permalien des auteurs, il suffit de faire un wp_rewrite des auteurs.
////////////////////////////////////// // Fonction rewrite url author /////////////////////////////////////// add_action('init', 'via_author_base'); function via_author_base() { global $wp_rewrite; $author_slug = 'auteur'; // change slug name $wp_rewrite->author_base = $author_slug; }
Ce qui donne concrètement un nouveau slug….
Ex : http://www.viamultimedia.ca/auteur/tony
Ajouter un beau style css et voila on n’affiche bien les articles ou Post type reliés par auteur WordPress !