Résoudre les conflits Bootstrap

WP Customer Area utilise Bootstrap comme outil de développement. Beaucoup de plugin ou thèmes peuvent également utiliser Bootstrap et celui-ci peut provoquer des conflits avec celui chargé par WP Customer Area.

Si vos sous-menus ne s’affichent pas, ou si vous avez remarqué quelque chose qui semble ne pas s’afficher correctement, vous devriez commencer par suivre les étapes mentionnées dans notre FAQ Comment vérifier si on a un conflit avec un autre plugin ?. Vous pouvez également activer le thème TwentyTwelve+ et vérifier si les menus fonctionnent à nouveau. Si c’est le cas, alors le conflit provient du thème que vous utilisez.

Ce conflit provient des librairies Javascript chargées en double. Pour réparer ce conflit, vous allez avoir besoin de désactiver soit les scripts Bootstrap chargés par votre thème, soit ceux chargés par WP Customer Area. La meilleure méthode pour vous serait de désactiver les Bootstrap chargés par votre thème quand nous affichons une page WP Customer Area. Pour ce faire, vous devez explorer les fichiers PHP de votre thème (commencez par regarder dans functions.php), et trouvez où les scripts Bootstrap sont chargés. Cela devrait ressembler à ceci:

wp_enqueue_script('bootstrap-scripts');

Notez que les noms donnés aux styles ou scripts peuvent varier et dépendent de votre thème (bootstrap-scripts est seulement un example de nom de script que votre thème pourrait utiliser, vous devez trouver le bon !).

Si vous ne parvenez pas à trouver cette ligne de code en fouillant dans les fichiers, récupérez un éditeur de code avancé (Notepadd++ ou autre) et effectuez une action de type chercher dans les fichiers pour le mot wp_enqueue_script, puis copiez/collez ce nom dans la fonction ci-dessous, à la place du nom bootstrap-scripts donné en guise d’exemple.

Une fois que vous les avez trouvés, ajoutez la fonction suivante au bas de votre fichier functions.php (de préférence, dans un thème enfant):

function fix_cuar_and_theme_bootstrap_conflict(){
    if (function_exists('cuar_is_customer_area_page')
        && (cuar_is_customer_area_page(get_queried_object_id())
            || cuar_is_customer_area_private_content(get_the_ID())))
    {
        wp_dequeue_script('bootstrap-scripts');
    }
}
add_action('wp_enqueue_scripts', 'fix_cuar_and_theme_bootstrap_conflict', 20);

N’oubliez pas de remplacer le nom bootstrap-scripts par celui que vous avez trouvé dans votre thème ou cette fonction n’aura aucun effet.

Si vous préférez désactiver le Bootstrap de WP Customer Area à la place de celui de votre thème ou plugin, vous pouvez utiliser nos  theme_supports.