Comment puis-je mettre en file d'attente le fichier CSS d'un thème parent?

30

Mon thème parent (Starkers) ajoute un fichier CSS que j'essaie de supprimer (je souhaite utiliser @import à la place 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 enfant, mais les balises link et script apparaissent toujours dans la section d'en-tête.

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

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

    
posée jmotes 18.09.2012 - 18:20

2 réponses

37
  

Je souhaite utiliser @import pour pouvoir remplacer les styles plus facilement

Simplement. Ne pas Faire. Cela.

Vous sautez simplement dans le même crochet, puis 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 de la suppression de la file d'attente et de la désenregistrement des scripts est simple:

  

Notez que si vous souhaitez pouvoir utiliser l'un de ces descripteurs ( 'screen' ou 'site' ) après les avoir supprimés de la file d'attente, vous devez également les désenregistrer. Par exemple: wp_deregister_style( 'screen' ); et wp_deregister_script( 'site' ); - peterjmag

    
réponse donnée kaiser 18.09.2012 - 18:37
-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 simplement supprimer la feuille de style du parent du chargement précédent.

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' );
}

N'oubliez pas 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 au add_action () du thème de l'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 afin que l'action du thème enfant soit toujours exécutée après l'exécution du thème parent.

    
réponse donnée CHergott 07.03.2016 - 22:52

Lire d'autres questions sur les étiquettes