Wie lösche ich die CSS-Datei eines übergeordneten Themas?

33

Mein übergeordnetes Design (Starkers) fügt eine CSS-Datei hinzu, die ich entfernen möchte (ich möchte stattdessen @import verwenden, damit ich Stile leichter überschreiben kann). Starkers hat folgendes in seiner 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' );
}

Ich habe Folgendes in der child functions.php ausprobiert, aber die Link- und Script-Tags werden immer noch im head-Abschnitt angezeigt.

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

Ich habe zweimal überprüft, ob sie im übergeordneten Header fest codiert sind und nicht.

jmotes
quelle

Antworten:

39

Ich möchte stattdessen @import verwenden, um Stile leichter überschreiben zu können

Einfach. Nicht. Machen. Das.

Sie springen einfach in den gleichen Haken und heben dann die Registrierung / Löschung der Stile / Skripte auf und werfen Ihre benutzerdefinierten Stile ein.

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

Der Grund für das Löschen und Abmelden der Skripte ist einfach:

Beachten Sie, dass Sie die Registrierung auch aufheben müssen, wenn Sie in der Lage sein möchten, eines dieser Handles ( 'screen'oder 'site') zu verwenden, nachdem Sie sie aus der Warteschlange entfernt haben. Zum Beispiel: wp_deregister_style( 'screen' );und wp_deregister_script( 'site' );- peterjmag

Kaiser
quelle
1
Es ist vielleicht einfach, aber dem offiziellen WP-Dokument fehlt dann codex.wordpress.org/Child_Themes . Sie sprechen nicht über das Löschen und Aufheben der Registrierung für
Kinderthemen
-1

Hier erfahren Sie, wie Sie entweder das Stylesheet des übergeordneten Themas entfernen und durch das Stylesheet eines untergeordneten Themas ersetzen oder einfach das Stylesheet des übergeordneten Themas entfernen, damit es nicht mehr geladen wird.

Starker Themes functions.php:

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

Erinnern Sie sich an das Handle, das sie den Stil "Bildschirm" nennen

Ersetzen des übergeordneten Themas durch das Stylesheet des untergeordneten Themas

Funktionen des Starker-Child-Themas.php:

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

Entfernen Sie das Stylesheet des übergeordneten Themas

Funktionen des Starker-Child-Themas.php:

function remove_starkers_styles() {

    //Remove desired parent styles
    wp_dequeue_style( 'screen');

}

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

Wir geben dem add_action () des untergeordneten Themas eine Priorität von 20 (Standard ist 10), da es ausgeführt werden soll, nachdem das übergeordnete Thema es in die Warteschlange gestellt hat. Je höher die Priorität, desto später wird es ausgeführt. 20> 10, sodass die Aktion des untergeordneten Themas immer ausgeführt wird, nachdem das übergeordnete Thema bereits ausgeführt wurde.

CHergott
quelle