WordPress : Comment retirer de la file d’attente le fichier CSS d’un thème parent ?

Publié par Jean-Michel le

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.

Lire également:  Thème Wordpress : JavaScript ne fonctionne pas

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.

Lire également:  Balise H5 montrant différentes tailles entre les pages - Développement de thèmes Wordpress

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' );et wp_deregister_script( 'site' );peterjmag

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 *