Cum să încarci un stil CSS doar în zona de administrare WordPress
Încerc să încarc un fișier CSS pentru zona de postare din WordPress, dar fără succes. Am citit despre funcția wp_enqueue_style și am creat codul de mai jos, dar acesta nu se încarcă. Lipsesc etichete sau caractere din codul meu? Am un panou personalizat pentru scriere când un utilizator postează și vreau să-l stilizez cu fișierul CSS. Orice ajutor ar fi minunat.
Iată ce am în fișierul functions.php
al temei mele:
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");
}

Pur și simplu conectează funcția ta callback la admin_print_styles
, de exemplu:
add_action( 'admin_print_styles', 'mytheme_add_init' );
Alternativ, poți adăuga o condiție is_admin()
în interiorul funcției tale callback și să te conectezi la 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' );
Dar cea mai bună abordare este să te conectezi la pagina de administrare a temei tale, prin intermediul admin_print_styles-appearance_page_{pagename}
:
add_action( 'admin_print_styles-appearance_page_{pagename}', 'mytheme_add_init', 11 );
Acesta este un hook personalizat special pentru pagina de aspect, așa cum este definită prin apelul tău add_theme_page()
.

Răspuns întârziat: Deoarece ambele răspunsuri anterioare au prezentat metode vechi, incomplete sau complicate, iată o versiune actualizată care funcționează în modul v3.5+.
Ce este diferit?
Iată lista:
- Primul lucru pe care îl facem este să folosim hook-ul
admin_enqueue_scripts
. Acest hook - Ultimul argument al
wp_enqueue_style()
este media țintă și este deja setat implicit laall
. Nu este nevoie să-l adăugați. - Folosim funcția
get_template_directory_uri()
pentru a obține URL-ul pentru fișierul nostru de stil. Nu este nevoie să verificăm valoarea opțiunii pentrutemplate_directory
aici. - Apoi folosim valoarea returnată de
get_template_directory()
pentru a obține calea și o încadrăm într-un apelfilemtime()
pentru a obține ultima dată când fișierul de stil a fost editat. În acest fel, adăugăm un nou număr de versiune ca argument de interogare și forțăm browserul să reîncarce fișierul de stil dacă există o versiune nouă. Nu este nevoie să forțați reîncărcări grele cu Ctrl + F5. - Un lucru important este să adăugați dependențele corecte, deoarece nu doriți ca stilurile dvs. să fie suprascrise cu o specificitate mai mare de
wp-admin.css
,ie
(chiar mai rău) sau schema de culori. Partea cu adevărat dificilă este să verificați schema de culori, deoarece acest fișier conține mare parte din ceea ce este stilizat în interfața de administrare și este o setare a utilizatorului. Vrem să adăugăm și acest lucru ca dependență. - Ultimul lucru pe care îl facem este să încadrăm apelul pentru a adăuga hook-ul într-o altă funcție care este conectată la hook-ul contextual
admin_head-*
, unde*
este slug-ul paginii. O conectăm de două ori pentru a lua în considerare atât postările noi, cât și cele editate.
Iată codul pentru fișierul dvs. 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?
În cazul în care doriți doar să adăugați stiluri în editorul WYSIWYG TinyMCE, puteți folosi add_editor_style()
pentru a vă înregistra fișierul de stil al temei și în zona de administrare a editorului de text. Calea pe care o adăugați ca argument este relativă la rădăcina temei dvs. În fișierul dvs. functions.php
:
add_editor_style( '/scripts/custom.css' );
Este atât de simplu.

Primesc o eroare "Fatal error: Cannot redeclare wpse44135_enqueue_admin_style() (previously declared" când încerc asta.

@songdogtech "Cannot redeclare" explică faptul că o funcție, metodă etc. a fost deja declarată/definită. Problema a fost că am folosit același nume de funcție de două ori. Pentru viitor: Te rog să cauți pur și simplu erorile PHP și fișierul și [editează]. Mulțumesc.

Iată o metodă rapidă de a adăuga stil în antetul administrării. Sper că vă ajută:
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>';
}
