Comment puis-je retirer du fichier CSS un thème parent?

33

Mon thème parent (Starkers) ajoute un fichier CSS que j'essaie de supprimer (je souhaite utiliser @import pour pouvoir remplacer les styles plus facilement). Starkers a les fonctions suivantes dans le fichier 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, mais les balises link et script apparaissent toujours dans la section head.

add_action('init', 'removeScripts');
function removeScripts() {
    wp_dequeue_style('screen');
    wp_deregister_script('site');
}

J'ai vérifié deux fois pour voir s'ils sont codés en dur dans l'en-tête parent et s'ils ne le sont pas.

jmotes
la source

Réponses:

39

Je veux utiliser @import à la place pour pouvoir remplacer les styles plus facilement

Simplement. Ne pas Faire. Cette.

Vous sautez simplement dans le même crochet, puis vous désenregistrez / retirez les styles / scripts et ajoutez vos styles personnalisés.

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 pour retirer de la file d'attente et désenregistrer les scripts est simple:

Notez que si vous souhaitez pouvoir utiliser l'une ou l'autre de ces poignées ( 'screen'ou 'site') après les avoir retirées de leur file d'attente, vous devez également les désenregistrer. Par exemple: wp_deregister_style( 'screen' );et wp_deregister_script( 'site' );- peterjmag

kaiser
la source
1
C'est peut-être simple, mais le document WP officiel fait défaut, à savoir codex.wordpress.org/Child_Themes . Ils ne parlent pas de dequeue et se désinscrivent pour des thèmes d'enfants
gagarine
-1

Voici comment vous pouvez supprimer la feuille de style du thème parent et la remplacer par la feuille de style d'un thème enfant OU tout simplement supprimer la feuille de style du père de son chargement.

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

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

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 souhaitons 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 soit toujours exécutée une fois que le thème parent a déjà été exécuté.

CHergott
la source