Todos hemos experimentado esto: compras un tema premium que es realmente genial y también compras un complemento increíble (¡uno de los míos, por ejemplo!), Pero juntar el tema y el complemento simplemente no funciona en absoluto. ¿Y qué? ¿Tiene errores el plugin o el tema?
La mayor parte del tiempo, cuando esto sucede, es cuando se utilizan códigos cortos. Imaginemos que acaba de comprar un complemento para manejar «testimonios». Lees atentamente la documentación y sabes que para mostrar los testimonios necesitas incluir el siguiente shortcode [testimonials]. Pero cuando lo hace, no aparece nada.
La razón por la que el código abreviado no se reemplaza por testimonios es porque su tema Y el complemento definen exactamente el mismo código abreviado.
Como los archivos de complementos se cargan antes que los archivos de temas, se sobrescriben y no se tienen en cuenta por completo en este caso.
Es por eso que quería mostrarte un método simple para anular el registro del código corto del tema y reemplazarlo por el del complemento.
Paso 1: crea un complemento simple
Necesitamos crear un complemento simple:
<?php
/*
Plugin Name: Avoid Shortcodes conflicts
Plugin URL: http://remicorson.com
Description: A little plugin to avoid conflicts bewteen shortcodes
Version: 1.0
Author: Remi Corson
Author URI: http://remicorson.com
Contributors: corsonr
Text Domain: rc_asc
Domain Path: languages
*/
Paso 2: compruebe si existe el código corto
Éste es el paso más importante. Es donde verifica la existencia de un código corto. WordPress tiene una variable global «$ shortcode_tags» que almacena la lista de todos los códigos cortos registrados. Entonces, solo necesitamos revisar esta variable y verificar si el código corto que estamos buscando forma parte de ella.
/**
* Check if a shortcode is already registered
*
* @since 1.0
*
* @param $shortcode string The shortcode slug to test
*
* @return void
*/
function rc_asc_shortcode_exists( $shortcode = false ) {
global $shortcode_tags;
//echo '<pre>'; var_dump($shortcode_tags); echo '</pre>';
if ( ! $shortcode )
return false;
if ( array_key_exists( $shortcode, $shortcode_tags ) )
return true;
return false;
}
Esta es la función genérica que usaremos en una función más específica, incluido el slug de código corto a buscar. Esta función devuelve VERDADERO si el código corto existe, o FALSO si no existe.
Paso 3: elimine el código corto y registre el nuevo
La siguiente función está usando rc_asc_shortcode_exists () que acabamos de crear. Simplemente verifica la existencia del código corto, lo reemplaza si existe o agrega el código corto si aún no está registrado.
/**
* Check if a shortcode is already registered and replace it
*
* @since 1.0
*
* @return void
*/
function rc_asc_replace_shortcode() {
$shortcode = 'testimonials';
if( rc_asc_shortcode_exists( $shortcode ) ) {
remove_shortcode( $shortcode );
add_shortcode( $shortcode, 'my_testimonials_function' );
} else {
add_shortcode( $shortcode, 'my_testimonials_function' );
}
}
Paso 4: Defina la nueva función de código corto
Todo lo que tienes que hacer es definir el contenido de la función «my_testimonials_shortcode ()», ¡y listo!
/**
* Creates the new shortcode
*
* @since 1.0
*
* @return void
*/
function my_testimonials_function() {
return 'this replaces the previous shortcode!';
}
Como puede ver, el shortcode declarado anteriormente ahora se reemplaza por el shortcode correcto.