Was mit diesem Code falsch ist, muss ich einen Blockcode-Shortcode machen

Ich habe einen Shortcode für eine Blockquote [blockquote]this is the quote[/blockquote] … das ist der Code.

 function shortcode_shortcodetest( $atts, $content = null ) { $return = '
'; $return .= do_shortcode( $content ); $return .= '
'; $return .= '
'; return $return; } add_shortcode( 'shortcodetest', 'shortcode_shortcodetest' );

also würde ich eine Ausgabe von erwarten:

 

this is a test

oder vielleicht

 
this is a test

aber was ich bekomme ist:

 
this is a test

(Beachten Sie die Position des Anfangstages)

Was bewirkt, dass sich das öffnende p Tag dorthin bewegt, wo es sich befindet. Ich habe bemerkt, dass, wenn ich entweder das div oder blockquote von der shortcode function entferne, es nicht passiert, aber ich wollte den Wrapper aus irgendwelchen Stylinggründen haben und weil ich in der Vollversion eine assoziierte Cite Möglichkeit habe … und offensichtlich muss ich das blockquote haben.

Solutions Collecting From Web of "Was mit diesem Code falsch ist, muss ich einen Blockcode-Shortcode machen"

Zufällig entdeckte ich zufällig, was es war, also denke ich, dass ich das hier lassen werde, da es jemandem in der Zukunft helfen könnte. Auf einigen Webseiten, einschließlich einer Antwort auf diese Frage , wird empfohlen, den folgenden Code zu verwenden, um zu verhindern, dass wpautop erst nach den Kurzwahlcodes ausgeführt wird. Jetzt war ich nicht in der Lage, diesen Code vollständig zu verstehen, aber ich hatte es in meiner function.php und aus welchem ​​Grund auch immer, es war der Grund für das oben genannte.

 remove_filter( 'the_content', 'wpautop' ); add_filter( 'the_content', 'wpautop' , 12); 

Der Blick auf den Codex zeigt, dass WordPress doppelte Zeilenumbrüche automatisch in Absatz-Tags umwandelt. Der Code, den Sie in Ihre functions.php eingeben, wird dies deaktivieren. Dies wird dies auf jeder Seite Ihrer Website ändern.

Eine bessere Lösung könnte darin bestehen, Ihre functionscodefunktion zu überprüfen. Es wird höchstwahrscheinlich etwas Leerraum am Ende seiner Ausgabe ausgegeben. Mabey eine leere Zeile am Ende der HTML-Ausgabe vor einem öffnenden < ?php tag?

 ?> output some html here.... (one line end here) (one line end here) < ?php some other functions here... 

Was Sie haben, wird wahrscheinlich hier funktionieren, aber es wird die Ausgabe aller Ihrer Seiten ändern. Ich bezweifle, dass Sie daran gedacht haben.