Si vous avez déjà perdu une personnalisation Fusion Builder après une mise à jour Avada, vous connaissez la douleur : tout “marchait hier”, et ce matin votre bouton, votre CSS, ou votre petit script a disparu.

Le problème vient rarement d’Avada lui-même. Dans mon expérience, c’est presque toujours une personnalisation faite au mauvais endroit (dans le thème parent, dans un fichier modifié à la main, ou dans un snippet collé sans hook). La solution fiable, en 2026, reste la même : un thème enfant propre + un petit plugin “site” pour le code fonctionnel, et des hooks WordPress/Avada au bon moment.

Le problème / Le besoin

Vous utilisez Avada (avec Fusion Builder) et vous voulez :

  • ajouter du CSS/JS uniquement quand Fusion Builder est utilisé,
  • créer un petit shortcode pour insérer un bloc réutilisable,
  • ajouter un paramètre simple (ex. une classe CSS) à un élément Fusion,
  • ou modifier proprement des réglages via hooks, sans toucher au thème parent.

À la fin, vous saurez mettre en place un thème enfant Avada “propre”, et surtout mettre chaque type de personnalisation (CSS, JS, PHP) pour que les mises à jour Avada et WordPress 6.9.4 ne cassent rien.

Avant le premier bloc de code : où coller le code

  • CSS/JS d’apparence : dans le thème enfant (fichiers style.css, assets/... + functions.php pour l’enqueue).
  • Fonctionnel (shortcodes, sécurité, logique) : dans un plugin “site” (recommandé) ou un mu-plugin (encore plus robuste). Évitez de tout mettre dans functions.php si c’est du “métier”.

Fonctions WordPress que vous allez croiser (avec doc officielle) :

Résumé rapide

  • Créer un thème enfant Avada minimal (style.css + functions.php) sans modifier le parent.
  • Charger votre CSS/JS avec wp_enqueue_scripts, et uniquement sur les pages qui en ont besoin.
  • Créer un plugin “site” pour vos shortcodes et votre logique (plus stable qu’un functions.php).
  • Ajouter un shortcode sécurisé utilisable dans Fusion Builder.
  • Ajouter un peu de JS “safe” (sans dépendre de hacks) et des garde-fous (permissions, conditions, debug).

Quand utiliser cette solution

  • Vous voulez personnaliser Avada/Fusion Builder sans perdre vos changements à la prochaine mise à jour.
  • Vous avez besoin d’un petit composant réutilisable (shortcode) qui s’insère dans des pages Fusion Builder.
  • Vous voulez charger du CSS/JS conditionnel (performance) au lieu de tout charger partout.
  • Vous travaillez sur un site client : il faut une structure maintenable (thème enfant + plugin “site”).

Quand ne PAS utiliser cette solution

  • Vous voulez juste changer des couleurs/typos globales : passez d’abord par les options Avada (c’est fait pour ça).
  • Vous voulez un “gros” module Fusion Builder sur-mesure : un thème enfant ne suffit pas toujours, il faut souvent un développement plus avancé (et suivre l’API Avada/Fusion).
  • Vous avez 30 snippets “en vrac” : migrez vers un plugin “site” ou un mu-plugin, sinon vous allez casser votre site au prochain copier-coller.
  • Vous êtes sur un environnement verrouillé (hébergeur qui bloque l’édition de fichiers) : privilégiez un dépôt Git + déploiement, ou un plugin dédié.

Prérequis / avant de commencer

Versions et environnement

  • WordPress : 6.9.4 (avril 2026) ou supérieur.
  • PHP : 8.1 minimum recommandé. Vérifiez sur les prérequis WordPress.
  • Avada + Fusion Builder : versions récentes (mettez à jour avant de commencer).

Sauvegarde et sécurité

  • Faites une sauvegarde complète (fichiers + base) avant toute modification.
  • Testez sur un staging si possible. J’ai souvent vu des sites casser pour un simple point-virgule oublié dans functions.php.
  • Ne modifiez jamais le thème parent Avada. Même une “petite modif” sera écrasée à la mise à jour.

