EspañolCatalàEuskaraEnglish
Tecnologías de la Información

Agrupar los shortcodes en un plugin

¿Cuántas veces ha pasado que al cambiar de tema se nos han quedado entradas con un shorcode en medio? A mi bastantes… así que decidí empezar a crearme mis propios shortcodes para que los pudiera utilizar en todos los temas.

El proceso de creación de un plugin es bastante sencillo y no me voy a extender en documentarlo, ya que está muy bien explicado en «Escribiendo un Plugin» de la documentación de WordPress.

Básicamente se tratará de:

  • Escoger un nombre para el plugin, intentaremos que sea único y para ello podermos buscarlo en Google para comprobar su no existencia. Siempre podemos ponerles un identificador delante del nombre, por ejemplo «TopEinfo ShortCode Pack»
  • Creamos una carpeta y un archivo php en su interior con el nombre escogido, pero, atención, vamos a usar letras minúsculas sin acentuar y vamos a cambiar todos los simbolos por guiones cortos «-«, igual que hace WordPress con los url de nuestras entradas o páginas. En nuestro caso sería: «topeinfo-shortcode-pack».
  • Editar el archivo php

Podría empezar así nuestro código:

<?php
/*
Plugin Name: TopEinfo ShortCode Pack
Plugin URI:
Description: Conjunto de shortcodes y útilidades varias
Author: Joan López
Version: 1.0
Author URI: https://www.topeinfo.es/
*/

A continuación creamos los shortcodes que queramos, por ejemplo, uno de mis preferidos que sirve para insertar el contenido de una página en cualquier sitio


/**
 * Inserta el contenido de una página
 *
 * Atributos:
 * - id: id de la página
 * - name: título de la página o slug
 * - reduce: (false) si es true, reduce los encabezados (h1->h2, h2->h3 ...)
 *
 * @param array $atts (id: int, name:string)
 * @return type
 * @version 1.05.20130216
 */
 function topeinfo_utils_pagina($atts, $content='') {
 $id = '';
 $reduce = false;
 extract(shortcode_atts(array(
 'id' => 0,
 'name' => '',
 'reduce' => false,
 'class' => ''
 ), $atts));

if ($id==0) {
 $page_data = get_page_by_path($name);
  if ($page_data == null)
  $page_data = get_page_by_title($name);
 }
 else
  $page_data = get_page($id);

if ($page_data == null)
 return $content;

$contenido = apply_filters('the_content', $page_data->post_content);
 if ($reduce == 'true' || $reduce == 1) {
  $contenido = str_ireplace('h5', 'h6', $contenido);
  $contenido = str_ireplace('h4', 'h5', $contenido);
  $contenido = str_ireplace('h3', 'h4', $contenido);
  $contenido = str_ireplace('h2', 'h3', $contenido);
  $contenido = str_ireplace('h1', 'h2', $contenido);
 }

 if (!empty($class)) {
 $contenido = "<div class=\"{$class}\">{$contenido}</div>";
 }

return $contenido;
 }

Ahora, hay que informar a WordPress que hay un nuevo shortcode disponible para usar y para ello usaremos la función add_shortcode:

add_shortcode('pagina', 'topeinfo_utils_pagina');

Y así podemos ir agrupando todos los shortcodes que se nos pasen por la cabeza.

Nube de etiquetas

Su navegador no soporta canvas.

Categorías