Τυχαίο Άρθρο σε Widget
Την προηγούμενη φορά σας είχα shortcode. Τώρα σας έχω widget. Θα εμφανίζει τις πρώτες λέξεις από ένα τυχαία επιλεγμένο άρθρο μαζί με τον τίτλο του και ένα link για το ίδιο το άρθρο. Δείτε τον κώδικα και τον συζητάμε μετά:
<?php
/**
* Plugin Name: Random Article Widget
* Description: Displays a random article's excerpt in a widget
* Version: 0.1.0
* Author: geomagas
*
*/
add_action('widgets_init',function(){register_widget('RandomArticle_Widget');});
class RandomArticle_Widget extends WP_Widget
{
function __construct()
{
parent::__construct(
'random-article-widget',
'Random Article Widget',
array('description',"A widget that displays a random article's excerpt")
);
}
function widget($args,$instance)
{
$posts=get_posts();
if($n=count($posts))
{
$post=$posts[rand(0,$n-1)];
echo $args['before_widget'];
echo $args['before_title'].$post->post_title.$args['after_title'];
$xrpt=wp_trim_words(do_shortcode($post->post_content));
$url=get_permalink($post->ID);
echo "<p>$xrpt <a href='$url'>Read More »</a></p>";
echo $args['after_widget'];
}
}
}
Η κατασκευή ενός widget περιλαμβάνει δύο βήματα: τον ορισμό του και την καταχώρησή του. Για να το καταχωρήσουμε, θα πρέπει να καλέσουμε την register_widget() δίνοντας σαν παράμετρο το όνομα της κλάσης του. Και αυτό το κάνουμε κατά το widgets_init action.
Τώρα, για να το ορίσουμε, χρειάζεται να φτιάξουμε μία κλάση, επέκταση της WP_Widget. Κατ’ ελάχιστο, θα χρειαστεί να υλοποιήσουμε δύο από τις μεθόδους της νέας κλάσης: τον constructor και την widget().
Ο constructor μας απλά θα καλέσει τον constructor του WP_Widget με τρεις παραμέτρους:
- το αναγνωριστικό του νέου widget
- τον τίτλο του, όπως θα φαίνεται στο διαχειριστικό, και
- ένα array με άλλες παραμέτρους. Εδώ επιλέγουμε να περάσουμε μόνο την περιγραφή του, όπως θα φαίνεται στο διαχειριστικό.
Η widget() είναι η μέθοδος που είναι υπεύθυνη για την παρουσίαση του widget. Η πρώτη της παράμετρος περιέχει διάφορες τιμές που αφορούν κυρίως το ενεργό theme, ενώ η δεύτερη αφορά το συγκεκριμένο στιγμιότυπο (θυμηθείτε ότι μπορεί να προβάλλονται πολλά στιγμιότυπα του ίδιου widget συγχρόνως, στην ίδια σελίδα).
Αφού πάρουμε όλα τα άρθρα χρησιμοποιώντας την get_posts(), και με την προϋπόθεση ότι υπάρχει τουλάχιστον ένα, επιλέγουμε ένα στην τύχη. Έπειτα, εκτυπώνουμε τον τίτλο, τις πρώτες λέξεις (χρησιμοποιώντας την wp_trim_words()) και ένα link μετάβασης στο ίδιο το άρθρο.

One Comment