Agrupar els shortcodes al plugin
Quantes vegades ha passat que en canviar de tema se'ns han quedat entrades amb un shorcode enmig? A mi bastants… així que vaig decidir començar a crear-me els meus propis shortcodes perquè els pogués utilitzar en tots els temes.
El procés de creació d'un plugin és bastant senzill i no em vaig a estendre a documentar, ja que està molt ben explicat en “Escrivint un Plugin” de la documentació de WordPress.
Bàsicament es tractarà de:
- Escollir un nom del connector, intentarem que sigui únic i per això podermos buscar a Google per comprovar-ne no existència. Sempre podem posar-los un identificador davant del nom, per exemple “TopEinfo abreujat Paquet”
- Creem una carpeta i un arxiu php al seu interior amb el nom escollit, però, atenció, farem servir lletres minúscules sense accentuar i canviarem tots els símbols per guions curts “-“, igual que fa WordPress amb els url de les nostres entrades o pàgines. En el nostre cas seria: “topeinfo-abreujat-pack”.
- Edita l'arxiu php
Podria començar així el nostre codi:
<?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ó creem els shortcodes que vulguem, per exemple, un dels meus preferits que serveix per inserir el contingut d'una pàgina en qualsevol lloc
/** * 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; }
Ara, cal informar WordPress que hi ha un nou shortcode disponible per usar i per això usarem la funció add_shortcode:
add_shortcode('pagina', 'topeinfo_utils_pagina');
I així podem anar agrupant tots els shortcodes que se'ns passin pel cap.