Outils utiles

  • Un accès FTP/SFTP ou gestionnaire de fichiers.
  • Un éditeur de code (VS Code).
  • Activer le debug sur staging (voir Debug WordPress).

L’approche naïve (et pourquoi l’éviter)

Voici ce que je vois très souvent sur des sites Avada :

  • Modifier directement /wp-content/themes/Avada/functions.php (ou pire, des fichiers du builder).
  • Coller du JS dans un widget “HTML” ou dans un champ d’options global, sans condition de chargement.
  • Ajouter du CSS dans 4 endroits différents (Customizer, options Avada, un plugin de CSS, et un fichier).

Exemple typique (à ne pas faire) : du JS injecté partout, sans dépendances, sans versioning, sans contrôle.

<?php
// ❌ Mauvaise pratique : code collé dans le thème parent, ou sans enqueue.
add_action('wp_footer', function () {
    ?>
    <script>
      // Code exécuté partout, pas seulement là où Fusion Builder est utilisé
      console.log('Hello');
    </script>
    <?php
});

Pourquoi c’est un problème :

  • Mises à jour : si vous modifiez le parent, vous perdez tout.
  • Performance : scripts chargés partout, même sur des pages sans besoin.
  • Débogage : impossible de savoir d’où vient le code après 6 mois.
  • Sécurité : si vous manipulez des entrées utilisateur sans sanitation/escaping, vous ouvrez la porte à des XSS.

La bonne approche — tutoriel pas à pas

Étape 1 — Créer le thème enfant Avada

Dans /wp-content/themes/, créez un dossier : avada-child-custom.

1) Fichier style.css

Créez /wp-content/themes/avada-child-custom/style.css :

/*
Theme Name: Avada Child Custom
Template: Avada
Version: 1.0.0
Text Domain: avada-child-custom
*/

/* Votre CSS ici (ou import via enqueue) */

À retenir : la ligne Template: Avada doit correspondre au dossier exact du thème parent (souvent Avada, sensible à la casse selon serveur).

2) Fichier functions.php

Créez /wp-content/themes/avada-child-custom/functions.php. Ce fichier sert à charger vos assets et à faire des ajustements “thème”.

<?php
/**
 * Functions du thème enfant Avada.
 * Compatible WordPress 6.9.4+ / PHP 8.1+
 */

defined('ABSPATH') || exit;

/**
 * Charge la feuille de style du thème enfant.
 * On évite @import dans style.css (moins performant).
 */
add_action('wp_enqueue_scripts', function () {
    $theme = wp_get_theme();
    $ver   = $theme->get('Version') ?: '1.0.0';

    // Style du thème enfant
    wp_enqueue_style(
        'avada-child-custom',
        get_stylesheet_uri(),
        array(),
        $ver
    );
}, 20);

Pourquoi la priorité 20 ? Dans la pratique, ça aide à passer après certains enqueues du parent. Ce n’est pas magique, mais ça évite pas mal de “mon CSS ne s’applique pas”.

Étape 2 — Créer un plugin “site” pour vos personnalisations Fusion Builder

Le thème enfant, c’est bien pour l’apparence. Pour le fonctionnel (shortcodes, logique, sécurité), je préfère un plugin “site”. Avantage : si vous changez de thème un jour, votre contenu (shortcodes) et vos fonctionnalités restent.

Créez le dossier :

/wp-content/plugins/avada-fusion-customizations/

Puis le fichier :

/wp-content/plugins/avada-fusion-customizations/avada-fusion-customizations.php

<?php
/**
 * Plugin Name: Avada Fusion Customizations (Site)
 * Description: Personnalisations sûres pour Avada / Fusion Builder (shortcodes, assets conditionnels).
 * Version: 1.0.0
 * Requires at least: 6.9
 * Requires PHP: 8.1
 * Author: Votre Nom
 * License: GPL-2.0-or-later
 */

defined('ABSPATH') || exit;

final class AFC_Site_Customizations {

    public static function init(): void {
        add_action('init', array(__CLASS__, 'register_shortcodes'));
        add_action('wp_enqueue_scripts', array(__CLASS__, 'enqueue_assets'));
    }

