Vor einigen Wochen haben wir gesehen, wie man der Administration eine benutzerdefinierte RSS-Dashboard-Metabox hinzufügt. Heute möchte ich Ihnen zeigen, wie Sie dieser Dashboard-Metabox konfigurierbare Optionen hinzufügen.
Hier ist das Ergebnis dessen, was wir tun werden:
Als erstes müssen Sie natürlich den ersten Teil dieses Tutorials lesen, um die Metabox zu erstellen.
Die wichtigste Funktion in diesem Tutorial ist wp_add_dashboard_widget(). Es ist die WordPress-Funktion, die ein Dashboard-Widget registriert. Wir haben bereits gesehen, dass die Registrierung des Widgets und der Funktion, die das Widget auf dem Dashboard ausgibt, ziemlich einfach ist, aber wir hatten den letzten Parameter dieser Funktion nicht behandelt. Grundsätzlich hat wp_add_dashboard_widget() 4 Parameter:
$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
$widget_name
(Zeichenfolge) (erforderlich) Dies ist der Name, den Ihr Widget in seiner Überschrift anzeigt.
Standard: Keine
$Rückruf
(Zeichenfolge) (erforderlich) Der Name einer von Ihnen erstellten Funktion, die den tatsächlichen Inhalt Ihres Widgets anzeigt.
Standard: Keine
$control_callback
(Zeichenfolge) (optional) Der Name einer von Ihnen erstellten Funktion, die das Senden von Formularen mit Widget-Optionen (Konfiguration) verarbeitet und auch die Formularelemente anzeigt.
Standard: Keine
Wie Sie sehen, ist der vierte Parameter für die „configure“-Optionen zuständig. Wenn Sie diesen Parameter ausfüllen, weisen Sie WordPress an, eine bestimmte Funktion zu laden, um das Widget zu konfigurieren. Es erstellt automatisch einen „Konfigurieren“-Link im Metabox-Titel, wenn Sie den Cursor darüber platzieren.
Schritt 1: Registrieren Sie die Funktion zum Konfigurieren von Optionen
Der erste Schritt besteht also darin, die wp_add_dashboard_widget() aufrufen und den Namen der Konfigurationsoptionen-Funktionen im letzten Parameter hinzufügen. Ihre rc_mdm_register_widgets() Funktionen, soll werden:
/**
* 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_custom_rss', __('My RSS Feeds', 'rc_mdm'), 'rc_mdm_create_my_rss_box', 'rc_mdm_configure_my_rss_box');
}
add_action('wp_dashboard_setup', 'rc_mdm_register_widgets');
Wir haben einfach „rc_mdm_configure_my_rss_box“ zum letzten Parameter hinzugefügt.
Schritt 2: Erstellen Sie die Funktion zum Konfigurieren von Optionen
Dieser Schritt ist nicht kompliziert. Wir müssen lediglich Formularfelder erstellen, die in einem Array gespeichert sind. Dazu verwenden wir die update_option(). Wir müssen kein vollständiges Formular erstellen, da WordPress es für uns erstellt. Wir müssen nur die Felder registrieren. Ein sehr guter Punkt ist, dass WordPress dem Formular automatisch eine Nonce hinzufügt, die das Formular sicher macht und potenzielle Sicherheitsprobleme vermeidet. Hier ist der Code unserer rc_mdm_configure_my_rss_box() Funktion ( erinnerst du dich? Es ist der vierte Parameter, den wir in wp_add_dashboard_widget() ).
/**
* Creates the RSS metabox configuration settings
*
* @access public
* @since 1.0
* @return void
*/
function rc_mdm_configure_my_rss_box( $widget_id ) {
// Get widget options
if ( !$rc_mdm_widget_options = get_option( 'rc_mdm_dashboard_widget_options' ) )
$rc_mdm_widget_options = array();
// Update widget options
if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['rc_mdm_widget_post']) ) {
update_option( 'rc_mdm_dashboard_widget_options', $_POST['rc_mdm_widget'] );
}
// Retrieve feed URLs
$url_1 = $rc_mdm_widget_options['url_1'];
$url_2 = $rc_mdm_widget_options['url_2'];
$url_3 = $rc_mdm_widget_options['url_3']; ?>
<p>
<label for="rc_mdm_url_1-"><?php _e('Enter the RSS feed URL #1:', 'rc_mdm'); ?></label>
<input class="widefat" id="rc_mdm_url_1" name="rc_mdm_widget[url_1]" type="text" value="<?php if( isset($url_1) ) echo $url_1; ?>" />
</p>
<p>
<label for="rc_mdm_url_2"><?php _e('Enter the RSS feed URL #2:', 'rc_mdm'); ?></label>
<input class="widefat" id="rc_mdm_url_2" name="rc_mdm_widget[url_2]" type="text" value="<?php if( isset($url_2) ) echo $url_2; ?>" />
</p>
<p>
<label for="rc_mdm_url_3"><?php _e('Enter the RSS feed URL #3:', 'rc_mdm'); ?></label>
<input class="widefat" id="rc_mdm_url_3" name="rc_mdm_widget[url_3]" type="text" value="<?php if( isset($url_3) ) echo $url_3; ?>" />
</p>
<input name="rc_mdm_widget_post" type="hidden" value="1" />
<?php
} ?>
Sie können Ihr Dashboard jetzt neu laden, und wenn Sie den Cursor auf die Widget-Metabox platzieren, wird oben rechts ein Link zum Konfigurieren angezeigt. Wenn Sie darauf klicken, wird das Optionsformular geladen. Und beim Ausfüllen der Felder und Speichern werden die Feed-URLs in unserer Optionen-SQL-Tabelle gespeichert.
Schritt 3: Abrufen von Optionen
Der letzte Schritt besteht darin, die Feed-URLs zu ersetzen, die wir im ersten Teil des Tutorials hart codiert haben. Von Zeile 14 bis 18 in rc_mdm_create_my_rss_box() haben wir zwei URLs hinzugefügt. Einfach ersetzen durch:
// My feeds list
if ( !$my_feeds = get_option( 'rc_mdm_dashboard_widget_options' ) )
$my_feeds = array();
Und das ist es! Wir haben es geschafft, einem Dashboard-Widget ganz einfach benutzerdefinierte Optionen hinzuzufügen.