it-swarm.com.de

WordPress <p> Tags entfernen?

Ich bin bereits auf einen Fall gestoßen, in dem Wordpress <p> Tags hinzugefügt hat. Jetzt habe ich es jedoch mit der gegenteiligen Situation zu tun. Wenn ich [] Shortcodes in <p> Tags hinzufüge, entfernt WordPress <p> Tags automatisch.

<p>[anyshortcode]Hello World[/anyshortcode]</p>

Wird:

Hello World

Das Hinzufügen von dir = "ltr" zu <p>-Tags scheint das Problem zu beheben. Vielleicht gibt es eine Möglichkeit, es programmgesteuert zu allen <p>-Tags hinzuzufügen?

Irgendwelche Ideen, wie man das behebt?

4

Dies ist so ziemlich das, was Foxsk8 in einem Kommentar erwähnt hat, also sollte ihm das Verdienst gelten, aber diese zusätzlichen Anweisungen werden nützlich sein. Das WordPress-Plugin namens TinyMCE Advanced wird Ihr Problem lösen.

Dieses Plugin enthält eine Option in Settings > TinyMCE Advanced, die das Verschwinden der <p>-Tags behebt. Aktivieren Sie das Kontrollkästchen Stop removing the <p> and <br /> tags when saving and show them in the Text editor, damit Ihre <p>-Tags erhalten bleiben.

4
E. Serrano

TinyMCE ist so programmiert, dass die Bearbeitung einfach ist (was für uns mit HTML-Kenntnissen oft nicht der Fall ist). Standardmäßig sollte <p>-Tagging um [BLÖCKE] nicht akzeptiert werden. Das liegt daran, dass "[]" nicht nur in WP für den Shortcode verwendet wird, sondern auch in einer Menge PHP-basierter CMS. Die Shortcodes sollten über den entsprechenden Inhaltswrapper verfügen.

Das heißt, die Lösung besteht darin, die <p>-Tags in Ihren Shortcode-Code einzufügen, damit Ihr Inhalt so verpackt wird, wie Sie es möchten.

1
STing

Sie können diesen folgenden Code in Ihre function.php-Datei einfügen

function content_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));
            }
    }

    $array = array(
            '<p>[' => '[',
            ']</p>' => ']',
            ']<br />' => ']'
    );

    $new_content = strtr($new_content, $array);

    return $new_content;

}

Rufen Sie diese Funktion nun wie gewünscht auf;

<?php echo content_formatter( get_field('field_name') ); ?>
0
Mrudang Shah