Verwendung von wp_add_inline_style ohne Stylesheet


18

Ich muss dem Header eines benutzerdefinierten Designs, das ich erstelle, benutzerdefinierte Inline-Stile hinzufügen. Ich bin auf die wp_add_inline_style()Funktion gestoßen, die funktioniert, mir aber nicht wirklich zusagt, da sie von einem bestimmten Stylesheet abhängt. Ich müsste Inline-Stile am Ende des Head-Tags ohne Stylesheet-Abhängigkeit hinzufügen.

Ich habe versucht, entweder das Stylesheet des Themas oder ein nicht vorhandenes Stylesheet festzulegen. In beiden Fällen funktioniert es, aber es ist ein bisschen schmutziger Hack IMO (entweder laden Sie das Theme Stylesheet zweimal oder verweisen Sie auf eine Ghost-Datei ...). Gibt es eine geeignete Möglichkeit, Inline-Stile in head hinzuzufügen, ohne von einem Stylesheet abhängig zu sein?

Natürlich könnte ich sie direkt in die header.php-Datei einfügen, aber ich möchte dies vermeiden.

Antworten:


24

Sie müssen nur die Stile direkt zum Seitenkopf hinzufügen. Der beste Weg, dies zu tun, ist die Verwendung des Aktions-Hooks 'wp_head', vorausgesetzt, Sie verwenden ein Thema, das den Hook hat. Wie so:

add_action('wp_head', 'my_custom_styles', 100);

function my_custom_styles()
{
 echo "<style>*{color: red}</style>";
}

Schauen Sie sich den WP-Codex an, um mehr über Action Hooks zu erfahren.


Kein Problem! Froh, dass ich helfen konnte.
SkyShab,

Wenn Sie (wie ich) benutzerdefiniertes Inline-CSS zu Dashboard-Seiten hinzufügen möchten, können Sie die admin_headAktion verwenden.
Der Brasilianer

16

Sie könnten einfach einen "Dummy" -Handle verwenden:

wp_register_style( 'dummy-handle', false );
wp_enqueue_style( 'dummy-handle' );

wp_add_inline_style( 'dummy-handle', '* { color: red; }' );

Ich mag diese Lösung wirklich, weil mein Stil ein Handle hat und in die Warteschlange gestellt wird, als wäre er aus einer CSS-Datei enthalten.
dev_masta

Die Verwendung von false als Quelle für wp_register_style ist gemäß der Dokumentation codex.wordpress.org/Function_Reference/…
16patsle

3

Ihr Thema hat mit Sicherheit ein Standard-Stylesheet (ansonsten würde es nicht einmal als Thema geladen werden). Verwenden Sie einfach genau dieses Stylesheet als Handler für Ihr Inline-CSS. Ein Beispiel finden Sie in der Datei functions.php des Themas TwentyFifteen (der Kürze halber übersprungener Code):

function twentyfifteen_scripts() {
    wp_enqueue_style( 'twentyfifteen-style', get_stylesheet_uri() );

}
function twentyfifteen_post_nav_background() {
    wp_add_inline_style( 'twentyfifteen-style', $css );
}

1
Das OP hat speziell nach einer anderen Methode als wp_add_inline_style () gefragt. Beide Methoden funktionieren, und ich habe keinen zwingenden Grund gefunden, mit wp_add_inline_style () zu arbeiten. Wenn Sie einen Grund kennen, würde ich gerne davon erfahren.
SkyShab

Ihre Lösung funktioniert, aber sie ist immer noch "hackig", wie ich einmal von jemandem aus dem WP-Team gehört habe (wenn ich mich nicht irre). nicht genau meine meinung . Ich denke, dass das OP dachte, es gäbe keine Möglichkeit, dies zu tun, ohne das Stylesheet zweimal zu laden oder einen Ghost Hook zu verwenden. Jedenfalls gibt es immer ein Stylesheet für ein Theme , wenn sie kein Plugin erstellen. Ich bearbeite auch meine Antwort, da Ihre Lösung im Codex dokumentiert ist. :)
Casper

Ich habe mit wp_add_inline_style () herumgespielt und das habe ich gefunden. Der Vorteil des Anhängens der Stile an ein Stylesheet besteht darin, dass die Stile nicht ausgedruckt werden, wenn sie aus der Warteschlange entfernt werden. Bei beiden Methoden werden sie jedoch inline im Kopf gedruckt. Angenommen, Sie sind ein Plug-in-Entwickler, und Ihre Stile werden im Kopf ausgedruckt. Dies hat nichts mit den Themenstilen zu tun. Wenn also ein untergeordnetes Thema die Hauptthemenstile aus der Warteschlange entfernt hat, um seine eigenen zu verwenden, werden Ihre Plug-in-Stile jetzt nicht ausgegeben. Aus diesem Grund hat das OP möglicherweise diesen Teil des Antrags angegeben.
SkyShab
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.