wpautop () wenn Shortcode-Attribute auf neuen Zeilen sind, brechen Sie args array ab

Ich habe ein benutzerdefiniertes Shortcode-Tag mit ein paar Attributen, und ich möchte seine Attribute in neuen Zeilen anzeigen können, um es für Redakteure besser lesbar zu machen:

[component attr1 ="value1" attr2 ="value of the second one" attr3 ="another" attr4 ="value" ... attrN ="valueN"] 

Der Grund für diese Anforderung ist, dass einige Attribute im Inhalt ziemlich ausführlich sind. Unglücklicherweise fügt wpautop() ein böses Extra-Markup hinzu, das das $atts Array wie $atts bricht (mit php print_r($atts) ):

 Array ( [0] => attr1 [1] => ="value1" /> [3] => attr2 = [4] => "value [5] => of [6] => the [7] => second [8] => one" /> [10] => "" //...and more like this) 

Ich habe es mit den Attributen inline versucht:

 [component attr1 ="value1" attr2 ="value of the second one" ="value"... attrN ="valueN"] 

und die Ausgabe ist wie erwartet:

 Array ( [attr1] => value1 [attr2] => value of the second one [attr3] => //...and so on) 

Gibt es eine Möglichkeit, die Attribute intented zu haben und das zusätzliche Markup zu vermeiden, das das Array $args bricht?

Die function, mit der ich den Shortcode [component] registriere, extrahiert die Werte wie folgt:

 function component_func( $atts, $content = null ) { extract( shortcode_atts( array( 'attr1' => 'attr1', 'attr2' => 'attr2', 'attr3' => 'attr3', ), $atts ) ); // more code } 

Ich verwende dann diese extrahierten Variablen, um ein anderes Array zu füllen

Solutions Collecting From Web of "wpautop () wenn Shortcode-Attribute auf neuen Zeilen sind, brechen Sie args array ab"

Ok, ich habe noch nie einen Shortcode auf diese Weise gesehen, also habe ich ein bisschen Code zusammengeschmuggelt, um dein Szenario zu testen. Und ich bekomme die gleichen Ergebnisse mit Code, der gut mit dem Standard- Shortcode-Format funktioniert.

Standard-Kurzwahlformat

[shortcode name1 = “wert1” name2 = “wert2”]

Ich glaube nicht, dass dies ein Ergebnis von wpautop () ist, sondern ein Ergebnis der Art, wie die Shortcode-Attribute analysiert werden. Schauen Sie sich das obige Beispiel an und Sie werden sehen, dass der einzige nicht-quoted Whitespace verwendet wird, um den Shortcode und den Name zu trennen => Wert-Paare (dh keine Leerzeichen zwischen dem Namen und dem ‘=’, nur ein Leerzeichen zwischen jedem Namen => Wert Paar). In diesem Zusammenhang wird der
auch als Leerzeichen betrachtet.

Ich habe mich nicht mit den speziellen Interna des Shortcode Parsing beschäftigt, daher kann ich keinen Vorschlag zu einem Hook oder Filter machen, der helfen würde. Vielleicht hat ein anderer Benutzer hier ein paar Ideen dazu.

Wenn Sie Ihren Shortcode so formatieren müssen, wie Sie ihn haben, dann müssen Sie wohl benutzerdefinierten Code schreiben, um das Array zu parsen, das an Ihre Shortcode-function übergeben wurde. Alle Werte sind da, also sollten Sie sie wieder zusammenfügen können.

Eine weitere Option könnte darin bestehen, dem Endbenutzer ein Formular zur Eingabe der Werte zu geben und den Shortcode in Ihrem Inhalt zu füllen.

Ein Update für meine Antwort

Etwas an meiner Antwort nervte mich, also schaute ich wieder hin. Und Sie sind richtig, wpautop () hat Auswirkungen auf die Ausgabe der Seite. Aber ich glaube nicht, dass das der Grund für deine Shortcode-Probleme ist.