EspañolCatalàEuskaraEnglish
Tecnologies de la Informació

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.

Núvol d'etiquetes

El seu navegador no suporta canvas.

Categories