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
}
?>

Crear un plugin para WordPress (3): Shortcode

El ‘Shortcode’ es asociar un texto entre corchetes con una función de php (normalmente implica imprimir algo de HTML). Por ejemplo:

function google_shortcode(){
 return '&lt;input type="button" value="Ir a google" /&gt;';
}


add_shortcode('google_atajo', 'google_shortcode');

El ejemplo anterior nos crea un ‘atajo’ que crea un botón que, sencillamente, nos dirige a google. Un ejemplo algo más sofisticado sería el siguiente, que crea un botón que nos envía al validador de webs de w3c:

function validator_get_url(){
 return get_permalink();
}

function validator_shortcode(){
 return '&lt;input type="button" value="Valida la página" onclick="location.href=\'http://validator.w3.org/check?uri='.urlencode(validator_get_url()).'\'"/&gt;'; } 

add_shortcode('validator', 'validator_shortcode');

Otros ejemplos:


add_shortcode("mi_atajo_guay", 'trifulcas_crear_atajo');

function trifulcas_crear_atajo() {
?>
<h1>Vivan los atajos</h1>
<h3>Todo lo que pongo aquí se pondrá allá donde coloque el atajo</h3>
<p>Es una manera muy fácil de colocar contenido en cualquier posición, entrada, páginas, etc...</p>
<?php
}

add_shortcode('tabla_multiplicar', 'trifulcas_tabla');

function trifulcas_tabla($params) {
$num = 1;
if (isset($params['numero'])) {
$num = $params['numero'];
}
echo "<table>";
for ($i = 1; $i <= 10; $i++) {
?>
<tr><td><?= $i ?></td><td>x</td><td><?= $num ?></td><td>=</td><td><?= $i * $num ?></td></tr>
<?php
}
echo "</table>";
}

add_shortcode('lista_productos', 'trifulcas_lista_productos');

function trifulcas_lista_productos() {
global $wpdb;

$productos = $wpdb->get_results("select * from productos", ARRAY_A);
foreach($productos as $producto){
?>
<p><?=$producto['nombre']?></p>
<?php
}
}

Crear un plugin para wordpress (2)

Para añadir nuestro código a wordpress tenemos dos opciones:

add_filter('gancho','funcion')

Cuando se muestre el contenido del ‘gancho’ se llamará a nuestra función ‘función’. Lo que devuelva nuestra función será el valor del gancho, con lo que tenemos que asegurarnos de que devolvemos un valor. Veamos dos ejemplos:

add_filter( 'the_content', 'cambiar_contenido' );

function cambiar_contenido($contenido){
return $contenido." ¡Mega artículo!";
}

El código anterior cambiaría el contenido de las entradas añadiendo el texto ‘¡Mega artículo al final!’.

add_filter( 'the_title', 'cambia_titulo' );

function cambia_titulo($contenido){
return "###==&gt;".$contenido;
}

El código anterior cambiaría los títulos añadiendo el texto ‘###==>’ al principio.

add_filter('the_content', 'cambiar_contenido');

function cambiar_contenido($contenido) {
    if (strlen($contenido)&lt;300){
        return $contenido;
    }
    else{
        $palabras=explode(" ",$contenido);
        $inicio=implode(" ",array_slice($palabras,0,40));
        $fin=implode(" ",array_slice($palabras,40));
        return $inicio.
                '
<input type="button" value="Ver más" />'
                . '<span id="mas" style="display: none;">'.$fin."</span>";
    }
}

El código anterior, si el texto es largo, añade un botón de ‘Ver más’.

add_action('gancho', 'función')

Cuando se ejecute la acción de wordpress ‘gancho’ se llamará a nuestra acción -que puede o no mostrar un contenido. Veamos ejemplos:

add_action( 'admin_notices', 'saludo' );

function saludo(){
echo "ola k ase???";
}

El código anterior hace que cuando se muestren las noticias de administración, se escriba el mensaje ‘ola k ase?’.

</pre>
add_action('wp_head','trifulcas_encolar');

function trifulcas_encolar(){
wp_enqueue_script('trifulcas', plugin_dir_url(__FILE__) . 'trifulcas.js');
}
<pre>

El código anterior nos pone jquery en la cabecera.

Crear un plugin para wordpress (1)

Debemos crear una carpeta dentro de wp-content\plugins, y dentro un arhivo index.php con lo siguiente:

/*
Plugin Name: Nombre del plugin
Plugin URI: http://intelisen.com/plugins
Description: Descripción del plugin
Author: Intelisen
Version: 1
Author URI: http://intelisen.com
*/

Algunos enlaces interesantes:

https://codex.wordpress.org/es:Escribiendo_un_Plugin

Tutorial de WordPress Plugins: Cómo crear un plugin de WordPress

Creación de Plugins en WordPress (I)

Temas hijos en wordpress

Para crear un tema hijo sólo tenemos que crear una carpeta y dentro un archivo style.css con lo siguiente:

/*
 Theme Name:   Twenty Seventeen Child
 Theme URI:    http://example.com/twenty-fourteen-child/
 Description:  Twenty Seventeen Child Theme
 Author:       John Doe
 Author URI:   http://example.com
 Template:     twentyseventeen
 Version:      1.0.0
 Tags:         light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
 Text Domain:  twenty-seventeen-child
*/
@import url("../twentyseventeen/style.css");

Otra opción, sin usar @import (más recomendado) es crear el archivo functions.php y poner la siguiente línea:


wp_enqueue_style('twentyseventeen',get_template_directory_uri().'/style.css');

o

 wp_enqueue_style('parent-style',get_template_directory_uri().'/style.css'); 

 

Ojo al apartado Template y al import del url.

Tutorial:

Temas hijos

https://ayudawp.com/como-crear-un-tema-hijo-en-wordpress/

https://www.webempresa.com/blog/crear-temas-hijo-child-themes-en-wordpress.html

https://docs.presscustomizr.com/article/24-why-and-how-to-create-a-child-theme-with-wordpress