ccc

Wordpress: crear tus propios shortcodes

En el fichero functions.php del hijo del tema activo (si no existiera pues entonces en el fuctions.php del padre):

function lsg_texto_quijote() {
 return 'En un lugar de la Mancha de cuyo nombre no quiero acordarme';
 }
 add_shortcode('quijote', 'lsg_texto_quijote');

 function lsg_get_fecha_now() {
  $fh_actual = date('Y-m-d H:i:s');
  return "Ahora mismo es: ".$fh_actual;
 }
 add_shortcode('get_fecha', 'lsg_get_fecha_now');

Y ya en cualquier entrada, página o lugar del wordpress con solo poner:
[quijote]
[get_fecha]

ya pondrá un texto como este:
En un lugar de la Mancha de cuyo nombre no quiero acordarme Ahora mismo es: 2019-09-11 07:54:21

Ejemplo de shortcode pasando parámetros:
function lsg_show_music( $atts ){
   $music_details="";
   // atributos por defecto por si no manda nada
    extract(shortcode_atts(array(
            'titulo' => 'No especificado',
            'compositor' => 'No especificado',
            'anno' => 0
   ), $atts));
 
    $music_details = '<div class="info"><ul>
    <li>Título: ' .$titulo. '</li>
    <li>Compositor: ' .$compositor. '</li>
    <li>Año: ' .$anno. '</li>
      </ul></div>';
 

    return $music_details;
}
add_shortcode('show_music', 'lsg_show_music');

Y en nuestro wordpress poner por ejemplo:
[show_music titulo="Carros de fuego" compositor="Vangelis"  anno="1981"]
[show_music titulo="E.T. El extraterrestre" compositor="John Williams"  anno="1982"]
[show_music titulo="Elegidos para la gloria" compositor="Bill Conti"  anno="1983"]


Si queremos podemos pasar variable al short_code para que la utilice, por ejemplo:
function lsg_show_music( $atts, $content ){
   $music_details="";
   // atributos por defecto por si no manda nada
    extract(shortcode_atts(array(
            'titulo' => 'No especificado',
            'compositor' => 'No especificado',
            'anno' => 0
   ), $atts));
   
    $music_details = '<h2>'.$content.'</h2>';
    $music_details .= '<div class="info"><ul>
    <li>Título: ' .$titulo. '</li>
    <li>Compositor: ' .$compositor. '</li>
    <li>Año: ' .$anno. '</li>
      </ul></div>';
   

    return $music_details;
}
add_shortcode('show_music', 'lsg_show_music');

Y en nuestro wordpress abrir y cerrar la etiqueta con el contenido:
[show_music titulo="Carros de fuego" compositor="Vangelis"  anno="1981"] [/show_music]
[show_music titulo="E.T. El extraterrestre" compositor="John Williams"  anno="1982"]  [/show_music]
[show_music titulo="Elegidos para la gloria" compositor="Bill Conti"  anno="1983"]  [/show_music]
[show_music titulo="Paisaje a la india"]Datos de la música:[/show_music]

No hay comentarios:

Publicar un comentario