Crear un plugin para wordpress (4): Opciones en menú

En los plugins podemos dar al usuario de wordpress la capacidad de poner opciones, que luego podemos usar en nuestro código. Basta poner una opción de menú y un formulario, wordpress se encarga del resto. Un ejemplo:

<?php
/*
 Plugin Name: Destacados
 Plugin URI: https://es.wikiquote.org/wiki/Portada
 Description: Destaca palabras 
 Author: Jota Peich
 Version: 1.0
 Author URI: http://intelisen.com
 */

//Las dos funciones siguientes y el add_filter son el código del plugin
function destacar_get_palabras() {
 return explode(",", get_option("destacar_palabras"));
}

function destacar_filtro($contenido) {
 $palabras = destacar_get_palabras();
 foreach ($palabras as $palabra) {
 $palabra=trim($palabra);
 $contenido = str_ireplace($palabra, "<span class=pg_destacado>" . $palabra . "</span>", $contenido);
 }
 return $contenido;
}

add_filter('the_content', 'destacar_filtro');


//Necesarios para crear un menú y registrar los campos
add_action('admin_menu', 'destacar_menu');
add_action('admin_init', 'destacar_settings');

//Registra el campo que vamos a guardar
function destacar_settings() {
 register_setting('destacar-group', 'destacar_palabras');
}


//Son las opciones que tendrá nuestro menú. Los parámetros son: título de la página, título del menú, quien puede acceder, url de esta página y función a la que se llama
function destacar_menu() {
 add_options_page('Opciones destacar', 'destacar', 'manage_options', 'destacar-identifier', 'destacar_options');
}

//Formulario que se mostrará cuando se seleccione el menú
function destacar_options() {
 if (!current_user_can('manage_options')) {
 wp_die('No tiene permiso.');
 }
 ?>

 <div>
 <?php screen_icon(); ?>
 <h2>Opciones destacar</h2>

 <form method="post" action="options.php">
 <?php
 settings_fields('destacar-group');
 do_settings_fields('destacar-group', '');
 ?>

 <p>Introduzca las palabras a destacar separadas por comas</p>
 <input size="70" type="text" name="destacar_palabras" value="<?php echo get_option('destacar_palabras'); ?>" />

 <?php
 submit_button();
 ?>
 </form>
 </div>
 <?php
}
?>

Publicado por

Avatar del usuario

Juan Pablo Fuentes

Formador de programación y bases de datos