Hace unas semanas vimos cómo agregar un metabox de panel RSS personalizado a la administración. Hoy, me gustaría mostrarles cómo agregar opciones configurables a este metabox del tablero.
Aquí está el resultado de lo que vamos a hacer:
Lo primero que debe hacer es leer, obviamente, la primera parte de este tutorial para crear el metabox.
La función más importante de este tutorial es wp_add_dashboard_widget (). Es la función de WordPress que registra un widget de panel. Ya vimos que registrar el widget y la función que genera el widget en el tablero es bastante fácil, pero no habíamos cubierto el último parámetro de esta función. Básicamente, wp_add_dashboard_widget () tiene 4 parámetros:
$ widget_id
(entero) (requerido) una babosa de identificación para su widget. Esto se utilizará como su clase css y su clave en la matriz de widgets.
Predeterminado: Ninguno
$ widget_name
(cadena) (requerido) este es el nombre que mostrará su widget en su encabezado.
Predeterminado: Ninguno
$ devolución de llamada
(cadena) (requerido) El nombre de una función que crea que mostrará el contenido real de su widget.
Predeterminado: Ninguno
$ control_callback
(cadena) (opcional) El nombre de una función que crea que manejará el envío de formularios de opciones de widget (configuración) y también mostrará los elementos del formulario.
Predeterminado: Ninguno
Como puede ver, el cuarto parámetro es el responsable de las opciones de “configuración”. Al completar este parámetro, le dice a WordPress que cargue una función específica para configurar el widget. Crea automáticamente un enlace de «configuración» en el título del metabox cuando colocas el cursor sobre él.
Paso 1: Registre la función Configurar opciones
Entonces, el primer paso es modificar el wp_add_dashboard_widget () llamar y agregar el nombre de las funciones de opciones de configuración en el último parámetro. Tu rc_mdm_register_widgets () funciones, debe convertirse en:
/**
* 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');
Simplemente agregamos “rc_mdm_configure_my_rss_box” al último parámetro.
Paso 2: Cree la función Configurar opciones
Este paso no es complicado. Todo lo que tenemos que hacer es crear campos de formulario almacenados en una matriz. Para hacerlo, usaremos el update_option (). No necesitamos crear un formulario completo ya que WordPress lo crea para nosotros. Solo necesitamos registrar los campos. Un punto muy bueno para mencionar es que WordPress agrega automáticamente al formulario un nonce que hace que el formulario sea seguro y evita posibles problemas de seguridad. Aquí está el código de nuestra función rc_mdm_configure_my_rss_box () (¿recuerdas? Es el cuarto parámetro que definimos en 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
} ?>
Ahora puede volver a cargar su tablero, y si coloca el cursor en el metabox del widget, verá un enlace «configurar» que aparece en la parte superior derecha. Al hacer clic en él, se carga el formulario de opciones. Y al llenar los campos y guardar las URL del feed se almacenan en nuestra tabla de opciones SQL.
Paso 3: Opciones de recuperación
El último paso es reemplazar las URL del feed que codificamos en la primera parte del tutorial. De la línea 14 a la 18 en rc_mdm_create_my_rss_box () agregamos dos URL. Simplemente reemplácelo por:
// My feeds list
if ( !$my_feeds = get_option( 'rc_mdm_dashboard_widget_options' ) )
$my_feeds = array();
¡Y eso es! Logramos agregar opciones personalizadas a un widget de tablero de manera silenciosa y fácil.