Come includere il file style.css nel file functions.php in WordPress
Sono nuovo su WordPress. Sto includendo il mio file usando
<link rel='stylesheet' href="<?php bloginfo("stylesheet_url")?>"/>
Ma se metto in coda il mio file css in functions.php non funziona. Perché?
Dove sbaglio?
<?php wp_enqueue_style('style',get_template_directory_uri())?>
Qual è la soluzione per questo problema?
Stai chiamando la funzione in modo errato. Non hai specificato il nome del file, ma solo una directory.
Dal codex
wp_enqueue_style( string $handle, string $src = false, array $deps = array(), string|bool|null $ver = false, string $media = 'all' )
quindi nel tuo caso, dovresti accodare lo stile così:
add_action( 'wp_enqueue_scripts', 'wpse_my_style' );
function wpse_my_style(){
wp_enqueue_style( 'my-style', get_stylesheet_directory_uri() . 'percorso/del/tuo/css' );
}
il resto dei parametri sono opzionali
function wpdocs_style() {
wp_enqueue_style( 'style-name', get_stylesheet_uri() ); //Questo serve per ottenere style.css del tema corrente
wp_enqueue_style( 'style-name1', get_teplate_directory_uri() . '/css/custom.css', array('jquery') ); //Questo serve per ottenere altri file css dalla directory principale
wp_enqueue_script( 'script-name1', get_teplate_directory_uri() . '/js/custom.js', array('jquery') ); //Questo serve per ottenere file JS dalla directory principale
}
add_action( 'wp_enqueue_scripts', 'wpdocs_style' );
OPPURE
//In alternativa puoi usare l'hook wp_head
add_action( 'wp_head', 'wpdocs_style' );
Per far funzionare la funzione sopra, devi aggiungere <?php wp_enqueue_script("jquery"); ?> (se usi questa azione add_action( 'wp_enqueue_scripts', 'wpdocs_style' );) nel file header.php prima del tag </head>.
Devi assegnare un nome a ogni stile (come ho fatto io con style-name, style-name1 ecc.) e il nome deve essere univoco.
Se vuoi fare l'enqueue dal file functions.php del child theme, devi usare get_stylesheet_directory_uri() invece di get_teplate_directory_uri().
La domanda dell'OP non menziona affatto jQuery. E NON dovresti semplicemente aggiungerlo in header.php, dovresti metterlo in coda come gli stili.
ngearing
get_stylesheet_directory_uri() funzionerà sia per il tema che per il child theme
bynicolas
@Nath So che non ha menzionato jQuery! E allora? Se voglio fornire informazioni aggiuntive che possano aiutare lui e anche i futuri visitatori.
Rishabh
Ok, devi spiegarlo meglio allora. E anche fornire informazioni corrette.
ngearing
@Nath Ho mostrato il modo corretto. Non capisco cosa ci sia di sbagliato nel mio codice! Questo è il modo in cui sono solito fare e funziona bene nel mio caso. Non so perché dici che non è corretto! Hai detto che non dovrebbe essere aggiunto in header.php! Se non lì, allora dove? Se hai un modo migliore, posta una risposta, mi piacerebbe conoscere anche io un metodo migliore.
Rishabh
@Rishabh Puoi aggiungere jQuery esattamente nello stesso modo in cui aggiungi tutto il resto. Cioè con l'hook wp_enqueue_scripts. Hai detto che per far funzionare il tuo codice, dobbiamo aggiungere jQuery in header.php prima di </head> perché dici questo? semplicemente non è vero. Specialmente non è vero quando si aggiungono file CSS. Quindi se vuoi fornire maggiori informazioni per aiutare lui e altri che leggeranno questa risposta, per favore fallo in un modo che non confonda le persone. In nessun modo il CSS richiede jQuery per funzionare. Con wp_enqueue_script hai un parametro che dice a WP di caricare in <head> o prima della chiusura di </body>
bynicolas
Quindi, invece di aggiungere script ovunque rendendo più difficile il debug e la lettura del codice, puoi aggiungere tutti gli script nello stesso posto e utilizzare il parametro $deps che indica a WP in quale sequenza caricare gli script/CSS per rispettare le tue dipendenze.
bynicolas
@bynicolas Ok ho capito il tuo punto. Ma nella mia risposta aggiornata ho mostrato un modo alternativo di hook con wp_head e nella descrizione ho detto di aggiungere <?php wp_enqueue_script("jquery"); ?> ma ho anche specificato solo se non usi l'hook con wp_head. Quindi il mio secondo metodo in cui ho mostrato l'hook da aggiungere con wp_head invece di wp_enqueue_scripts, secondo te va bene?
Rishabh