WordPress : Désactiver le CSS interne personnalisé ajouté par theme.json pour certaines pages
Je sais que WordPress v5.8 vient de sortir et j’ai commencé à utiliser le theme.json
pour 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.json
fichier 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 :
PS : J’ai déjà vérifié les deux URL concernant la theme.json
documentation, 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.json
CSS 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 : void
avant 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_assets
filtre 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_scripts
crochet 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_footer
crochet avec la priorité 1.
Mais nous notons que les thèmes, modèles et autres plugins peuvent en dépendre.
0 commentaire