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 '<input type="button" value="Ir a google" />';
}


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 '<input type="button" value="Valida la página" onclick="location.href=\'http://validator.w3.org/check?uri='.urlencode(validator_get_url()).'\'"/>'; } 

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

 

Seguridad en WordPress

Algunos consejos para hacer tu WP más seguro:

Las 10 medidas de seguridad imprescindibles en WordPress

1.- Passwords fuertes
2.- No usar usuario admin, ni prefijos estandard en la bad
3.- Limitar número de logins
4.- Vigilar spam
5.- Cuidado con los plugins
6.- Escanear archivos periodicamente
7.- Firewall o proxy inverso
8.- Copias de seguridad
9.- Actualizaciones constantes
10.- Usar un plugin de seguridad

Ejemplo: iThemes:

Cómo configurar el plugin de WordPress iThemes Security

Copias de seguridad en WordPress

UNa buena manera de realizar copias de seguridad en WP es utilizar el siguiente plugin:

updraftplus

Que nos permite realizar varias configuraciones. En la primera pantalla vemos el estado general del sistema:

En la segunda podemos ver los respaldos realizados y, en caso de necesitarlo, restaurar la copia:

En la tercera pantalla podemos configurar la frecuencia de la copia de seguridad, tanto de la base de datos, como de los archivos:

Y especificar dónde queremos guardar esa copia. Tenemos un amplio abanico, desde mandarla por correo electrónico hasta guardarla en dropbox.

También cuenta ftp:

Podemos especificar qué archivos queremos copiar y si queremos un reporte: