Blog personal de IT, viajes y otros hobbies

Etiqueta: shortcode

Crear módulo de Visual Composer con shortcodes

¿Cómo crear módulos de Visual Composer?

Implementamos Visual Composer y hemos desarrollado ShortCodes customizados para el proyecto WordPress de nuestro cliente ¿No sería genial incorporar estos shortcodes como módulos en el  Visual Composer? De esa forma el cliente no tiene que estar acordándose de códigos ni parámetros. Veamos cómo implementarlos.

Elementos de Visual Composer

Elementos básicos de Visual Composer

Si aún no sabes cómo generar un shortcode te invito a que visites mi artículo anterior «¿Cómo crear shortcodes en WordPress?» para que veas paso a paso cómo desarrollarlos.

¿Qué shortcode implementaremos?

Vamos a utilizar el mismo ejemplo del artículo «¿Cómo crear shortcodes en WordPress?«. Este shortcode, al que llamamos sc-textbox, implementa un texto al que podíamos especificar los siguientes campos:

  • Color de texto.
  • Color de fondo.
  • Tamaño de la fuente

Para utilizar el shortcode el usuario  debía escribir un código como el siguiente:

[sc-textbox text-color="#FFFF00" background-color="#000000" font-size="35"]Lorem Ipsum[/sc-textbox]

Para los que trabajamos a diario con WordPress este código puede resultarnos muy sencillo, pero puede no serlo para muchísimas otras personas. Por eso hemos decidido hacer un módulo en Visual Composer para que el usuario pueda completar estos campos a golpe de clics.

Os dejo el código PHP con el shortcode:

/**
 * Función que implementa el shortcode [sc-textbox]
 */
function sctextbox_callback( $atts, $content = null ) {
    
    // Genero los valores por defecto de los parámetros
    $params = shortcode_atts( array(
                                'text-color'        => '#000000',
                                'background-color'  => '#ffffff',
                                'font-size'  		=> '20',
                            ), $atts );
    
    
    // Genero el string con estilos en línea
    $style = "style= 'color:{$params['text-color']}; background-color:{$params['background-color']}; font-size:{$params['font-size']}px;'";
    // Aplico el texto y el stilo a la etiqeta

return »

{$content}

";
}
add_shortcode( 'sc-textbox', 'sctextbox_callback' );

Creando el módulo en Visual Composer

Para crear el módulo tendremos que agregar nuestro código PHP en el functions.php asociado al hook vc_before_init de Visual Composer.

function create_vc_sctextbox() {
   /**
   * 	Aquí pondremos el código para generar
   *	el módulo de Visual Composer
   */
   
}
add_action( 'vc_before_init', 'create_vc_sctextbox' );

Ahora sí tenemos todo listo para comenzar a configurar nuestro nuevo módulo de Visual Composer. Para ello utilizaremos la función vc_map() que acepta como parámetro un array al que podemos especificar los detalles del nuevo elemento. Agrego al código PHP los números de líneas para explicar a continuación la funcionalidad de cada parámetro:

function create_vc_sctextbox() {
   /**
   * 	Aquí pondremos el código para generar
   *	el módulo de Visual Composer
   */
   vc_map([
        "category" => "Cliente",
        "name" => "Custom Textbox",
        "base" => "sc-textbox",
        "description" => "Este módulo crea un texto con color, fondo y tamaño personalizado",
        "show_settings_on_create" => true,
        "class" => "vc-project-details-block",
        "icon" => "icon-wpb-slideshow",
        "params" => array(
                            // Campo para el color del texto
                            array(
                                "heading"       => "Color de texto",
                                "type"          => "colorpicker",
                                "param_name"    => "text-color",
                                "description"   => "Elige el color del texto",
                                "value"         => "#000000",
                                "admin_label"   => true
                            ),

                            // Campo para el color del fondo
                            array(
                                "heading"       => "Color de fondo",
                                "type"          => "colorpicker",
                                "param_name"    => "background-color",
                                "description"   => "Elige el color del fondo",
                                "value"         => "#ffffff",
                                "admin_label"   => true
                            ),

                            // Campo para el tamaño del texto
                            array(
                                "heading"           => "Tamaño de la tipografía",
                                "type"              => "textfield",
                                "param_name"        => "font-size",
                                "description"       => "Elige el tamaño del texto",
                                "value"             => "16",
                                "admin_label"       => true
                            ),
                        )
   ]);
}
add_action( 'vc_before_init', 'create_vc_sctextbox' );

Analizando el bloque de código

  • Línea 06: Llamamos a la función vc_map() y pasamos un array como parámetro.
  • Línea 07: El parámetro category nos permite agregar el módulo en una categoría existente (Content, Social, Structure) o crear una nueva a partir de un string. En este caso hemos creado la categoría «Cliente» para agrupar este y los demás shortcodes que creemos para el proyecto.
categoría en visual composer

Nueva categoría de elementos en Visual Composer.

  • Línea 08: El parámetro name especificamos el nombre de nuestro módulo de Visual Composer.
  • Línea 09: En el parámetro base debemos especificar el nombre del shortcode que utilizaremos, en este caso sc-textbox.
  • Línea 10: En el parámetro description especificamos una breve descripción de lo que realiza este módulo.
  • Línea 11: Definimos como true el parámetro show_settings_on_create para que al arrastrarlo a una columna despliegue el cuadro de diálogo con las demás configuraciones.
  • Línea 12: Podemos definir una clase customizada que se agregará al HTML del módulo (útil si tenemos que aplicar algún estilo CSS o alguna funcionalidad javascript).
  • Línea 13: Al parámetro icon podemos especificarle una URL o bien una clase con el icono a mostrar en el cuadro de diálogo de VIsual Composer.
Módulo Visual Composer explicado

Ejemplo del nuevo módulo creado y las referencias a las respectivas líneas del código PHP.

  • Línea 14: En el parámetro params debemos especificar los campos que puede editar el usuario para utilizar este módulo.
    • De la línea 17 a la 24 declaramos los parámetros para el campo «Color de texto».
    • De la línea 28 a la 35 declaramos los parámetros para el campo «Color de fondo».
    • De la línea 39 a la 46 declaramos los parámetros para el campo «Tamaño del texto»
Módulo Visual Composer con campos personalizados

Módulo Visual Composer con campos personalizados

Parámetros de los campos

Detallo a continuación los parámetros utilizados para registrar los campos del ejemplo.

  • heading: Utilizaremos este parámetro para indicar el título del campo.
  • param_name: Especifica en este parámetro el nombre del parámetro del shortcode al que debe aplicarse el valor.
  • description: Agrega una pequeña descripción para que el usuario qué valor tiene que especificar en el campo.
  • value: ¿El campo tiene algún valor por defecto? Éste es el parámetro para especificarlo.
  • admin_label: Si este parámetros es true, se mostrarán los valores del campo en el elemento del visual composer (fuera del cuadro de diálogo).

    Visual Composer admin_label

    En caso de que el parámetro admin_label es se muestran los valores de los campos en el elemento.

  • type: Este campo es el más importante ya que en él especificamos qué tipo de información vamos a guardar.
    Los valores más comunes son:

    • textarea_html: el WYSIWYG estándar de WordPress.
    • textfield: una simple caja de texto como la que hemos utilizado para el campo «tamaño de la tipografía».
    • textarea: un campo textarea.
    • dropdown: un selector de opciones que pasamos como parámetro a traves de un array.
    • attach_image: este tipo de campo nos permite cargar o seleccionar una imagen de nuestra librería.
    • posttypes: este campo nos muestra los «post types» disponibles con checkboxes para permitir su selección.
    • colorpicker: un selector de colores como el que hemos utilizado para los campos «Color del texto» y «Color de fondo».
    • textarea_raw_html: es un textarea en el que podemos agregar código HTML.
    • checkbox: campo de checkbox que puede tener 1 o más valores.

Conclusión

Siguiendo estos pasos podrás generar todos los módulos de Visual Composer que desees para los shortcodes de tu proyecto. Por fortuna la documentación de Visual Composer es excelente, podrás seguir ahondando sobre la función vc_map() y mucho más en su página web.

¿Cómo crear shortcodes en WordPress?

Miles de veces hemos oído hablar sobre los shortcodes pero rara vez los utilizamos o en ocasiones algún plugin nos pone estos códigos raros en el medio de nuestro texto, pero ¿para qué sirven? ¿cuándo utilizarlos y cómo? Veremos a continuación un ejemplo práctico y real para ver cómo utilizar esta gran funcionalidad de WordPress.


¿Para qué sirven los shortcodes?

En pocas palabras, los shortcodes sirven para facilitar la vida al usuario que crea contenido en WordPress. Desde un punto de vista más técnico un shortcode es una palabra clave que puede aceptar parámetros para introducir, modificar o quitar algún tipo de funcionalidad o estética de un post o página de WordPress. De esta manera con un una palabra clave el usuario puede incluir funcionalidad a su contenido sin tener que estar modificando HTML o Javascript de las plantillas.


¿Cómo identifico un shortcode?

Un shortcode puede escribirse de 4 maneras diferentes, aunque todo ellos son fácilmente identificables por estar encerrados entre corchetes en el contenido de nuestro post o página como por ejemplo [shortcode]. Pueden ser simples, con parámetros, contenedores de textos, o bien una mezcla de estas dos anteriores: con parámetros y contenedor de contenido. Veamos a continuación un ejemplo de cada uno de ellos para poder identificarlos:

Shortcode simple

[galeria]

Este código muestra un shortcode simple en el que la palabra «galeria» tiene alguna funcionalidad asociada. Por ejemplo, un post con este shortcode puede convertirse en un post con una galería de fotos.

Shortcode con parámetros

[galeria ids="120,121,123"]

Vemos en este ejemplo como el shortcode anterior puede recibir parámetros. En este caso la galería podría estar indicando que solo mostrará las imágenes destacadas de los posts 120, 121 y 123.

Shortcode contenedor de texto

[galeria]Exposición de Fernando Botero[/galeria]

Podemos ver cómo este shortcode encierra un texto utilizando una nomenclatura de apertura y cierre: [galeria][/galeria]. Este tipo de shortcodes puede utilizarse para aplicar cualquier funcionalidad que se necesite sobre el texto. Por ejemplo: convertir el texto en un <h1> y con una clase en particular que aplique estilos CSS.

Shortcode contenedor de texto y con parámetros

[galeria ids="120,121,123"]Exposición de Fernando Botero[/galeria]

En este ejemplo podemos ver los parámetros y el texto que contiene este shortcode. Adivinando un poco podríamos decir que este shortcode genera una galería de imágenes al que se le agrega un título.


¿Cómo crear un shortcode?

Para explicar cómo crear un shortcode vamos a partir de un ejemplo de un proyecto en el que estuve trabajando hace unas semanas:
El cliente me solicitó que se pudiera agregar un bloque de texto en el medio del contenido y que se pudiera configurar tanto el color de fondo como así también el color de texto.

requerimiento visual del shortcode
Requerimiento visual de la funcionalidad que necesita el cliente.

Para maquetar esta mockup nos basta con una etiqueta <p> y una clase que dé padding, tamaño de fuente, interlineado y color de texto y background. Pero tanto el color del texto como el de fondo son dinámicos, con lo cual no podemos incluirlos en la clase de CSS. Configuramos entonces los atributos restantes en una clase a la que llamaremos sc-textbox (ShortCode Textbox):

.sc-textbox {
    font-size: 20px;
    line-height: 28px;
    padding-bottom: 40px;
    padding-top: 40px;
    text-align: center;
}

Ahora solo nos resta crear el shortcode:

