Bagaimana cara membuat file CSS tema orang tua?

33

Tema induk saya (Starkers) menambahkan file CSS yang saya coba hapus (saya ingin menggunakan @import sebagai gantinya agar saya dapat mengganti gaya dengan lebih mudah). Starkers memiliki yang berikut ini di 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' );
}

Saya sudah mencoba yang berikut di child functions.php, tetapi tautan dan tag skrip masih muncul di bagian kepala.

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

Saya telah memeriksa dua kali untuk melihat apakah mereka dikodekan dalam header induk dan tidak.

jmotes
sumber

Jawaban:

39

Saya ingin menggunakan @import sebagai gantinya agar saya dapat mengganti gaya dengan lebih mudah

Secara sederhana. Jangan. Melakukan. Bahwa.

Anda cukup melompat ke pengait yang sama dan kemudian deregister / dequeue gaya / skrip dan melemparkan yang kustom Anda.

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

Alasan untuk dequeue-ing dan deregistrasi skrip sederhana:

Perhatikan bahwa jika Anda ingin dapat menggunakan salah satu dari pegangan itu ( 'screen'atau 'site') setelah melepaskannya, Anda harus membatalkan pendaftaran juga. Misalnya: wp_deregister_style( 'screen' );dan wp_deregister_script( 'site' );- peterjmag

kaisar
sumber
1
Mungkin sederhana tetapi dokumen resmi WP kurang dari codex.wordpress.org/Child_Themes . Mereka tidak berbicara tentang dequeue dan deregister untuk tema anak
gagarine
-1

Inilah cara Anda menghapus stylesheet tema orang tua dan menggantinya dengan stylesheet tema anak ATAU hanya menghapus stylesheet orang tua agar tidak pernah dimuat.

Functions.php tema 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' );
}

Ingat pegangan yang mereka sebut gaya, 'layar'

Mengganti tema orang tua dengan stylesheet tema anak

Fungsi Starker-Child theme.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 );

Hapus stylesheet tema induk

Fungsi Starker-Child theme.php:

function remove_starkers_styles() {

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

}

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

Kami memberikan add_action () tema anak () prioritas 20 (default adalah 10) karena kami ingin itu berjalan SETELAH tema induk telah mengantri itu. Semakin tinggi prioritas, nanti akan berjalan. 20> 10 sehingga aksi tema anak akan selalu berjalan setelah tema induk sudah dijalankan.

Chergott
sumber