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.