Internet regorge de ressources et il est difficile de tout regarder. Bien sûr, il y a Twitter pour garder un œil sur les tendances, ou les logiciels de lecture RSS, mais vous êtes comme moi très occupé, c’est parfois ennuyeux d’avoir 20 logiciels ouverts en même temps. C’est pourquoi j’ai décidé d’utiliser mon tableau de bord WordPress en tant que plate-forme mondiale pour avoir un accès rapide à ces flux. Un exemple que je souhaite partager aujourd’hui est de savoir comment créer une métabox RSS personnalisée dans le tableau de bord WordPress.

Voici le résultat final de ce que nous allons créer:

Étape 1: Le plugin

Pour ajouter cette métabox, nous devons créer un plugin. Alors, créez simplement un nouveau dossier appelé «my-dashboard-metaboxes» dans wp-content / plugins / et dans le nouveau dossier créez un fichier appelé my-dashboard-metaboxes.php. Ce fichier sera le fichier principal du plugin. Ouvrez-le dans votre éditeur principal. Le code ci-dessous est le code qui générera le plugin. Rien de bien complexe ici:

<?php
/*
Plugin Name: My Dashboard Metaboxes
Plugin URL: http://remicorson.com/
Description: Adds custom meta boxes on the main admin dashboard
Version: 0.1
Author: Remi Corson
Author URI: http://remicorson.com
Contributors: corsonr
Text Domain: rc_mdm
*/

Étape 2: enregistrement de la Metabox

Maintenant que nous avons un plugin vide (je veux dire un plugin qui ne fait rien), nous devons enregistrer au moins une métabox à afficher sur le tableau de bord WordPress. Pour ce faire, nous devons créer une nouvelle fonction qui accrochera le “wp_dashboard_setup”Crochet. Appelons cette fonction «rc_mdm_register_widgets ()». À l’intérieur de cette fonction, nous devons indiquer à WordPress que nous voulons ajouter une nouvelle métabox, et c’est le but du “wp_add_dashboard_widget ()” fonction. Cette fonction accepte 4 paramètres:

1 – $ widget_id (entier) (obligatoire) un slug d’identification pour votre widget. Cela sera utilisé comme sa classe css et sa clé dans le tableau des widgets.
Par défaut: aucun

2 – $ nom_du_gadget (string) (obligatoire) c’est le nom que votre widget affichera dans son en-tête.
Par défaut: aucun

3 – $ rappel (string) (obligatoire) Le nom d’une fonction que vous créez et qui affichera le contenu réel de votre widget.
Par défaut: aucun

4 – $ control_callback (string) (facultatif) Le nom d’une fonction que vous créez qui gérera la soumission des formulaires d’options de widget (configuration) et affichera également les éléments du formulaire.

Ce qui est important ici, c’est le troisième paramètre, c’est celui qui définit les fonctions qui seront chargées dans la métabox. Dans cet exemple, il s’appelle «rc_mdm_create_my_rss_box ()».

/**
 * Register all dashboard metaboxes
 *
 * @access      public
 * @since       1.0 
 * @return      void
*/

function rc_mdm_register_widgets() {
    global $wp_meta_boxes;
    
    wp_add_dashboard_widget('widget_freelanceswitch', __('My RSS Feeds', 'rc_mdm'), 'rc_mdm_create_my_rss_box');
}
add_action('wp_dashboard_setup', 'rc_mdm_register_widgets');

Étape 3: Le contenu Metabox

Si vous activez le plugin et accédez à votre tableau de bord WordPress, vous devriez voir une nouvelle métabox vide. Nous devons maintenant renseigner son contenu. Les choses importantes pour cette fonction est d’inclure le fichier «feed.php» intégré de WordPress pour pouvoir utiliser la fonction «fetch_feed ()». Veuillez noter que nous utilisons «fetch_feed ()» car «fetch_rss ()», «get_rss ()» et «wp_rss ()» sont obsolètes. Pour une fois, j’ai inclus tous les commentaires directement dans le code mais je voudrais attirer votre attention sur quelques fonctionnalités intéressantes que j’utilise dans la fonction metabox.

