Child Theme non carica il CSS del tema genitore

7 set 2015, 01:26:25
Visualizzazioni: 14.7K
Voti: 3

Sto utilizzando il tema MyStile per un nuovo sito. Sto cercando di creare un child theme per poter modificare il tema senza che le mie modifiche vengano sovrascritte, ma una volta attivato il child theme, tutto lo stile del sito sembra scomparire completamente.
Presumo che il problema sia da qualche parte quando viene richiamato il file style.css del tema genitore.

Ecco cosa ho nel file style.css del mio child theme.

   /*
 Nome Tema:   Blurred Edge Apparel
 URI Tema:    http://www.blurrededgeapparel.com
 Descrizione:  Child Theme di MyStile
 Autore:       Blurred Edge Apparel
 Autore URI:   http://www.blurrededgeapparel.com
 Template:     mystile
 Versione:      1.0.0
*/


@import url("../mystile/style.css");

Ho anche copiato i file header.php e footer.php dalla directory del tema genitore, ma ancora senza successo.
Sto dimenticando qualcosa?

0
Tutte le risposte alla domanda 3
1
11

Dai un'occhiata a Come creare un Child Theme e vedrai che:

il metodo precedente per caricare il foglio di stile del tema genitore era importare il foglio di stile del tema genitore usando @import: questa non è più la pratica migliore. Il metodo corretto per caricare il foglio di stile del tema genitore è aggiungere un'azione wp_enqueue_scripts e usare wp_enqueue_style() nel file functions.php del tuo child theme.

Ecco l'esempio fornito:

add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
}
7 set 2015 02:02:47
Commenti

Grazie per la risposta, ma ancora nessun risultato

Toby Cannon Toby Cannon
7 set 2015 09:29:22
0

Il tema Mystile è un tema vecchio di 3 anni che non è semplicemente pronto all'uso come stile genitore perché lo stile figlio è fissato in header.php nel punto sbagliato

Il modo più rapido per correggere questo problema è inserire questi file nella directory del child theme:

  • file style.css:

.

/*
Template: mystile
*/
  • file child-style.css: tutte le regole CSS che vuoi applicare
  • file functions.php:

.

<?php
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );

    wp_enqueue_style( 'child-style'
        , get_stylesheet_directory_uri() . '/child-style.css'
        , array('parent-style') // dichiara la dipendenza
                                // per caricare child-style dopo parent-style
    );
}
7 set 2015 11:59:27
0

https://developer.wordpress.org/themes/advanced-topics/child-themes/

Il modo consigliato per accodare i fogli di stile è aggiungere un'azione wp_enqueue_scripts e usare wp_enqueue_style() nel file functions.php del tuo tema child. Se non ne hai uno, crea un file functions.php nella directory del tuo tema child. La prima riga del tuo functions.php sarà un tag PHP di apertura (<?php), dopo il quale puoi scrivere il codice PHP in base a ciò che fa il tema parent.

Se il tema parent carica entrambi i fogli di stile, il tema child non deve fare nulla.

Se il tema parent carica il suo stile usando una funzione che inizia con get_template, come get_template_directory() e get_template_directory_uri(), il tema child deve caricare solo gli stili del child, usando l'handle del parent nel parametro delle dipendenze.

add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
function my_theme_enqueue_styles() {
    wp_enqueue_style( 'child-style', get_stylesheet_uri(),
        array( 'parenthandle' ), 
        wp_get_theme()->get('Version') // questo funziona solo se hai Version nell'header dello style
    );
}

Se il tema parent carica il suo stile usando una funzione che inizia con get_stylesheet, come get_stylesheet_directory() e get_stylesheet_directory_uri(), il tema child deve caricare sia i fogli di stile del parent che del child. Assicurati di usare lo stesso handle name che usa il parent per gli stili del parent.

add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
function my_theme_enqueue_styles() {
    $parenthandle = 'parent-style'; // Questo è 'twentyfifteen-style' per il tema Twenty Fifteen.
    $theme = wp_get_theme();
    wp_enqueue_style( $parenthandle, get_template_directory_uri() . '/style.css', 
        array(),  // se il codice del tema parent ha una dipendenza, copiala qui
        $theme->parent()->get('Version')
    );
    wp_enqueue_style( 'child-style', get_stylesheet_uri(),
        array( $parenthandle ),
        $theme->get('Version') // questo funziona solo se hai Version nell'header dello style
    );
}

Vedi il testo in grassetto che ho citato sopra. Ora controlla come il tuo tema parent carica il suo stile e segui le istruzioni e l'esempio di conseguenza. Il mio caso era il secondo, quindi ho codificato il mio così:

add_action( 'wp_enqueue_scripts', 'twentytwentychild_enqueue_styles' );
function twentytwentychild_enqueue_styles() {
    $parentHandle = "twentytwenty-style";
    $childHandle = "twentytwentychild-style";
    $theme = wp_get_theme();

    wp_enqueue_style($parentHandle, get_template_directory_uri() . '/style.css',
        array(), // se il codice del tema parent ha una dipendenza, copiala qui
        $theme->parent()->get('Version') // questo funziona solo se hai Version nell'header dello style
    );

    wp_enqueue_style($childHandle, get_stylesheet_uri(),
        array($parentHandle),
        $theme->get('Version') // questo funziona solo se hai Version nell'header dello style
    );
}
18 dic 2020 06:42:58