[WordPress] Creando la página de configuraciones a un plugin en WordPress

Sasousuke WordPressHola lector(a) y/o seguidor(a). Luego de 2 entradas (crear y funcionalidad) y un poco de motivación supongo que debes estar ansioso por saber como se le puede crear alguna página al complemento para que pongamos el encabezado sin necesidad de modificar el código fuente y sea usable por personas con pocos o casi ningún conocimiento de programación. ¿Listo? Dale intro.

Para este apartado solo hay una pequeña muela (¿cuando no?) sobre el asunto. En WordPress al iguel que en muchos gestores, existen pseudorecursos que sirven para crear entradas, páginas, multimedias y demás recursos que se gestionan, pero desde código, no como tradicionalmente se crean. En buen cubano, en vez de crear una entrada o página por el sistema que se maneja, se crean a código limpio y como tal solo existen dentro del contexto de las configuraciones asociadas al complemento. En el caso del apartado de las configuraciones de un complemento (plugin) se debe crear tantas pseudo-páginas o pseudo-entradas como el desarrollador entienda para lograr que el complemento sea personalizable. También hay que hacer lo denominado como registro de valores, que no es otra cosa que utilizar el mecanismo proporcionado por WordPress para gestionar los valores de las diferentes opciones.

Creando la interface visual (en HTML) que va a contener el formulario donde pondremos un campo texto para que el usuario ponga su tan sugerido encabezado. Incluimos al final del archivo main.php:

/*
 Función que visualiza las configuraciones del complemento
*/
function exclusivo_entrada_plugin_page_settings(){
?>
 <div class="wrap">
 <h2>Configuración</h2>
 <form method="POST" action="options.php">
 <?php 
 settings_fields('exclusivo-entrada-plugin-settings-group');
 do_settings_sections('exclusivo-entrada-plugin-settings-group'); 
 ?>
 <label>Palabra(s):&nbsp;</label>
 <input type="text" 
 name="exclusivo_entrada_plugin_value" 
 id="exclusivo_entrada_plugin_value" 
 value="<?php echo get_option('exclusivo_entrada_plugin_value'); ?>" />
 <?php submit_button(); ?>
 </form>
 </div>
<?php
}

Algo simple y no detallista. Aquí solo vale destacar 2 cosas. Al desarrollar este tipo de formularios en un contexto como un gestor de contenido, se deben seguir reglas como formateado de campos, inclusión de código de normalización y demás engranajes. Eso se hace con las funciones settings_fields() y do_settings_sections() que su función es dejar preparado el formulario para que al añadirseles campos estos se encapsulen para su posterior procesado y guardado por WordPress. El otro detalle es que el nombre del parámetro que va a guardar la información se recomienda que sea el mismo en cada escenario que se invoca o trata, y aunque no se referencia que sea único e irrepetible, por tanto le recomiendo algo similar a las funciones: anteponga el nombre del complemento y listo.

Ahora a registrar en el núcleo de WordPress que cuando se reciba nuestro valor que lo almacene en la base de datos para luego recuperarlo. Para ello seguimos añadiendo al final:

/*
* Función que registra las opciones del formulario en una lista blanca para que puedan ser guardadas
*/
function exclusivo_entrada_plugin_register_value_form_settings(){
    register_setting('exclusivo-entrada-plugin-settings-group',
                     'exclusivo_entrada_plugin_value',
                     'string');
}
add_action('admin_init','exclusivo_entrada_plugin_register_value_form_settings');
?>

Aquí se declara mediante la función register_setting() que campo del formulario se va a procesar y con que formato procesarlo (entero, cadena, flotante, archívo, selección). Por tanto si usted tuviera 2 o más campos en su formulario pues debe llamar a esa función por cada campo, siempre especificando que campo y que tipo de valor se almacena. Luego se declara que al cargar los complementos de administración estos valores van a ser procesados.

Ahora si a engranar todo esto. Pegue al final:

/*
 Menú de opciones del complemento
*/
function exclusivo_entrada_plugin_menu (){
 add_menu_page('Ajustes del complemento Exclusivo Entrada Plugin', #Título de la página
               'Exclusivo Entrada Plugin', #Título del menú
               'administrator', #Rol que puede acceder
               'exclusivo-entrada-plugin-settings', #Id de la página de opciones
               'exclusivo_entrada_plugin_page_settings', #Funcion que visualiza las configuraciones del complemento
               'dashicons-admin-generic' #Icono del menú
 );
}

/*
 Se añade al menú del panel de administración una entrada referente a las configuraciones
*/
add_action('admin_menu', 'exclusivo_entrada_plugin_menu');

Se ha usado la función add_menu_page() que reserva un espacio (al final, justo antes Cerrar menú) en el menú lateral de la interface de administración donde se especifican detalles necesarios. Como pueden apreciar ahí aparece la pseudo-página exclusivo-entrada-plugin-settings. Debo aclarar que esta forma de configuración solo se activa si el complemento está activo. Ahora las capturas:

Y bueno, ya está funcionando. Me falta darle algunos retoques como que todo lo que huela a entradas o páginas se le agrega el encabezado (al fin y al cabo ese era el objetivo, ¿o no?). Hay que entender que para ser el 1er complemento que hago no podía salir todo de maravillas, algo se debe dejar para la versión 1.0.2. Como funcionalidad o comportamiento adicional, se pudiera pensar en que solo se añadirá ese encabezado en aquellas entradas o páginas que pertenezcan a una categoría específica y así darle el toque profesional. Acá al final dejo el enlace del código fuente.

Enlace permanente a este artículo: http://sasousuke.cubava.cu/2018/03/14/wordpress-creando-la-pagina-de-configuraciones-a-un-plugin-en-wordpress/