Création d'un widget WordPress pour afficher une publication aléatoire • WPShout

By | juillet 7, 2020

Cours WordPress en ligne

Créer un widget pour afficher un post aléatoire utilise deux concepts sous-jacents avec lesquels vous devez vous familiariser pour être bon dans le développement WordPress: utiliser WP_Query objets, et faire des widgets. Si vous ne les avez pas vérifiés auparavant, consultez nos guides rapides qui présentent plus en détail les deux:

Si vous en avez, regardez cette vidéo où j'explique le processus assez simple que j'utilise pour créer un widget de publication aléatoire:

Comment afficher des messages aléatoires dans WordPress

La chose essentielle que notre widget fera est de tirer un message aléatoire de notre base de données WordPress. (Plus précisément, nous allons extraire des publications dont le type de publication est Publication, c'est-à-dire des «publications de blog» par opposition à Pages ou à tout type de publication personnalisé.)

Pour ce faire, nous devons utiliser WP_Query. Si vous êtes nouveau dans cette partie de WordPress, vous pouvez tout savoir à ce sujet dans notre cours gratuit sur l'utilisation WP_Query.

Qu'est-ce qui fait tirer un Aléatoire publication possible définit la requête commandé par propriété à rand. Et voici la requête complète:

$ q_args = tableau (
'orderby' => 'rand',
'posts_per_page' => '1',
);
$ query = new WP_Query ($ q_args);

Ce sont les bases de la façon de rechercher un article WordPress aléatoire dans la base de données WordPress. Le reste de cette démo vous montrera comment créer un widget avec ce comportement.

Comment créer un widget WordPress au hasard

  1. Suivez les étapes répertoriées dans le premier guide rapide sur les widgets.
  2. Au début de la méthode du widget, ajoutez la ligne $ query = new WP_Query. Cela créera pour vous un nouvel objet, $ query, une instanciation de la classe WP_Query (voir le lien WP_Query dans la suite de la lecture si cela vous embrouille).
  3. Ajoutez un argument à la ligne WP_Query. Cela signifie ajouter à la ligne ci-dessus pour qu'elle se lise maintenant: $ query = new WP_Query ($ q_args);. Ensuite, vous devrez également créer le $ q_args variable. Cela ressemblera à:
    $ q_args = tableau (
    'orderby' => 'rand',
    'posts_per_page' => '1',
    
    );

    Cela crée des arguments. posts_per_page fait notre WP_Query ne renvoyez qu'un seul article. orderby => 'rand' fait en sorte que la fonction en obtienne une au hasard (en les mettant toutes dans un ordre aléatoire).

  4. Ensuite, nous devons faire une boucle. Cela signifie que nous devons utiliser while ($ query-> have_posts ()) contenir une série d'instructions. La première de ces instructions sera $ query-> the_post () qui "amorce" la publication pour que nous puissions y accéder avec des fonctions comme le titre(). Ensuite, nous allons remplacer les instructions d'affichage du dernier message, afin que le titre et l'extrait du message soient affichés. Cela conduit à un bloc comme celui-ci:
    echo $ args['before_widget'];
    echo $ args['before_title'];
    le titre();
    echo $ args['after_title'];
    echo get_the_excerpt ();
    echo $ args['after_widget'];
  5. On s'assure qu'après la fin de la boucle on appelle wp_reset_postdata (). Cela annule notre «pollution» $ query-> the_post () pour que le reste du site ne soit pas génial à cause de notre widget. C’est juste une bonne hygiène.

Code complet pour créer notre widget

classe QG_Widget étend WP_Widget 

/ **
* Configure le nom des widgets, etc.
* /
fonction publique __construct () 
$ widget_ops = array (
'classname' => 'qg_widget',
'description' => 'Ceci est un widget pour un guide rapide',
);
parent :: __ construct ('qg_widget', 'Quick Guide Widget', $ widget_ops);


/ **
* Sort le contenu du widget
*
* @param array $ args
* @param array $ instance
* /
widget de fonction publique ($ args, $ instance) 
$ q_args = tableau (
'orderby' => 'rand',
'posts_per_page' => '1',

);
$ query = new WP_Query ($ q_args);
while ($ query-> have_posts ()) 
$ query-> the_post ();
echo $ args['before_widget'];
echo $ args['before_title'];
le titre();
echo $ args['after_title'];
echo get_the_excerpt ();
echo $ args['after_widget'];

wp_reset_postdata ();



add_action ('widgets_init', fonction () 
register_widget ('QG_Widget');
);

Lectures complémentaires sur les widgets et WP_Query

Si vous souhaitez en savoir plus sur les principaux éléments techniques de cette démo, voici deux de nos cours gratuits à découvrir: sur l'utilisation des widgets et sur l'utilisation WP_Query, respectivement:

Créer des widgets WordPress: le guide complet

WP_Query: Comprenez-le, aimez-le!

Merci d'avoir lu!