Registrando el shortcode

Para crear un shortcode solo debemos llamar a la función add_shortcode de WordPress en el que pasamos por parámetros el nombre del shortcode y la función asociada.

/**
 * Función que implementa el shortcode [sc-textbox]
 */
function sctextbox_callback( $atts, $content = null ) {
    
    // Genero los valores por defecto de los parámetros
    $params = shortcode_atts( array(
                                'text-color'        => '#000000',
                                'background-color'  => '#ffffff',
                            ), $atts );
    
    
    // Genero el string con estilos en línea
    $style = "style= 'color:{$params['text-color']}; background-color:{$params['background-color']}'";
    // Aplico el texto y el stilo a la etiqeta <p>
    return "<p class='sc-textbox' {$style}>{$content}</p>";
}
add_shortcode( 'sc-textbox', 'sctextbox_callback' );

Primeras pruebas con el shortcode

Una vez general el shortcode ya podremos utilizarlo en nuestros posts y páginas con la palabra clave especificada en la función add_shortcode, ej.:

[sc-textbox]Soy un texto dentro del shortcode "sc-textbox" sin parámetros[/sc-textbox]
[sc-textbox text-color="#FFFF00" background-color="#000000"]Soy un texto dentro del shortcode "sc-textbox" con parámetro de color y de background.[/sc-textbox]

obteniendo como resultado:

shortcode-ejemplo
Resultado visual del shortcode «sc-textbox»

¡Enhorabuena! Ya tienes tu primer shortcode funcionando. Solo tienes que documentar cómo funciona y enviárselo al usuario para que pueda utilizarlo en sus posts o páginas.


Un momento, el cliente pide cambios

A último momento el cliente pide que también pueda modificarse el tamaño del texto, ¿cómo afecta esto a nuestro código?
El impacto de estos cambios son mínimos ya que solo debemos quitar el font-size de la clase .sc-textbox en el CSS, agregar el nuevo parámetro a nuestra lista de «valores por defecto» y modificar la función del shortcode para implementar la nueva funcionalidad.

Cambios en el fichero style.css:

.sc-textbox {
    /* font-size: 20px; Comento la línea con el único objetivo de hacer visible el cambio aplicado */
    line-height: 28px;
    padding-bottom: 40px;
    padding-top: 40px;
    text-align: center;
}

Cambios en el fichero functions.php:

/**
 * Función que implementa el shortcode [sc-textbox]
 */
function sctextbox_callback( $atts, $content = null ) {
    
    // Genero los valores por defecto de los parámetros
    $params = shortcode_atts( array(
                                'text-color'        => '#000000',
                                'background-color'  => '#ffffff',
                                'font-size'  		=> '20',
                            ), $atts );
    
    
    // Genero el string con estilos en línea
    $style = "style= 'color:{$params['text-color']}; background-color:{$params['background-color']}; font-size:{$params['font-size']}px;'";
    // Aplico el texto y el stilo a la etiqeta <p>
    return "<p class='sc-textbox' {$style}>{$content}</p>";
}
add_shortcode( 'sc-textbox', 'sctextbox_callback' );

Cambios en el contenido de nuestro post de ejemplo:

[sc-textbox]Soy un texto dentro del shortcode "sc-textbox" sin parámetros[/sc-textbox]
[sc-textbox text-color="#FFFF00" background-color="#000000" font-size="35"]Soy un texto dentro del shortcode "sc-textbox" con parámetro de color, background y tamaño de texto.[/sc-textbox]

Obteniendo como resultado final:

shortcode con cambios
Resultado final del shortcode.

Conclusión

Como hemos dicho al principio del artículo generar shortcodes para los usuarios de WordPress nos garantizará que no tengan que estar aprendiendo código HTML o CSS para implementar sus propios estilos o funcionalidad. Basta con enseñarle una simple palabra clave y algunos parámetros para modificar su comportamiento.

Funciona con WordPress & Tema de Anders Norén