it-swarm.com.de

Shortcode zum Hinzufügen von p- und br-Tags

Ich entschuldige mich, da mir klar ist, dass dies schon einmal gefragt wurde und ich glaube, dass das Problem darin besteht, dass die Funktion wpautop schließende p- oder br-Tags hinzufügt, aber jede Lösung, die ich gefunden habe, hat nicht funktioniert. Ich bin daher ratlos, das Problem zu beheben.

Ich mache:

class my_plugin {

  public static function init() {
    remove_filter('the_content', 'wpautop');
    add_shortcode('myshortcode', array(__CLASS__, 'my_shortcode'));
  }

  public static function my_shortcode() {
    /* do stuff here */
    ob_start();
    include('views/file.php');
     return ob_get_clean();
  }
}

my_plugin::init();

Ich habe auch versucht:

remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 99 );
add_filter( 'the_content', 'shortcode_unautop', 100 );

Folgendes befindet sich derzeit in der Ansichtsdatei:

<form method="get" id="search" action="<?= get_permalink() ?>">
    <input name="st" id="st" class="text" type="text">
    <input id="search" class="submit" value="Search" type="submit">
</form>

Und hier ist was gerendert wird:

<form method="get" id="search" action="">
    <input name="st" id="st" class="text" type="text"><br>
    <input id="search" class="submit" value="Search" type="submit"><br>
</form>

Wenn ich die Originalversion nehme und alle Zeilenumbrüche entferne, wird sie korrekt gerendert. Das Problem ist, dass es sich um eine erheblich vereinfachte Version der Originaldatei handelt und das Bearbeiten von "Ansichten" zum Albtraum wird, wenn sie in einer einzigen Zeile angezeigt werden müssen.

Für das, was es wert ist, wenn anstatt den Ansichtsinhalt zurückzugeben, ich es wiederhole, funktioniert alles wie erwartet (außer natürlich in der Lage, den Shortcode in anderen Inhalten korrekt zu platzieren).

Außerdem werden im Teil do stuff hier nur zwei Variablen aus der Anforderung und ein API-Aufruf abgerufen, um die in der Ansicht verwendeten Variablen einzurichten.

5
JSP

Ich bin mir nicht sicher, ob dies für andere hilfreich sein wird, aber der Grund für das Problem war ein benutzerdefinierter Formatierer, den das Thema hatte:

function my_formatter($content) {
        $new_content = '';
        $pattern_full = '{(\[raw\].*?\[/raw\])}is';
        $pattern_contents = '{\[raw\](.*?)\[/raw\]}is';
        $pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);

        foreach ($pieces as $piece) {
                if (preg_match($pattern_contents, $piece, $matches)) {
                        $new_content .= $matches[1];
                } else {
                        $new_content .= wptexturize(wpautop($piece));
                }
        }

        return $new_content;
}

remove_filter('the_content', 'wpautop');
remove_filter('the_content', 'wptexturize');

add_filter('the_content', 'my_formatter', 99);

FWIW: Das Thema ist Avenue (von ThemeForest), das das Thema "Pyre" verwendet. Der Grund, warum eine andere Site, die dasselbe Thema verwendet, das Problem nicht hatte, ist, dass die Datei functions.php als Teil eines untergeordneten Themas neu geschrieben/geändert wurde und die Datei shortcodes.php mit der obigen Funktion nicht enthielt.

Es tut mir leid, Ihre Zeit zu verschwenden, aber ich schätze Ihre Zeit/Antworten sehr.

3
JSP

Durch Automatische Formatierung von WordPress entfernen (siehe Punkt 9) habe ich herausgefunden, dass Sie die Tags raw verwenden müssen. In meinem Fall:

[raw][album=1 template=portfolio][/raw]

Ich habe NextGEN Gallery verwendet und in meinen Vorlagen wurden p- und br-Tags hinzugefügt. Eine andere Möglichkeit wäre das Auskommentieren des benutzerdefinierten Formatierers. Mein Thema hieß MG Universal Multimedia Gallery.

1
testing

Ohne den ganzen Code zu sehen, ist es schwer zu sagen.

Ich habe ein paar Mal ein Problem gesehen, bei dem bestimmte Zeilenumbrüche, Abstände oder seltsame Zeichen im Markup in Shortcode-Funktionen dazu führen, dass WP automatisch diejenigen hinzufügt, bei denen dies nicht der Fall sein sollte.

Wenn Sie sich Ihre Funktion ansehen, könnte dies in views/file.php der Fall sein. Stellen Sie sicher, dass Sie keine seltsamen Abstände oder unnötigen Zeilenumbrüche haben. Versuchen Sie sogar, Zeilenumbrüche zu löschen und wieder hinzuzufügen. Klingt komisch, aber ich habe es schon gesehen.

0
mindctrl