    /**
     * Déclare les shortcodes.
     * Hook "init" : WordPress a chargé ses APIs, et c'est l'endroit standard.
     */
    public static function register_shortcodes(): void {
        add_shortcode('afc_notice', array(__CLASS__, 'shortcode_notice'));
    }

    /**
     * Shortcode: [afc_notice type="info|warning|success" title="..." ]Contenu[/afc_notice]
     *
     * Sécurité :
     * - On sanitize les attributs (type, title)
     * - On escape les attributs dans le HTML
     * - On autorise un sous-ensemble HTML dans le contenu via wp_kses_post()
     */
    public static function shortcode_notice(array $atts = array(), string $content = ''): string {
        $atts = shortcode_atts(
            array(
                'type'  => 'info',
                'title' => '',
                'class' => '',
            ),
            $atts,
            'afc_notice'
        );

        $type = sanitize_key($atts['type']);
        if (!in_array($type, array('info', 'warning', 'success'), true)) {
            $type = 'info';
        }

        $title = sanitize_text_field($atts['title']);
        $class = sanitize_html_class($atts['class']);

        $content = do_shortcode($content);
        $content = wp_kses_post($content);

        $classes = trim('afc-notice afc-notice--' . $type . ' ' . $class);

        ob_start();
        ?>
        <div class="<?php echo esc_attr($classes); ?>" role="note">
            <?php if ($title !== '') : ?>
                <strong class="afc-notice__title"><?php echo esc_html($title); ?></strong><br>
            <?php endif; ?>
            <span class="afc-notice__content"><?php echo $content; ?></span>
        </div>
        <?php
        return (string) ob_get_clean();
    }

    /**
     * Charge CSS/JS seulement si le shortcode est présent sur la page.
     * Méthode simple et efficace pour débuter.
     */
    public static function enqueue_assets(): void {
        if (is_admin()) {
            return;
        }

        if (!is_singular()) {
            return;
        }

        $post = get_post();
        if (!$post instanceof WP_Post) {
            return;
        }

        // Détection simple : si le contenu contient le shortcode, on charge les assets.
        if (!has_shortcode($post->post_content, 'afc_notice')) {
            return;
        }

        $ver = '1.0.0';

        wp_enqueue_style(
            'afc-notice',
            plugins_url('assets/afc-notice.css', __FILE__),
            array(),
            $ver
        );

        wp_enqueue_script(
            'afc-notice',
            plugins_url('assets/afc-notice.js', __FILE__),
            array(),
            $ver,
            true
        );
    }
}

AFC_Site_Customizations::init();

Créez ensuite :

  • /wp-content/plugins/avada-fusion-customizations/assets/afc-notice.css
  • /wp-content/plugins/avada-fusion-customizations/assets/afc-notice.js
