Wie lade ich einen CSS-Stil nur in den WordPress-Administrationsbereich?

7

Ich versuche, eine CSS-Datei für meinen WordPress-Post-Bereich zu laden, habe aber kein Glück. Ich habe die Funktion wp_enqueue_style gelesen und den folgenden Code gefunden, der jedoch nicht geladen wird. Fehlt ein Tag oder ein Zeichen in meinem Code? Ich habe ein benutzerdefiniertes Schreibfeld, wenn ein Benutzer einen Beitrag verfasst, den ich mit der CSS-Datei formatieren möchte. Jede Hilfe wäre großartig.

Folgendes habe ich in meiner Themendatei functions.php:

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");
}
Kurt Bunch
quelle

Antworten:

6

Schließen Sie einfach Ihren Rückruf an admin_print_styles, dh:

add_action( 'admin_print_styles', 'mytheme_add_init' );

Alternativ können Sie is_admin()Ihrem Rückruf einen bedingten Wrapper hinzufügen und Folgendes einbinden 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' );

Aber der absolute beste Ansatz ist es , in Ihrem Theme Admin - Seite Haken , über admin_print_styles-appearance_page_{pagename}:

add_action( 'admin_print_styles-appearance_page_{pagename}', 'mytheme_add_init', 11 );

Dies ist ein benutzerdefinierter Hook speziell für Ihre Erscheinungsseite, wie er über Ihren add_theme_page()Anruf definiert wurde .

Chip Bennett
quelle
7

Späte Antwort: Da beide vorherigen Antworten alte, unvollständige oder komplizierte Methoden zeigten, finden Sie hier eine aktualisierte Version, die auf Version 3.5 + funktioniert.

Was ist unterschiedlich?

Hier ist die Liste

  • Als erstes benutzen wir den admin_enqueue_scriptsHaken. Dieser Haken
  • Das wp_enqueue_style()letzte Argument ist das Zielmedium und es ist bereits allstandardmäßig eingestellt. Keine Notwendigkeit, es hinzuzufügen.
  • Wir verwenden die get_template_directory_uri()Funktion, um die URl für unser Stylesheet abzurufen. Hier müssen Sie den Optionswert nicht überprüfen template_directory.
  • Wir verwenden dann den Rückgabewert von get_template_directory(), um den Pfad abzurufen und ihn in einen filemtime()Aufruf zu verpacken , um das letzte Mal abzurufen, an dem das Stylesheet bearbeitet wurde. Auf diese Weise fügen wir eine neue Versionsnummer als Abfrageargument hinzu und zwingen den Browser, das Stylesheet neu zu laden, wenn es eine neue Version gibt. Mit Ctrl+ müssen keine harten Nachladevorgänge erzwungen werden F5.
  • Eine wichtige Sache ist , die richtigen Abhängigkeiten hinzufügen , wie Sie nicht möchten , Ihre Stile mit einer höheren Spezifität überschrieben werden durch wp-admin.css, ie(noch schlimmer) oder das Farbschema. Der wirklich schwierige Teil besteht darin, das Farbschema zu überprüfen, da diese Datei das meiste enthält, was in der Administrator-Benutzeroberfläche gestaltet ist, und eine Benutzereinstellung ist. Wir wollen dies auch als Abhängigkeit hinzufügen.
  • Das letzte, was wir tun, ist, den Aufruf zu verpacken, um den Hook in eine andere Funktion einzufügen , die mit dem kontextbezogenen admin_head-*Hook *verknüpft ist , wo sich der Pageslug befindet. Wir haken es zweimal ein, um sowohl neue als auch bearbeitete Beiträge zu berücksichtigen.

Hier ist der Code für Ihre functions.phpDatei.

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"
    );
}

Alternativen?

Wenn Sie dem TinyMCE WYSIWYG-Editor nur Stile hinzufügen möchten, können Sie add_editor_style()Ihr Themen-Stylesheet auch im Texteditor für Verwaltungsbereiche registrieren. Der Pfad, den Sie als Argument hinzufügen, ist relativ zu Ihrem Themenstamm. In Ihrer functions.phpDatei:

add_editor_style( '/scripts/custom.css' );

So einfach ist das.

Kaiser
quelle
Ich erhalte die Meldung "Schwerwiegender Fehler: wpse44135_enqueue_admin_style () kann nicht erneut deklariert werden (zuvor deklariert", wenn
ich
@songdogtech "Kann nicht neu deklariert werden" erklärt, dass eine Funktion, Methode usw. bereits deklariert wurde_ / set. Problem _ war, dass ich den gleichen Funktionsnamen zweimal verwendet habe. Für die Zukunft: Bitte googeln Sie einfach PHP-Fehler und archivieren und bearbeiten Sie sie . Vielen Dank.
Kaiser
Ich wusste nicht, wie ich den Fehler beheben sollte, das habe ich kommentiert.
Markratledge
0

Hier ist eine schnelle Möglichkeit, dem Admin-Kopf einen Stil hinzuzufügen. hoffe das hilft:

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>';
}
Chandan Kumar Thakur
quelle