Home » wordpress » Un widget wordpress pour afficher vos derniers articles dans un custom post type
Un widget wordpress pour afficher vos derniers articles dans un custom post type
Comment afficher ses derniers articles dans un custom post type ?
Dans ce tuto, je partage le code d’un widget pour afficher les derniers articles du blog au sein d’un custom post. Selon la structure du thème, il se peut que les articles du blog soient en relation directe avec le sujet des custom post type. Sur un site de tutoriels informatiques par exemple, on peut crée un custom post pour des formation, et avoir des articles du blog qui parlent des même sujet. On peut dans ce cas vouloir afficher les articles qui parlent du même sujet.
L’idéal, comme on va le voir ici, c’est de pouvoir afficher les articles en fonction de leur catégorie, en lien avec le « term » de la taxonomie de votre custom post type.
Ce que va contenir notre widget
Notre widget doit contenir :
un titre
un champ select pour pouvoir choisir la catégorie
une case à cocher pour choisir un affichage aléatoire
Un champ texte pour le nombre de post à afficher
Le rendu dans le backoffice
Le rendu en front
Le code du widget
class Cc_Related_Posts_Widget extends WP_Widget {
/* * Register widget with WordPress. */
function __construct() { parent::__construct( 'cc_related_posts_widget', // Base ID __( 'Cc Last blog posts in formation page', 'text_domain' ), // Name array( 'description' => __( 'Shows last posts.', 'text_domain' ), ) // Args ); }
/** * Front-end display of widget. */
public function widget( $args, $instance ) { echo $args['before_widget']; if ( ! empty( $instance['title'] ) ) { echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title']; } // Catch result $cat_id = $instance['cat_id']; $random = $instance['rand'] ? true : false; $number = ( ! empty( $instance['number'] ) ) ? absint( $instance['number'] ) : 5; if( true === $random ) { $arguments=array( 'posts_per_page'=> $number , // Number of related posts that will be shown. 'orderby' => 'date', 'order' => 'rand', 'cat' => $cat_id, );
}else{ $arguments = array( 'posts_per_page'=> $number , // Number of related posts that will be shown. 'orderby' => 'date', 'order' => 'DESC', 'cat' => $cat_id, ); }
$my_query = new WP_Query($arguments); if( $my_query->have_posts() ) {
/** * Sanitize widget form values as they are saved. * * @see WP_Widget::update() * * @param array $new_instance Values just sent to be saved. * @param array $old_instance Previously saved values from database. * * @return array Updated safe values to be saved. */
Les points intéressants dans la fonction widget c’est la boucle conditionnelle, pour afficher les articles soit de manière aléatoire, soit en fonction d’une catégorie
if( true === $random ) { $arguments=array( 'posts_per_page'=> $number , // Number of related posts that will be shown. 'orderby' => 'date', 'order' => 'rand', 'cat' => $cat_id, );
}else{ $arguments = array( 'posts_per_page'=> $number , // Number of related posts that will be shown. 'orderby' => 'date', 'order' => 'DESC', 'cat' => $cat_id, ); }
N’hésitez pas, si vous avez des idées d’amélioration ou des corrections à apporter à ce tuto !