WordPress : Comment retirer de la file d’attente le fichier CSS d’un thème parent ?
Mon thème parent (Starkers) ajoute un fichier CSS que j’essaie de supprimer (je veux utiliser @import à la place pour pouvoir remplacer les styles plus facilement). Starkers a ce qui suit dans son functions.php :
add_action( 'wp_enqueue_scripts', 'script_enqueuer' );
function script_enqueuer() {
wp_register_script( 'site', get_template_directory_uri().'/js/site.js', array( 'jquery' ) );
wp_enqueue_script( 'site' );
wp_register_style( 'screen', get_template_directory_uri().'/style.css', '', '', 'screen' );
wp_enqueue_style( 'screen' );
}
J’ai essayé ce qui suit dans le fichier functions.php enfant, mais les balises de lien et de script s’affichent toujours dans la section head.
add_action('init', 'removeScripts');
function removeScripts() {
wp_dequeue_style('screen');
wp_deregister_script('site');
}
J’ai revérifié pour voir s’ils sont codés en dur dans l’en-tête parent et ils ne le sont pas.
Solution n°1 trouvée
Voici comment supprimer la feuille de style du thème parent et la remplacer par la feuille de style d’un thème enfant OU simplement supprimer la feuille de style du parent du chargement.
Le fichier functions.php du thème Starker :
add_action( 'wp_enqueue_scripts', 'script_enqueuer' );
function script_enqueuer() {
//...
wp_register_style( 'screen', get_template_directory_uri().'/style.css', '', '', 'screen' );
wp_enqueue_style( 'screen' );
}
Rappelez-vous la poignée qu’ils appellent le style, ‘écran’
Remplacement du thème parent par la feuille de style du thème enfant
Le fichier functions.php du thème Starker-Child :
function? ?custom_starkers_styles() {
//Remove desired parent styles
wp_dequeue_style( 'screen');
//Replace with custom child styles
wp_register_style( 'screen-child',? ?trailingslashit( get_template_directory_uri() ). 'screen.css' );
wp_enqueue_style( 'screen-child?'?);
}
add_action( 'wp_enqueue_scripts','custom_starkers_styles', 20 );
Supprimer la feuille de style du thème parent
Le fichier functions.php du thème Starker-Child :
function? ?remove_starkers_styles() {
//Remove desired parent styles
wp_dequeue_style( 'screen');
}
add_action( 'wp_enqueue_scripts','remove_starkers_styles', 20 );
Nous donnons à add_action() du thème enfant une priorité de 20 (la valeur par défaut est 10) car nous voulons qu’il s’exécute APRÈS que le thème parent l’ait mis en file d’attente. Plus la priorité est élevée, plus il s’exécutera tard. 20 > 10 pour que l’action du thème enfant s’exécute toujours après l’exécution du thème parent.
Solution n°2 trouvée
Je veux utiliser @import à la place pour pouvoir remplacer les styles plus facilement
Simplement. Ne le faites pas. Fais. Ce.
Vous sautez simplement dans le même crochet, puis désenregistrez / retirez de la file d’attente les styles / scripts et ajoutez vos propres.
function PREFIX_remove_scripts() {
wp_dequeue_style( 'screen' );
wp_deregister_style( 'screen' );
wp_dequeue_script( 'site' );
wp_deregister_script( 'site' );
// Now register your styles and scripts here
}
add_action( 'wp_enqueue_scripts', 'PREFIX_remove_scripts', 20 );
La raison de retirer de la file d’attente et de désenregistrer les scripts est simple :
Notez que si vous souhaitez pouvoir utiliser l’un ou l’autre de ces descripteurs (
'screen'
ou'site'
) après les avoir retirés de la file d’attente, vous devrez également les désenregistrer. Par exemple :wp_deregister_style( 'screen' );
etwp_deregister_script( 'site' );
– peterjmag
0 commentaire