Icono del sitio Imacreste

Ajustes de un plugin o tema de WordPress

En muchas ocasiones al desarrollar un plugin o un tema se necesita una página desde la que el usuario pueda configurar sus opciones, bien para modificar el funcionamiento del plugin / tema o bien porque esos datos son necesarios para el funcionamiento correcto.

Guardar, borrar y recuperar opciones

Para guardar una opción en la base de datos tabla: $prefijo_options, hay 2 opciones, aunque recomiendo usar:

update_option( 'nombre_variable', 'variable' );

Básicamente por que esta función primero comprueba de si existe, y sino la crea y si existe machaca el valor.

IMPORTANTE: El nombre de la variable debemos asegurarnos de que es exclusiva, y no pueda chocar con cualquier plugin o tema que el usuario pueda instalarse. Este tipo de cosas son las que dan problemas cuando se instalan varios plugins o temas que usan variables iguales.

Y para recuperar el valor:

echo get_option('nombre_variable');

Para borrar la opción:

delete_option('nombre_variable');

Como cada opción genera un registro de la base de datos, es importante usar las matrices de opciones, que nos permiten almacenan varias opciones en un único registro:

$options=array($bdConect=array( 
'name_var1' => 'var1', 
'name_var2' => 'var2', 
'name_var3' => 'var3', 
'name_var4' => 'var4', 
'name_var5' => 'var5'
);
update_option( 'nombre_variable', $options);

Crear una matriz para almacenar opciones de configuración

En estos ejemplos, simplemente podemos crear opciones de configuración, y actualizarlas o borrarlas. Pero normalmente debemos crear una página de configuración, en donde el cliente pueda configurar las diferentes posibilidades. Estas opciones se recogen mediante un formulario de HTML  y para su gestión WordPress nos ofrece diferentes funciones:

add_action('admin_menu','crear_menu_opciones'); 
function crear_menu_opciones(){ 
add_options_page('Configuraciones','Configuraciones','manage_options','mi-menu','mi_menu_options');
//creamos un menú en ajustes

register_setting('nombre-matriz','opciones_guardar','opciones_sanear');
//crea una matriz, en donde se almacenarán las diferentes opciones del form
}

Creamos un menú y luego creamos nuestra matriz con register_setting:

<?php function imacPrestashop_fc(){ ?> 
<div class="wrap"> 
<h2>Configuración</h2> 
<form method="post" action="options.php"> 
<?php settings_fields('nombre-matriz');?> 
<?php $opciones_guardar=get_option('opciones_guardar');?> 
<table class="form-table"> 
<tr valign="top"> <th scope="row">Campo 1: </th> 
<td> 
<input type="text" name="opciones_guardar[option_campo1]" 
value="<?php echo esc_attr($opciones_guardar['option_campo1']);?>" /> 
</td> 
</tr> 
</table> 
<p class="submit">
<input type="submit" class="button-primary" value="Guardar" />
</p> 
</form> 
</div> 
<?php }?>

Ahora estamos en la función establecida en el menú y en el cual usamos la matriz para crea el input, y si existe un valor para los inputs los escribimos en los values. Además, es importante, establecer el formulario como POST y el action=»options.php», y ya solo queda crear un botón de tipo submit.

function opciones_sanear($input){
$input['option_campo1']=sanitize_text_field($input['option_campo1']);
return $input;
}

Antes de guardar en la base de datos, llamamos a la función establecida para sanear los datos. Y con esto se guardará de forma segura las opciones de configuración.

Añadir opciones en una página de configuración predetermina

También cabe la posibilidad de añadir nuestros parámetros de configuración dentro de una de las páginas de ajustes que viene con la instalación básica de WordPress, como por ejemplo en ajustes -> Ajustes de lectura.

add_settings_section( 'nombre_seccion', 'titulo', 'funcion', 'page');

El siguiente paso es registrar los campos que queremos incluir en el bloque:

add_setting_field('nombreClave_del_campo', 'Label','funcion','page','referencia_al_nombre_seccion');

Y ahora debemos usar la función del punto anterior: register_setting. Pero como primer parámetro sería el nombre de la page, en este ejemplo reading.

Y las funciones que tendremos que crear son:

Y con esto tendríamos nuevas opciones en una página estándar de WordPress.

Mostrar enlace a los ajustes en el menú de plugin

Por defecto en la página donde se muestran los plugins instalados no se muestra un enlace directo a los ajustes, con lo que los clientes pueden ni saber que requiere una configuración previa, para mostrarlo podemos usar otra función:

function acceso_ajustes_plugin’ ( $links ) {
 $settings_link = '<a href="options-general.php?page=mi_plugin_name">' . __( 'Settings' ) . '</a>';
 array_push( $links, $settings_link );
 return $links;
}
$plugin = plugin_basename( __FILE__ );
add_filter( "plugin_action_links_$plugin", ‘acceso_ajustes_plugin’);

Es un poco diferente al resto de hooks de WordPress ya que se usa la variable de la carpeta donde se encuentra el plugin.

Salir de la versión móvil