Fortgeschritten: wp_add_inline_style function verstehen

Ich lese wirklich viele Artikel zum Hinzufügen von dynamischen Inline-Stylesheets. aber dieser macht mich verrückt. Ich habe ein einfaches Dev-Setup. Das ist mein globaler Stil:

function bootstrap_scripts_styles() { wp_enqueue_style( 'custom-style', get_stylesheet_directory_uri().'/style.css', array(), '2016-07-18' ); } add_action( 'wp_enqueue_scripts', 'bootstrap_scripts_styles' ); 

Da ich benutzerdefinierte Stile aus single.php auslösen muss, habe ich hier einen Beispielcode hinzugefügt:

 $custom_css = ".intro { background: red; }"; wp_add_inline_style( 'custom-style', $custom_css ); 

damit passiert nichts. Ich sehe keinen Inline-Stil im Frontend-Code. Aber wenn ich WP_Styles () debugge und nach “custom-style” suche, kann ich sehen, dass der Stil angehängt wird:

 [custom-style] => _WP_Dependency Object ( [handle] => custom-style [src] => http://localhost/westerland/wp-content/themes/westerland/style.css [deps] => Array ( ) [ver] => 2013-07-18 [args] => all [extra] => Array ( [after] => Array ( [0] => .intro { background: red; } ) ) ) 

also frage ich mich, warum es nicht gedruckt wird ?! Ich habe einen Weg gefunden, es zu drucken, aber dann wird es in statt direkt hinter dem -Tag des globalen Stils gedruckt:

 $custom_css = ".intro { background: red; }"; wp_add_inline_style( 'custom-style', $custom_css ); WP_Styles()->print_inline_style("custom-style"); 

Das fühlt sich ein wenig “hacky” an, weil ich möchte, dass es so sauber wie möglich im -Tag erscheint. ist das eine Art Bug? Ich verwende neueste WP.

Solutions Collecting From Web of "Fortgeschritten: wp_add_inline_style function verstehen"

Überprüfen Sie, ob das Folgende für Sie funktioniert. Passen Sie einfach die is_single () an is_singular (‘custom-post-type’) an, wenn Sie dies speziell für eine einzelne benutzerdefinierte Beitragstypvorlage wünschen. Hoffe das hilft.

 function bootstrap_scripts_styles() { wp_enqueue_style('custom-style',get_template_directory_uri() . '/bootstrap.css'); $custom_css = ".intro { background: red; }"; wp_add_inline_style( 'custom-style', $custom_css ); } function enqueue_inline_style( $query ) { if ( $query->is_single()) { add_action( 'wp_enqueue_scripts', 'bootstrap_scripts_styles' ); } } add_action( 'pre_get_posts', 'enqueue_inline_style' ); 

edit: Natürlich nur das Main Stylesheet separat in die Warteschlange stellen.

Danke Svartbaart. Ihre Antwort führte mich in die richtige Richtung. Das Hauptproblem bei meinem Ansatz war, dass ich ihn in der single.php ausführte, wo der Druck des Inline-Styles nicht ausgeführt wird. Also habe ich es in functions.php in einer eigenen function eingefügt, die von wp_enqueue_scripts hook ausgetriggers wird. Der letzte Code ist dies:

 function inline_style() { global $post; if(is_single()) { $custom_css = ".intro { background:red }"; wp_add_inline_style('custom-style', $custom_css); } } add_action( 'wp_enqueue_scripts', 'inline_style' );