Nous avons tous vécu cela: vous achetez un thème premium qui est vraiment génial, et vous achetez également un plugin incroyable (l’un des miens par exemple!) Mais assembler le thème et le plugin ne fonctionne tout simplement pas. Et alors? Le plugin ou le thème a-t-il des bogues?

La plupart du temps, lorsque cela se produit, c’est lorsque vous utilisez des codes courts. Imaginons que vous venez d’acheter un plugin pour gérer les «témoignages». Vous avez lu attentivement la documentation et vous savez que pour afficher les témoignages, vous devez inclure le shortcode suivant [testimonials]. Mais lorsque vous le faites, rien n’apparaît.

La raison pour laquelle le shortcode n’est pas remplacé par des témoignages, c’est parce que votre thème ET le plugin définissent exactement le même shortcode.

Comme les fichiers de plugins sont chargés avant les fichiers de thèmes, ils sont écrasés et ne sont pas entièrement pris en compte dans ce cas.

C’est pourquoi je voulais vous montrer une méthode simple pour désenregistrer le shortcode du thème et le remplacer par celui du plugin.

Étape 1: Créez un plugin simple

Nous devons créer un plugin 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
*/

Étape 2: Vérifiez si le code court existe

Ceci est l’étape la plus importante. C’est là que vous vérifiez l’existence d’un shortcode. WordPress a une variable globale «$ shortcode_tags» qui stocke la liste de tous les shortcodes enregistrés. Il nous suffit donc de parcourir cette variable et de vérifier si le shortcode que nous recherchons en fait partie.

/**
 * 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;

}

C’est la fonction générique que nous utiliserons dans une fonction plus spécifique incluant le slug de shortcode à rechercher. Cette fonction renvoie TRUE si le shortcode existe, ou FALSE si ce n’est pas le cas.

Étape 3: Supprimez le shortcode et enregistrez le nouveau

La fonction suivante utilise le rc_asc_shortcode_exists () que nous venons de créer. Il vérifie simplement l’existence du shortcode, le remplace s’il existe ou ajoute le shortcode s’il n’est pas déjà enregistré.

/**
 * 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' );
    }
}

Étape 4: définir la nouvelle fonction de code court

Tout ce que vous avez à faire est de définir le contenu de la fonction “my_testimonials_shortcode ()”, et c’est fait!

/**
 * Creates the new shortcode
 *
 * @since 1.0
 *
 * @return void
 */
function my_testimonials_function() {

    return 'this replaces the previous shortcode!';
}

Comme vous pouvez le voir, le shortcode précédemment déclaré est maintenant remplacé par le bon shortcode.

Share: