Perché style.css non viene accodato?

13 apr 2011, 17:33:08
Visualizzazioni: 33.1K
Voti: 11

Ho un tema abbastanza basilare e ho appena scoperto che il mio file style.css non viene caricato nel <head>. Ho già cercato in giro ma non riesco a capire perché non si carichi.

Ho già ispezionato l'oggetto global $wp_styles ma non ho trovato nulla:

function style_test() 
{ 
    $wp_styles = new WP_Styles();

    echo '<pre>'; 
        // $wp_styles->enqueue è completamente vuoto
        print_r( $wp_styles->registered ); 
    echo '</pre>'; 
} 
add_action( 'wp_print_scripts', 'style_test', 0 );

Anche all'interno dell'oggetto non riesco a trovare i miei fogli di stile registrati/accodati (che vengono comunque caricati), quindi immagino che sto sbagliando qualcosa anche nell'ispezione. Qualche idea?

Nota:
Se lo accodo manualmente, il mio file style.css viene caricato. È solo il caricamento automatico che non funziona. Inoltre posso accedere al file con get_theme_data( TEMPLATEPATH.'/style.css' ); senza problemi.

0
Tutte le risposte alla domanda 4
1
17

I fogli di stile del tema solitamente non vengono accodati (enqueued), ma vengono caricati normalmente utilizzando...

<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'stylesheet_url' ); ?>" />

Quindi naturalmente non li vedrai nell'array degli stili...

Puoi ovviamente (se preferisci) utilizzare un accodamento (enqueue) invece.

13 apr 2011 17:40:35
Commenti

Il foglio di stile principale style.css - come qualsiasi altro foglio di stile, del resto - deve essere o hard-codato nell'intestazione del documento, oppure collegato manualmente a wp_head o wp_print_styles. WordPress non collega automaticamente style.css.

Chip Bennett Chip Bennett
13 apr 2011 17:50:11
2

Il modo consigliato per farlo è caricare style.css tramite la coda (enqueue) nel file functions.php del tema.

Aggiungi questo codice a functions.php

 /**
 * Carica CSS e JS nel modo corretto
 */
function myprefix_load_css_and_js() {
    wp_enqueue_style( 'style', get_stylesheet_uri() );
}
add_action( 'wp_enqueue_scripts', 'myprefix_load_css_and_js' );

Puoi fare riferimento a questo nella guida ufficiale dei temi WordPress qui e vedere degli esempi qui.

26 ago 2017 11:57:38
Commenti

Upvotato, ma una piccola correzione è che probabilmente è meglio definire la funzione in modo anonimo all'interno della chiamata add_action piuttosto che aggiungerla al namespace globale, visto che non viene chiamata altrove.

tklodd tklodd
16 mag 2022 22:00:13

Ciao @kloddant, grazie per il suggerimento. Anche se concordo che averla nel namespace globale può essere problematico, preferirei avere un nome. Solo per avere la possibilità di scollegarla programmaticamente in futuro se necessario. Normalmente risolvo questo problema anteponendo alla funzione qualcosa di unico e lungo.

Arun Basil Lal Arun Basil Lal
17 mag 2022 10:40:17
1

Anche se è già risolto, penso che questo possa aiutare qualcun altro.

Puoi caricare style.css aggiungendo questa riga di codice in qualsiasi pagina singola o template personalizzato.

wp_enqueue_style('style', get_stylesheet_uri() );
14 giu 2020 18:23:05
Commenti

Questa è una duplicazione della risposta di @Arun Basil Lal sopra.

kaiser kaiser
14 giu 2020 23:12:45
0

Piccola osservazione sulla risposta di Arun sopra. Come ha detto, dovresti accodarlo nel file functions.php, ma probabilmente è meglio definirlo e chiamarlo in modo anonimo all'interno della funzione add_action, dato che non lo chiami da nessun'altra parte. In questo modo, eviti di aggiungerlo allo spazio dei nomi globale.

add_action('wp_enqueue_scripts', function () {
    wp_enqueue_style('style', get_stylesheet_uri());
});
16 mag 2022 22:04:49