Tout d’abord, il y a le “fetch_feed ()” fonction. Celui-ci est utilisé pour obtenir et analyser le contenu des flux. Cette fonction utilise le Classe SimplePie, vous pouvez donc profiter de presque toutes les fonctions qui y sont incluses.

Nous avons alors la fonction «human_time_diff ()» qui permet d’afficher l’heure sous la forme «human_time_diff ()“, Par exemple pour afficher quelque chose comme” il y a 2 heures “,” il y a 4 jours “etc… c’est une fonction WordPress.

Et enfin nous avons “wp_html_excerpt ()»Pour raccourcir le contenu de chaque flux.

Toutes les autres fonctions sont des fonctions WordPress bien connues ou sont incluses dans la classe Simple Pie.

Voici le code:

/**
 * Creates the RSS metabox
 *
 * @access      public
 * @since       1.0 
 * @return      void
*/

function rc_mdm_create_my_rss_box() {
    
    // Get RSS Feed(s)
    include_once(ABSPATH . WPINC . '/feed.php');
    
    // My feeds list (add your own RSS feeds urls)
    $my_feeds = array( 
                'http://feeds.feedburner.com/FSAllJobs', 
                'http://www.wphired.com/feed/?post_type=job_listing' 
                );
    
    // Loop through Feeds
    foreach ( $my_feeds as $feed) :
    
        // Get a SimplePie feed object from the specified feed source.
        $rss = fetch_feed( $feed );
        if (!is_wp_error( $rss ) ) : // Checks that the object is created correctly 
            // Figure out how many total items there are, and choose a limit 
            $maxitems = $rss->get_item_quantity( 3 ); 
        
            // Build an array of all the items, starting with element 0 (first element).
            $rss_items = $rss->get_items( 0, $maxitems ); 
    
            // Get RSS title
            $rss_title = '<a href="'.$rss->get_permalink().'" target="_blank">'.strtoupper( $rss->get_title() ).'</a>'; 
        endif;
    
        // Display the container
        echo '<div class="rss-widget">';
        echo '<strong>'.$rss_title.'</strong>';
        echo '<hr style="border: 0; background-color: #DFDFDF; height: 1px;">';
        
        // Starts items listing within <ul> tag
        echo '<ul>';
        
        // Check items
        if ( $maxitems == 0 ) {
            echo '<li>'.__( 'No item', 'rc_mdm').'.</li>';
        } else {
            // Loop through each feed item and display each item as a hyperlink.
            foreach ( $rss_items as $item ) :
                // Uncomment line below to display non human date
                //$item_date = $item->get_date( get_option('date_format').' @ '.get_option('time_format') );
                
                // Get human date (comment if you want to use non human date)
                $item_date = human_time_diff( $item->get_date('U'), current_time('timestamp')).' '.__( 'ago', 'rc_mdm' );
                
                // Start displaying item content within a <li> tag
                echo '<li>';
                // create item link
                echo '<a href="'.esc_url( $item->get_permalink() ).'" title="'.$item_date.'">';
                // Get item title
                echo esc_html( $item->get_title() );
                echo '</a>';
                // Display date
                echo ' <span class="rss-date">'.$item_date.'</span><br />';
                // Get item content
                $content = $item->get_content();
                // Shorten content
                $content = wp_html_excerpt($content, 120) . ' [...]';
                // Display content
                echo $content;
                // End <li> tag
                echo '</li>';
            endforeach;
        }
        // End <ul> tag
        echo '</ul></div>';

    endforeach; // End foreach feed
}

À la ligne 15, il y a un tableau dans lequel vous pouvez mettre autant de flux que vous le souhaitez. Vous pouvez également définir le nombre de chaque élément de fil à afficher à la ligne 27. Enfin, aux lignes 50 et 54, vous pouvez choisir d’afficher une date humaine ou une date normale. C’est à vous.

Conclusion

Ok, nous avons donc créé une métabox simple, mais vous avez maintenant les bases pour créer vos propres métaboxes avec votre propre contenu. Vous pouvez également supprimer les métaboxes par défaut de WordPress et avoir une compréhension complète de la API de widgets de tableau de bord, je vous encourage, comme toujours, à jeter un œil à la manuscrit.

Share: