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.



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.

Evaluación EXCELENTE
A base de 7 reseñas
Gran profesional y muy competente, le contratamos para cambiar la web y mejorar el posicionamiento y gracias a su asesoramiento ha mejorado.
jorge martinez
jorge martinez
16/05/2024
Contactamos con Iñigo para el diseño web de nuestra tienda online y estamos encantados. Su asesoramiento, seguimiento y trato han sido excepcionales. Un verdadero crack. Recomendado al 100%. No dudes en ponerte en contacto con el.
erlantz rique
erlantz rique
19/02/2024
Un acierto quien elija a Iñigo. Autentico profesional, se preocupó en todo momento que entendiera el funcionamiento de la web. Me explicó todo las veces necesarias hasta entenderlo. Se preocupó y acertó en que la web tuviera lo que le pedí y lo hizo con creces. Muy contento con el servicio prestado. Una vez realizado el trabajo, cualquier duda que tengo me sigue ayudando. Lo recomiendo sin temor a equivocarme.
Jose Marlasca
Jose Marlasca
06/02/2024
Compromiso, implicación e innovación en los proyectos. Atento a las necesidades e incansable en la búsqueda de soluciones. Muy buena opción.
Jabier Fuertes Udaondo
Jabier Fuertes Udaondo
07/01/2024
Si buscas a alguien que además de hacer un diseño web moderno, responsivo y adaptado a tu sector, te explique por qué plantea el diseño web de esa manera y que te explique y ayude en posicionar tu web lo mejor posible en base a los objetivos fijados, ese es Iñigo Mezo y os lo recomiendo al 100%
Asier Hermoso
Asier Hermoso
03/01/2024
Genial trabajar con él! Además de ser muy buen profesional, experto y responsable, a destacar tanto su implicación en cada proyecto, así como su trato siempre cercano y su paciencia infinita ;) Un crack!!
itxaso zubia
itxaso zubia
15/12/2023
El plugin gratuito para integrar productos de Prestashop en Wordpress muy sencillo de utilizar y muy bien documentado, os felicito.
Fernando Cózar
Fernando Cózar
02/11/2023