Come posso caricare uno stile CSS solo nell'area di amministrazione di WordPress?
Sto cercando di caricare un file CSS per l'area di gestione degli articoli in WordPress, ma senza successo. Ho letto la documentazione sulla funzione wp_enqueue_style e ho creato il codice qui sotto, ma non viene caricato. Manca qualche tag o carattere nel mio codice? Ho un pannello di scrittura personalizzato quando un utente pubblica che vorrei stilizzare con il file CSS. Qualsiasi aiuto sarebbe fantastico.
Ecco cosa ho nel file functions.php
del mio tema:
function mytheme_add_init() {
$file_dir = get_bloginfo('template_directory');
wp_enqueue_style("functions", $file_dir."/scripts/custom.css", false, "1.0", "all");
wp_enqueue_script("rm_script", $file_dir."/scripts/custom.js", false, "1.0");
}
Basta agganciare la tua callback a admin_print_styles
, ad esempio:
add_action( 'admin_print_styles', 'mytheme_add_init' );
In alternativa, potresti aggiungere un wrapper condizionale is_admin()
all'interno della tua callback e agganciarti a wp_enqueue_scripts
:
function mytheme_add_init() {
if ( is_admin() ) {
$file_dir=get_bloginfo('template_directory');
wp_enqueue_style("functions", $file_dir."/scripts/custom.css", false, "1.0", "all");
wp_enqueue_script("rm_script", $file_dir."/scripts/custom.js", false, "1.0");
}
}
add_action( 'wp_enqueue_scripts', 'mytheme_add_init' );
Ma l'approccio migliore in assoluto è agganciarsi alla pagina di amministrazione del tuo tema, tramite admin_print_styles-appearance_page_{pagename}
:
add_action( 'admin_print_styles-appearance_page_{pagename}', 'mytheme_add_init', 11 );
Questo è un hook personalizzato specifico per la tua pagina di aspetto, come definito dalla tua chiamata add_theme_page()
.

Risposta tardiva: Poiché entrambe le risposte precedenti mostravano metodi vecchi, incompleti o complicati, ecco una versione aggiornata che funziona con WordPress 3.5+.
Cosa c'è di diverso?
Ecco la lista delle differenze:
- La prima cosa che facciamo è utilizzare l'hook
admin_enqueue_scripts
. Questo hook - L'ultimo argomento di
wp_enqueue_style()
è il media target e di default è già impostato suall
. Non c'è bisogno di specificarlo. - Utilizziamo la funzione
get_template_directory_uri()
per recuperare l'URL del nostro foglio di stile. Non serve controllare il valore dell'opzionetemplate_directory
. - Poi usiamo il valore restituito da
get_template_directory()
per ottenere il percorso e lo passiamo afilemtime()
per ottenere l'ultima modifica del foglio di stile. In questo modo aggiungiamo un numero di versione come argomento della query e forziamo il browser a ricaricare il foglio di stile se c'è una nuova versione. Non c'è bisogno di forzare ricariche manuali con Ctrl + F5. - Una cosa importante è aggiungere le giuste dipendenze, perché non vogliamo che i nostri stili vengano sovrascritti da
wp-admin.css
,ie
(ancora peggio) o dallo schema di colori. La parte più complicata è controllare lo schema di colori, poiché questo file contiene la maggior parte degli stili dell'interfaccia di amministrazione ed è un'impostazione utente. Vogliamo aggiungerlo come dipendenza. - L'ultima cosa che facciamo è racchiudere la chiamata per aggiungere l'hook in un'altra funzione collegata all'hook contestuale
admin_head-*
, dove*
è lo slug della pagina. Lo colleghiamo due volte per gestire sia i nuovi post che quelli modificati.
Ecco il codice per il tuo file functions.php
.
add_action( 'admin_head-post.php', 'wpse44135AttachAdminStyle' );
add_action( 'admin_head-post-new.php', 'wpse44135AttachAdminStyle' );
function wpse44135AttachAdminStyle()
{
add_action( 'admin_enqueue_scripts', 'wpse44135EnqueueAdminStyle' );
}
function wpse44135EnqueueAdminStyle()
{
$scheme = get_user_meta(
get_current_user_id(),
'admin_color',
true
);
wp_enqueue_style(
"admin_style",
get_template_directory_uri()."/scripts/custom.css",
array( 'wp-admin', 'ie', "colors-{$scheme}" ),
filemtime( get_template_directory()."/scripts/custom.css" ),
"all"
);
}
Alternative?
Se vuoi solo aggiungere stili all'editor WYSIWYG TinyMCE, puoi usare add_editor_style()
per registrare il foglio di stile del tuo tema anche nell'editor di testo dell'area di amministrazione. Il percorso che aggiungi come argomento è relativo alla radice del tuo tema. Nel tuo file functions.php
:
add_editor_style( '/scripts/custom.css' );
È davvero semplice.

Ricevo un "Errore fatale: Impossibile ridefinire wpse44135_enqueue_admin_style() (già dichiarata in precedenza" quando provo a fare questo.

@songdogtech "Impossibile ridefinire" spiega che una funzione, metodo, ecc. era già stata dichiarata/impostata. Il problema era che ho usato lo stesso nome di funzione due volte. Per il futuro: per favore cerca semplicemente gli errori PHP e file e [modifica]. Grazie.

Ecco un modo rapido per aggiungere stile nell'header dell'admin. Spero sia utile:
add_action('admin_head', 'my_custom_fonts');
function my_custom_fonts() {
echo '<style>
body, td, textarea, input, select {
font-family: "Lucida Grande";
font-size: 12px;
}
</style>';
}
