Cum elimin fișierul CSS al temei părinte?

18 sept. 2012, 19:20:08
Vizualizări: 46.4K
Voturi: 40

Tema mea părinte (Starkers) adaugă un fișier CSS pe care încerc să-l elimin (vreau să folosesc @import în loc, pentru a putea suprascrie stilurile mai ușor). Starkers are următorul cod în fișierul functions.php:

add_action( 'wp_enqueue_scripts', 'script_enqueuer' );

function script_enqueuer() {
    // Înregistrează și încarcă scriptul site.js
    wp_register_script( 'site', get_template_directory_uri().'/js/site.js', array( 'jquery' ) );
    wp_enqueue_script( 'site' );

    // Înregistrează și încarcă stilul screen.css
    wp_register_style( 'screen', get_template_directory_uri().'/style.css', '', '', 'screen' );
    wp_enqueue_style( 'screen' );
}

Am încercat următorul cod în functions.php al temei copil, dar tag-urile link și script încă apar în secțiunea head.

add_action('init', 'removeScripts');
function removeScripts() {
    // Încearcă să elimine stilul screen
    wp_dequeue_style('screen');
    // Încearcă să dezînregistreze scriptul site
    wp_deregister_script('site');
}

Am verificat de două ori să văd dacă sunt hard-codate în header-ul temei părinte și nu sunt.

0
Toate răspunsurile la întrebare 2
0
48

Vreau să folosesc @import pentru a putea suprascrie stilurile mai ușor

Pur și simplu. Nu. Faceți. Asta.

Puteți pur și simplu să vă conectați la același hook și apoi să eliminați/deregistrați stilurile/scripturile și să adăugați cele personalizate.

function PREFIX_remove_scripts() {
    wp_dequeue_style( 'screen' );
    wp_deregister_style( 'screen' );

    wp_dequeue_script( 'site' );
    wp_deregister_script( 'site' );

    // Acum înregistrați stilurile și scripturile dumneavoastră aici
}
add_action( 'wp_enqueue_scripts', 'PREFIX_remove_scripts', 20 );

Motivul pentru eliminarea și deregistrarea scripturilor este simplu:

Rețineți că dacă doriți să puteți folosi oricare dintre aceste identificatori ('screen' sau 'site') după ce le-ați eliminat, va trebui să le deregistrați și pe acestea. De exemplu: wp_deregister_style( 'screen' ); și wp_deregister_script( 'site' ); - peterjmag

18 sept. 2012 19:37:23
0

Iată cum poți elimina fișierul de stiluri al temei părinte și să-l înlocuiești cu cel al temei copil sau pur și simplu să elimini încărcarea fișierului de stiluri al temei părinte.

Fișierul functions.php al temei 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' );
}

Ține minte identificatorul (handle) folosit pentru stil, 'screen'

Înlocuirea fișierului de stiluri al temei părinte cu cel al temei copil

Fișierul functions.php al temei Starker-Child:

function​ ​custom_starkers_styles() {

    //Elimină stilurile dorite din tema părinte
    wp_dequeue_style( 'screen');

    //Înlocuiește cu stilurile personalizate din tema copil
    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 );

Eliminarea fișierului de stiluri al temei părinte

Fișierul functions.php al temei Starker-Child:

function​ ​remove_starkers_styles() {

    //Elimină stilurile dorite din tema părinte
    wp_dequeue_style( 'screen');

}

add_action( 'wp_enqueue_scripts','remove_starkers_styles', 20 );

Am dat parametrului priority din add_action() al temei copil valoarea 20 (implicit este 10) pentru a ne asigura că acesta va rula DUPA ce tema părinte a încărcat stilurile. Cu cât prioritatea este mai mare, cu atât acțiunea va rula mai târziu. 20 > 10, deci acțiunea temei copil va rula întotdeauna după ce cea a temei părinte s-a executat deja.

7 mar. 2016 23:52:56