.afc-notice{
  padding: 14px 16px;
  border-radius: 8px;
  border: 1px solid rgba(0,0,0,.08);
  background: #f7f7f8;
  margin: 16px 0;
}
.afc-notice__title{ display:inline-block; margin-bottom:6px; }
.afc-notice--info{ background:#f2f7ff; border-color:#cfe0ff; }
.afc-notice--warning{ background:#fff7e6; border-color:#ffe2a8; }
.afc-notice--success{ background:#effbf1; border-color:#bfe8c7; }
(function () {
  // JS volontairement minimal : exemple "safe" qui ne dépend pas d'Avada.
  // Vous pouvez enrichir plus tard (dismiss, analytics, etc.).
  document.addEventListener('click', function (e) {
    var el = e.target;
    if (!el) return;
    // Exemple : si un jour vous ajoutez un bouton "Fermer"
    if (el.matches && el.matches('[data-afc-dismiss]')) {
      var box = el.closest('.afc-notice');
      if (box) box.remove();
    }
  });
})();

Étape 3 — Activer le thème enfant + le plugin

  1. Admin WordPress > Apparence > Thèmes : activez Avada Child Custom.
  2. Extensions : activez Avada Fusion Customizations (Site).

Étape 4 — Utiliser dans Fusion Builder

Dans Fusion Builder, ajoutez un élément “Text Block” (ou équivalent) et insérez :

[afc_notice type="warning" title="À vérifier"]
Pensez à mettre à jour vos permaliens après migration.
[/afc_notice]

Vous avez maintenant :

  • un shortcode stable (plugin),
  • des assets chargés uniquement si nécessaire,
  • un thème enfant réservé à l’apparence globale.

Code complet

Cette section regroupe tout ce que vous devez copier-coller.

Thème enfant : functions.php

<?php
/**
 * Functions du thème enfant Avada.
 * WP 6.9.4+ / PHP 8.1+
 */
defined('ABSPATH') || exit;

add_action('wp_enqueue_scripts', function () {
    $theme = wp_get_theme();
    $ver   = $theme->get('Version') ?: '1.0.0';

    wp_enqueue_style(
        'avada-child-custom',
        get_stylesheet_uri(),
        array(),
        $ver
    );
}, 20);

Plugin “site” : avada-fusion-customizations.php

<?php
/**
 * Plugin Name: Avada Fusion Customizations (Site)
 * Description: Personnalisations sûres pour Avada / Fusion Builder (shortcodes, assets conditionnels).
 * Version: 1.0.0
 * Requires at least: 6.9
 * Requires PHP: 8.1
 * License: GPL-2.0-or-later
 */
defined('ABSPATH') || exit;

final class AFC_Site_Customizations {

    public static function init(): void {
        add_action('init', array(__CLASS__, 'register_shortcodes'));
        add_action('wp_enqueue_scripts', array(__CLASS__, 'enqueue_assets'));
    }

    public static function register_shortcodes(): void {
        add_shortcode('afc_notice', array(__CLASS__, 'shortcode_notice'));
    }

    public static function shortcode_notice(array $atts = array(), string $content = ''): string {
        $atts = shortcode_atts(
            array(
                'type'  => 'info',
                'title' => '',
                'class' => '',
            ),
            $atts,
            'afc_notice'
        );

        $type = sanitize_key($atts['type']);
        if (!in_array($type, array('info', 'warning', 'success'), true)) {
            $type = 'info';
        }

        $title = sanitize_text_field($atts['title']);
        $class = sanitize_html_class($atts['class']);

        $content = do_shortcode($content);
        $content = wp_kses_post($content);

        $classes = trim('afc-notice afc-notice--' . $type . ' ' . $class);

        ob_start();
        ?>
        <div class="<?php echo esc_attr($classes); ?>" role="note">
            <?php if ($title !== '') : ?>
                <strong class="afc-notice__title"><?php echo esc_html($title); ?></strong><br>
            <?php endif; ?>
            <span class="afc-notice__content"><?php echo $content; ?></span>
        </div>
        <?php
        return (string) ob_get_clean();
    }

    public static function enqueue_assets(): void {
        if (is_admin() || !is_singular()) {
            return;
        }

        $post = get_post();
        if (!$post instanceof WP_Post) {
            return;
        }

        if (!has_shortcode($post->post_content, 'afc_notice')) {
            return;
        }

        $ver = '1.0.0';

        wp_enqueue_style(
            'afc-notice',
            plugins_url('assets/afc-notice.css', __FILE__),
            array(),
            $ver
        );

        wp_enqueue_script(
            'afc-notice',
            plugins_url('assets/afc-notice.js', __FILE__),
            array(),
            $ver,
            true
        );
    }
}

AFC_Site_Customizations::init();

Assets

.afc-notice{
  padding: 14px 16px;
  border-radius: 8px;
  border: 1px solid rgba(0,0,0,.08);
  background: #f7f7f8;
  margin: 16px 0;
}
.afc-notice__title{ display:inline-block; margin-bottom:6px; }
.afc-notice--info{ background:#f2f7ff; border-color:#cfe0ff; }
.afc-notice--warning{ background:#fff7e6; border-color:#ffe2a8; }
.afc-notice--success{ background:#effbf1; border-color:#bfe8c7; }
(function () {
  document.addEventListener('click', function (e) {
    var el = e.target;
    if (!el) return;
    if (el.matches && el.matches('[data-afc-dismiss]')) {
      var box = el.closest('.afc-notice');
      if (box) box.remove();
    }
  });
})();

Explication du code

Actions, filtres : la base (sans jargon inutile)

Un hook est un “point d’accroche” dans WordPress. Il y a deux familles :

  • Action : WordPress dit “je suis à tel moment”, et vous exécutez du code (ex. wp_enqueue_scripts).
  • Filtre : WordPress vous donne une valeur, vous la modifiez et vous la renvoyez (ex. modifier un texte).

Vous branchez votre fonction avec add_action() ou add_filter().

Pourquoi un plugin “site” plutôt que tout dans functions.php

functions.php dépend du thème actif. Si vous changez de thème (même temporairement), vos shortcodes disparaissent et vos contenus affichent des crochets bruts. Un plugin “site” est indépendant du thème.

Sur des sites Avada, j’ai souvent vu des migrations vers un autre thème bloquées parce que tout le “métier” était coincé dans le thème enfant.

Enqueue : pourquoi c’est la méthode correcte

Charger un script avec wp_enqueue_script() :

  • évite les doublons,
  • gère les dépendances,
  • permet le cache navigateur via une version,
  • reste compatible avec les optimisations (concat/minify) de plugins de cache.

Condition de chargement : has_shortcode()

On charge CSS/JS uniquement si le contenu contient [afc_notice]. C’est une optimisation simple, souvent suffisante pour un blog.

Limite : si votre shortcode est injecté via un widget, un header builder, ou un template Avada hors contenu, has_shortcode() ne le verra pas. Dans ce cas, vous passerez à une variante (voir plus bas).

Sécurité : sanitation vs escaping

  • Sanitization : nettoyer une entrée (ex. sanitize_text_field()).
  • Escaping : sécuriser une sortie HTML (ex. esc_attr(), esc_html()).

Pour le contenu riche, wp_kses_post() est un bon compromis : il autorise les balises courantes d’un contenu WordPress, mais retire le dangereux.

Variantes et cas d’usage

Variante 1 — Charger les assets sur toutes les pages Avada (simple, moins perf)

Si vous ne voulez pas vous battre avec la détection, chargez partout. Ce n’est pas “horrible” si votre CSS/JS est léger.

add_action('wp_enqueue_scripts', function () {
    $ver = '1.0.0';
    wp_enqueue_style('afc-notice', plugins_url('assets/afc-notice.css', __FILE__), array(), $ver);
    wp_enqueue_script('afc-notice', plugins_url('assets/afc-notice.js', __FILE__), array(), $ver, true);
});

Variante 2 — Détection plus robuste via un flag (quand vous contrôlez l’insertion)

Si vous utilisez le shortcode dans des zones qui ne sont pas post_content, vous pouvez poser un “drapeau” quand le shortcode est rendu.

final class AFC_Assets_Flag {
    private static bool $needs_assets = false;

    public static function mark_needed(): void {
        self::$needs_assets = true;
    }

    public static function needs_assets(): bool {
        return self::$needs_assets;
    }
}

// Dans le shortcode, avant de retourner le HTML :
AFC_Assets_Flag::mark_needed();

// Puis dans enqueue_assets(), au lieu de has_shortcode():
if (!AFC_Assets_Flag::needs_assets()) {
    return;
}

Attention : ce pattern marche bien si WordPress exécute le shortcode avant wp_enqueue_scripts, ce qui n’est pas toujours garanti selon le contexte (builder, cache, fragments). Testez sur votre site.

Variante 3 — Ajouter une option “class” pour cibler dans Fusion Builder

Vous pouvez déjà passer class="ma-classe" au shortcode. C’est volontaire : dans Fusion Builder, on aime pouvoir styliser “au cas par cas” sans toucher le code.

[afc_notice type="success" class="u-mb-0" title="OK"]
Votre formulaire a bien été envoyé.
[/afc_notice]

Compatibilité Divi 5 / Elementor / Avada

Avada / Fusion Builder

  • Le shortcode fonctionne dans les blocs de texte Fusion Builder.
  • Pour des intégrations plus profondes (ajouter un nouvel “Element” Fusion), Avada expose des APIs spécifiques. Je ne les détaille pas ici volontairement : elles évoluent, et beaucoup de débutants se retrouvent avec un site cassé après update. Commencez par shortcodes + CSS/JS conditionnels.

Elementor

  • Elementor accepte les shortcodes via un widget “Shortcode”. Votre plugin “site” reste valable si vous migrez.
  • Le chargement conditionnel basé sur has_shortcode(post_content) peut rater si Elementor stocke la mise en page ailleurs (selon configuration). Dans ce cas, utilisez la variante “charger partout” ou une détection adaptée.

Divi 5

  • Divi accepte les shortcodes dans un module “Code” ou “Texte” (selon configuration).
  • Même remarque : la détection via post_content n’est pas toujours fiable avec les builders. Si vous cherchez la stabilité, chargez les assets partout ou mettez en place un flag/détection spécifique.

Vérifications après mise en place

  • Apparence > Thèmes : le thème enfant est actif, et Avada est toujours installé.
  • Extensions : le plugin “site” est actif.
  • Ouvrez une page avec le shortcode : le bloc s’affiche avec le style.
  • Inspecteur navigateur > Réseau : afc-notice.css et afc-notice.js sont chargés (uniquement sur la page concernée si vous gardez la condition).
  • Testez une mise à jour mineure (staging) : votre personnalisation reste.

Tableau de diagnostic (rapide)

Symptôme Cause probable Vérification Solution
Le thème enfant n’apparaît pas Mauvais nom de dossier / mauvais champ Template Vérifiez Template: Avada et le dossier du parent Corrigez la casse et le nom exact
Le shortcode s’affiche en texte brut Plugin non activé ou erreur PHP Extensions + Logs debug Activez le plugin, corrigez l’erreur
Le bloc s’affiche sans style CSS non chargé (condition ratée) ou cache Réseau navigateur + vider cache Chargez partout ou ajustez la détection
Erreur 500 après collage Point-virgule manquant / accolade Logs PHP Revenir en arrière via FTP, corriger la syntaxe

Si ça ne marche pas

1) Vérifier les erreurs PHP (le plus fréquent)

Activez le debug sur staging, selon la doc officielle : Debug WordPress.

Si vous voyez une erreur du type “Parse error: syntax error”, c’est souvent :

  • une parenthèse oubliée,
  • un point-virgule manquant,
  • un <?php collé au mauvais endroit.

2) Confirmer l’emplacement des fichiers

  • Le thème enfant doit être dans /wp-content/themes/avada-child-custom/.
  • Le plugin doit être dans /wp-content/plugins/avada-fusion-customizations/.
  • Les assets doivent être dans /assets/ au bon niveau.

3) Vider les caches

J’ai souvent croisé des “ça ne marche pas” qui étaient juste un cache :

  • cache plugin (page cache),
  • cache serveur/CDN,
  • cache navigateur (hard refresh).

4) Vérifier les priorités de hook

Si votre CSS est écrasé, augmentez la priorité (ex. 30) ou rendez votre sélecteur plus spécifique. Évitez !important tant que vous pouvez.

5) Tester en désactivant temporairement les plugins de snippets

Quand un site utilise 2 systèmes de snippets (plugin + functions.php + “Code Snippets”), on voit des collisions et du code dupliqué. Désactivez temporairement pour isoler.

Pièges et erreurs courantes

Erreur Cause Solution
Coller le code dans le thème parent Avada Réflexe débutant Utilisez un thème enfant + plugin “site”
Le site passe en écran blanc (WSOD) Erreur de syntaxe PHP Revenez en arrière via FTP, activez les logs, corrigez
Utiliser un hook inadapté Enqueue fait trop tôt/trop tard Utilisez wp_enqueue_scripts côté front
Confondre action et filtre Mauvais mental model Action = exécuter, filtre = modifier et retourner
JS/CSS non chargé Mauvais chemin plugins_url() ou condition ratée Vérifiez l’URL dans l’onglet Réseau, testez “charger partout”
Tester directement en production Pas de staging Sauvegarde + staging, au minimum une fenêtre de maintenance
Erreur liée à PHP trop ancien Hébergement non à jour Passez en PHP 8.1+ (ou adaptez, mais ce n’est plus recommandé)
Code d’un ancien tutoriel incompatible Fonctions obsolètes / patterns dépassés Suivez les APIs WP actuelles, utilisez enqueue + escaping

Conseils sécurité, performance et maintenance

Sécurité

  • Ne sortez jamais des attributs sans esc_attr() et du texte sans esc_html().
  • Évitez d’autoriser du HTML arbitraire : wp_kses_post() est un bon standard pour du contenu.
  • Si vous ajoutez un formulaire (même simple), utilisez un nonce avec wp_nonce_field() et vérifiez-le côté serveur avec wp_verify_nonce().

Performance

  • Gardez vos assets petits et versionnés.
  • Chargez conditionnel si c’est fiable chez vous. Sinon, chargez partout mais restez minimal.
  • Évitez d’ajouter 10 bibliothèques JS “pour un bouton”.

Maintenance

  • Versionnez votre plugin “site” (même en 1.0.0, 1.0.1…).
  • Documentez vos hooks dans des commentaires. Dans 6 mois, vous serez content de vous.
  • Si vous avez plusieurs personnalisations, séparez en fichiers (shortcodes.php, assets.php) et faites des require_once.

Ressources

FAQ

Est-ce que je dois forcément créer un thème enfant pour Avada ?

Si vous touchez au code (même un petit bout), oui. Sinon, vos modifications seront écrasées. Pour du CSS léger, vous pouvez parfois rester dans les options Avada, mais dès que ça devient “répétable”, le thème enfant est plus propre.

Pourquoi mettre les shortcodes dans un plugin plutôt que dans functions.php ?

Parce que le contenu de vos pages dépend des shortcodes. Si vous changez de thème, vous perdez l’exécution. Un plugin “site” reste actif независимо du thème.

Je peux utiliser un plugin “Code Snippets” à la place ?

Oui, mais je le réserve aux micro-snippets. Sur des sites Avada, j’ai vu trop de snippets se marcher dessus, ou être exportés/importés sans contrôle. Un plugin “site” est plus clair et déployable.

Le CSS ne se charge pas sur certaines pages Fusion Builder

Probable que le shortcode n’est pas dans post_content (template, header, bloc dynamique). Passez à la variante “charger partout” ou implémentez une détection adaptée à votre usage.

Puis-je ajouter un “vrai” élément Fusion Builder personnalisé ?

Oui, mais c’est un sujet plus avancé : il faut suivre l’API Avada/Fusion, et tester à chaque mise à jour. Pour un blogueur débutant, shortcodes + CSS/JS couvrent déjà 80% des besoins.

Dois-je créer un thème enfant même si j’utilise Avada uniquement avec Fusion Builder ?

Oui, si vous ajoutez du code. Fusion Builder gère la mise en page, mais votre CSS/JS et vos ajustements doivent vivre dans un endroit “update-safe”.

Que faire si une mise à jour Avada casse mon style ?

Comparez vos sélecteurs CSS avec le HTML généré (inspecteur). Souvent, Avada change une classe ou une structure. Gardez vos personnalisations ciblées (évitez les sélecteurs trop “profonds” dépendants du DOM).

Comment éviter de casser le site en éditant functions.php ?

Travaillez sur staging, utilisez un éditeur avec coloration/syntax check, et gardez un accès FTP ouvert. En cas d’erreur, renommez temporairement le dossier du thème enfant pour revenir au parent.

Est-ce compatible WordPress 6.9.4 et PHP 8.1 ?

Oui. Le code utilise des APIs stables (enqueue, shortcodes, escaping) et une classe simple. Si votre hébergement est encore en PHP 7.x, mettez à niveau : beaucoup d’erreurs “bizarres” viennent de là.

Je veux ajouter un formulaire dans un élément Fusion, je fais comment proprement ?

Ajoutez-le via shortcode dans le plugin “site”, et sécurisez avec nonce + vérification de capacité + sanitation. Ne faites pas de traitement “POST” brut dans un template.