Das Internet ist voll von großartigen Ressourcen und es ist schwer, alles im Blick zu haben. Natürlich gibt es Twitter, um die Tendenzen im Auge zu behalten, oder RSS-Reader-Software, aber Sie sind wie ich sehr beschäftigt, es ist manchmal ärgerlich, 20 Programme gleichzeitig geöffnet zu haben. Aus diesem Grund habe ich mich entschieden, mein WordPress-Dashboard als globale Plattform zu verwenden, um einen schnellen Zugriff auf diese Feeds zu haben. Ein Beispiel, das ich heute teilen möchte, ist das Erstellen einer benutzerdefinierten RSS-Metabox im WordPress-Dashboard.
Hier ist das Endergebnis dessen, was wir erstellen werden:
Schritt 1: Das Plugin
Um diese Metabox hinzuzufügen, müssen wir ein Plugin erstellen. Erstellen Sie also einfach einen neuen Ordner namens „my-dashboard-metaboxes“ in wp-content/plugins/ und erstellen Sie innerhalb des neuen Ordners eine Datei namens my-dashboard-metaboxes.php. Diese Datei wird die Haupt-Plugin-Datei sein. Öffnen Sie es in Ihrem Haupteditor. Der folgende Code ist der Code, der das Plugin generiert. Nichts wirklich kompliziertes hier:
<?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
*/
Schritt 2: Registrierung der Metabox
Da wir nun ein leeres Plugin haben (ich meine ein Plugin, das nichts tut), müssen wir mindestens eine Metabox registrieren, die auf dem WordPress-Dashboard angezeigt wird. Dazu müssen wir eine neue Funktion erstellen, die das „wp_dashboard_setup“ Haken. Nennen wir diese Funktion „rc_mdm_register_widgets()“. Innerhalb dieser Funktion müssen wir WordPress mitteilen, dass wir eine neue Metabox hinzufügen möchten, und dies ist das Ziel des „wp_add_dashboard_widget()”-Funktion. Diese Funktion akzeptiert 4 Parameter:
1 – $widget_id (Ganzzahl) (erforderlich) ein identifizierender Slug für Ihr Widget. Dies wird als seine CSS-Klasse und sein Schlüssel im Array von Widgets verwendet.
Standard: Keine
2 – $widget_name (string) (erforderlich) Dies ist der Name, den Ihr Widget in seiner Überschrift anzeigt.
Standard: Keine
3 – $Rückruf (string) (erforderlich) Der Name einer von Ihnen erstellten Funktion, die den tatsächlichen Inhalt Ihres Widgets anzeigt.
Standard: Keine
4 – $control_callback (string) (optional) Der Name einer von Ihnen erstellten Funktion, die das Senden von Widget-Options-(Konfigurations-)Formularen verarbeitet und auch die Formularelemente anzeigt.
Wichtig ist hier der dritte Parameter, der die Funktionen definiert, die in die Metabox geladen werden. In diesem Beispiel heißt es „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');
Schritt 3: Der Metabox-Inhalt
Wenn Sie das Plugin aktivieren und zu Ihrem WordPress-Dashboard gehen, sollten Sie eine neue leere Metabox sehen. Wir müssen jetzt seinen Inhalt ausfüllen. Wichtig für diese Funktion ist, die in WordPress integrierte Datei „feed.php“ einzubinden, um die Funktion „fetch_feed()“ verwenden zu dürfen. Bitte beachten Sie, dass wir „fetch_feed()“ verwenden, weil „fetch_rss()“, „get_rss()“ und „wp_rss()“ veraltet sind. Ausnahmsweise habe ich alle Kommentare direkt in den Code eingefügt, aber ich möchte Ihre Aufmerksamkeit auf einige nette Features lenken, die ich in der Metabox-Funktion verwende.
Da ist zunächst die „fetch_feed()”-Funktion. Dieser wird verwendet, um den Inhalt des Feeds abzurufen und zu analysieren. Diese Funktion verwendet die SimplePie-Klasse, sodass Sie fast alle darin enthaltenen Funktionen nutzen können.
Wir haben dann die Funktion „human_time_diff()“, die verwendet wird, um die Zeit als „human_time_diff()“, um zum Beispiel etwas wie „vor 2 Stunden“, „vor 4 Tagen“ usw. anzuzeigen, es ist eine WordPress-Funktion.
Und schließlich haben wir „wp_html_excerpt()“, um jeden Feedinhalt zu kürzen.
Alle anderen Funktionen sind bekannte WordPress-Funktionen oder sind in der Simple Pie-Klasse enthalten.
Hier ist der 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
}
In Zeile 15 gibt es ein Array, in das Sie so viele Feeds einfügen können, wie Sie möchten. Sie können auch die Anzahl der einzelnen Feedelemente definieren, die in Zeile 27 angezeigt werden sollen. Schließlich können Sie in den Zeilen 50 und 54 wählen, ob Sie ein menschliches Datum oder ein normales Datum anzeigen möchten. Es liegt an Ihnen.
Abschluss
Okay, wir haben eine einfache Metabox erstellt, aber Sie haben jetzt die Grundlagen, um Ihre eigenen Metaboxen mit Ihren eigenen Inhalten zu erstellen. Sie können auch die standardmäßigen WordPress-Metaboxen entfernen und ein vollständiges Verständnis der Dashboard-Widgets-API, ich ermutige euch, wie immer, einen Blick auf die Kodex.