Ajustes de un plugin o tema de WordPress

Home » Blog » 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:

  • nombre-matriz: Nombre del grupo de opciones.
  • opciones_guardar: es el nombre de la matriz.
  • opciones_sanear: Es una función en la que sanearemos los datos antes de que se almacenen.
<?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');
  • nombre_seccion: Nombre exclusivo del bloque que vamos a crear.
  • titulo: Título del bloque.
  • funcion: Función que pinta lo que habrá en el bloque.
  • page: Es una referencia a que página queremos introducirle el bloque. Tenemos las siguientes opciones:
    • general: Corresponde con la página generales.
    • writing: Corresponde con la página escritura.
    • reading: Corresponde con la página lectura.
    • discussion: Corresponde con la página comentarios.
    • media: Corresponde con la página multimedia.
    • permalink: Corresponde con la página enlaces permanentes.

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');
  • referencia_al_nombre_seccion: En este ejemplo seria => nombre_seccion de arriba.

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:

  • opciones_sanear: Función para sanear los nuevos datos antes de guardarlos en la base de datos.
  • funcion de add_settings_section: Función donde se puede meter información sobre como rellenar los campos o para que se usarán.
  • funcion de add_setting_field: Debemos recuperar get_option(‘opciones_guardar’); como en el ejemplo anterior y pintar los campos input, radio, select… cargando sus posibles valores.

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.


Categorías


Foto de Iñigo Mezo Alvarez

IÑIGO MEZO ALVAREZ (IMAcreste)


Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Las reseñas son opiniones que las personas dejan en la página local de Google. Si son positivas, estas reseñas ayudarán a mejorar la confianza y credibilidad de una marca.

Participa en nuestro sorteo enviando un email con tu nombre y el asunto «Sorteo AUDITORÍA SEO». Se realizara un sorteo cada mes.