wp fügt Inline-Stil in Schleife hinzu

Ich möchte Inline-Styles dank der WordPress-function wp_add_inline_style hinzufügen.

Die Inline-Stile werden in einer Schleife hinzugefügt. In meinem Fall gebe ich ein Isotopenraster in meiner Schleife aus, und dieses Gitter kann unterschiedliche CSS-Anpassungen für jedes Gitter haben.

Eigentlich habe ich dieses PHP-Skript:

function grid_register_styles(){ $themeversion = wp_get_theme()->display('Version'); wp_register_style( 'grid-style', get_bloginfo('stylesheet_url'), array(), floatval($themeversion) , false ); } add_action( 'init', 'grid_register_styles' ); function grid_inline_styles($guttercss) { wp_enqueue_style( 'grid-style' ); wp_add_inline_style( 'grid-style', $guttercss); } /* this is the function used for the loop */ function grid_init() { /* There is some stuff before */ /* I calculate a variable in order to apply a style base on some options */ $guttercss = '.gutter-'. $gutter .' .to-item-wrapper {'; $guttercss .= 'margin: '. $gutter/2 .'px !important;}'; /* Then I call my function to output inline css style */ grid_inline_styles($guttercss); /* There is some stuff after */ } 

Dieser Code arbeitet in der Schleife und gibt für jedes erzeugte Isotopenraster einen anderen CSS-Stil aus.

Das erzeugte CSS befindet sich jedoch in der Fußzeile anstelle des Kopfes ….

Ich habe Erfolg, es mit einer add_action () in den Kopf zu setzen, aber es kann nicht nur außerhalb der Schleife und nur einmal funktionieren.

Ich denke, dass ich den Weg wp_add_inline_style () nicht richtig verstehe.

Solutions Collecting From Web of "wp fügt Inline-Stil in Schleife hinzu"

Wenn grid_init() in der Schleife ausgeführt wird, wird sie nach dem Seitenkopf und nach den zugehörigen hooks – wp_head , wp_enqueue_scripts usw. ausgeführt. PHP führt Zeile für Zeile nacheinander aus. Wenn Sie also einen Hook verpassen, haben Sie ihn gerade verpasst. Du kannst nicht rückwärts gehen. Das script / style Enqueueing-Subsystem muss jedoch Dinge in die Fußzeile einfügen können, und in diesem Fall ist das die einzige Option. Ich bin sicher, dass Sie das sehen.

Das Markup, das Sie erhalten, funktioniert möglicherweise , ist aber auch ungültig. Stile müssen im head .

Die einfachste und wahrscheinlich beste Lösung besteht darin, inline in style= -Tags in Ihrem Markup anzugeben.

Wenn diese Lösung nicht funktioniert, müssen Sie:

  1. Schleife durch den Loop im Kopf des Dokuments – wahrscheinlich im wp_enqueue_styles Hook
  2. Generieren Sie das Markup
  3. Setzen Sie den Loop zurück
  4. dann lass die Seite laden

Es ist natürlich eine zusätzliche Bearbeitungszeit erforderlich, aber wenn Sie nicht viele Posts pro Seite haben, werden Sie wahrscheinlich nicht bemerken.