WordPress : Désactiver le CSS interne personnalisé ajouté par theme.json pour certaines pages

Publié par Jean-Michel le

Je sais que WordPress v5.8 vient de sortir et j’ai commencé à utiliser le theme.jsonpour gérer certaines choses de base du côté de Gutenberg. Mais comme j’ai commencé à l’utiliser, j’ai vu deux ou trois choses :

Le CSS interne personnalisé ajouté par WordPress après avoir compilé le theme.jsonfichier sur chaque page. Est-ce que quelqu’un sait comment arrêter de l’ajouter sur certaines pages ? Par exemple, si j’ai une page d’accueil personnalisée ou sur des pages d’archives où Gutenberg n’est pas utilisé, cela n’a aucun sens de charger ce CSS interne par WordPress. Je me demandais si quelqu’un avait trouvé des filtres pour désactiver conditionnellement la sortie CSS interne pour certaines pages.

Voici à quoi ça ressemble :
theme.json CSS interne ajouté par WordPress

PS : J’ai déjà vérifié les deux URL concernant la theme.jsondocumentation, mais elles n’ont pas beaucoup aidé en ce qui concerne les requêtes que j’avais. Ce sont des liens que j’ai déjà vérifiés :

  • Paramètres et styles globaux (theme.json)
  • Présentation de theme.json dans WordPress 5.8

Solution n°1 trouvée

Après avoir fouillé dans la base de code WordPress v5.8, j’ai finalement trouvé un moyen, il semble que le seul moyen de désactiver l’affichage de ces theme.jsonCSS internes générés sur certaines pages soit en procédant comme suit :

add_action( 'wp_enqueue_scripts', function() : void {
    // Dequeue the styles added by theme.json file
    wp_dequeue_style('global-styles');
});

Ainsi, si vous souhaitez y ajouter certaines logiques, vous pouvez également le faire, par exemple :

add_action( 'wp_enqueue_scripts', function() : void {
    if( is_front_page() ) {
        // Dequeue the styles added by theme.json file
        wp_dequeue_style('global-styles');
    }
});

J’espère que cela aide les autres.

Remarque : Le code PHP ci-dessus est écrit pour PHP v8. Par conséquent, si vous utilisez une version inférieure de PHP, vous pouvez supprimer la déclaration de type de retour, c’est-à-dire : voidavant la première parenthèse de l’ouverture de la fonction.

Solution n°2 trouvée

Nous pouvons examiner la fonction wp_enqueue_global_styles(), qui appelle wp_should_load_separate_core_block_assets() et voir qu’elle contient par exemple le should_load_separate_core_block_assetsfiltre mais nous ne pouvons pas désactiver les styles globaux sur le front-end, en utilisant ce filtre à cause de :

/*
 * Global styles should be printed in the head when loading all styles combined.
 * The footer should only be used to print global styles for classic themes with separate core assets enabled.
 *
 * See https://core.trac.wordpress.org/ticket/53494.
 */
if ( ( ! $separate_assets && doing_action( 'wp_footer' ) ) || ( $separate_assets && doing_action( 'wp_enqueue_scripts' ) ) ) {
    return;
}

où il est accroché à deux endroits, en-tête ou pied de page :

// Global styles can be enqueued in both the header and the footer.
// See https://core.trac.wordpress.org/ticket/53494.
add_action( 'wp_enqueue_scripts', 'wp_enqueue_global_styles' );
add_action( 'wp_footer', 'wp_enqueue_global_styles', 1 );

Ainsi, le ticket 53494 est également utile et les notes de développement 5.8.

Pour les thèmes d’édition de site complet avec chargement de style de bloc séparé activé ou désactivé et les thèmes classiques désactivés , on peut le retirer de la file d’attente des archives avec :

add_action( 'wp_enqueue_scripts', function () {
    is_archive () && wp_dequeue_style ( 'global-styles' );
}, 11 );

car il est mis en file d’attente sur le wp_enqueue_scriptscrochet avec la priorité 10.

Pour les thèmes classiques avec chargement de style de bloc séparé sur :

add_action( 'wp_footer', function () {
    is_archive () && wp_dequeue_style ( 'global-styles' );
}, 2 );

car il est mis en file d’attente sur le wp_footercrochet avec la priorité 1.

Mais nous notons que les thèmes, modèles et autres plugins peuvent en dépendre.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *