it-swarm.com.de

<P> und <br/> Tags in WordPress-Beiträgen entfernen

Wann immer ich Inhalte auf der WordPress-Post-Seite poste, werden einige Absatz-Tags wie <p> und <br/> angezeigt. Was ist etwas mehr Platz in der Ausgabe. Gibt es eine Lösung dafür? Wie entferne ich alle Tags?

48
NewUser

Dies geschieht aufgrund der wpautop von WordPress. Fügen Sie einfach die folgende Codezeile in die functions.php-Datei Ihres Themas ein

remove_filter( 'the_content', 'wpautop' );

remove_filter( 'the_excerpt', 'wpautop' );

Weitere Informationen: http://codex.wordpress.org/Function_Reference/wpautop

102

Ich würde die Verwendung der Option remove_filter nicht empfehlen, da sie Tags und Markups überall dort entfernt, wo Sie sie in Ihrer Vorlage aufrufen.

Am besten bereinigen Sie Ihre Zeichenkette mit PHP

sie können die PHP-Funktion strip_tags verwenden, um nutzlose Markups zu entfernen: echo strip_tags(get_the_excerpt()); // Get the raw text excerpt from the current post

oder

echo strip_tags(category_description()); // Get the raw text cat desc from the current cat page

dadurch werden alle HTML-Tags aus dem aktuellen wordpress post entfernt, wenn es aufgerufen wird.

sie können die Trimmfunktion auch nur für folgende Fälle hinzufügen: echo trim(strip_tags(get_the_excerpt())); // Get the raw text excerpt from the current post

oder

echo trim(strip_tags(category_description())); // Get the raw text cat desc from the current cat page

dies ist perfekt, um rohen Text für meta = "description" und title zu erhalten, wobei HTML-Markups nicht empfohlen werden.

Ich hoffe es hilft

Das Entfernen des wpautop-Filters ist nicht die flexibelste Lösung . Wenn Sie nach einer seitenweisen Lösung oder nach dem Postweg suchen, können Sie dieses Plugin verwenden:

https://wordpress.org/plugins/dont-muck-my-markup/

Bei jedem Beitrag/jeder Seite wird ein Kontrollkästchen hinzugefügt, aus dem Sie auswählen können, ob das Core-Wordpress-Verhalten für diese bestimmte Seite deaktiviert wird oder nicht.

Dies ist besonders nützlich, wenn Sie etwas HTML-Code veröffentlichen möchten und die automatisch generierten Codes <br> und <p> Ihr durchdachtes Design durcheinander bringen. 

Das Plug-In verfügt auch über eine globale Option, sodass Sie dieses Verhalten standardmäßig für alle Seiten/Beiträge deaktivieren können.

Ein alternatives Plug-In ist https://wordpress.org/plugins/preserve-code-formatting/ . Allerdings habe ich nur das von mir beschriebene versucht.

1
bg17aw

versuche dies

$my_postid = $post->ID;
$content_post = get_post($my_postid);
$content = $content_post->post_content;
$content = apply_filters('the_content', $content);
$content = strip_tags($content, '<p><br/>');
echo $content;
1
Gowri

Verwenden Sie diesen Code, um<p></p>vor der Initialisierung des Editors zu entfernen.

function tinymce_remove_root_block_tag( $init ) {
    $init['forced_root_block'] = false; 
    return $init;
}
add_filter( 'tiny_mce_before_init', 'tinymce_remove_root_block_tag' );
0
myvahid

Das Entfernen der WordPress-Funktion "wpautop" in der functions.php Ihres Themas funktioniert manchmal (aus bestimmten Gründen) nicht.

Ich habe also eine andere Lösung, um <br>-Tags oder doppelte (<br><br>) Zeilenumbrüche zu entfernen.

  1. Nehmen Sie Änderungen an Ihrer Datei vor /wp-content/themes/your_theme_name/functions.php

Fügen Sie oben in Ihren Funktionen 2 Zeilen hinzu.

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

Dies deaktiviert zunächst die wpautopop-Funktion.

  1. Nehmen Sie Änderungen in der Datei /wp-includes/formatting.php in der Funktion wpautop vor.

    A) Ändern Sie function wpautop( $pee, $br = true) in function wpautop( $pee, $br = false).

    Dadurch wird zusätzlich die wpautopop-Funktion von allen Orten aus deaktiviert.

    B) Ändern Sie $pee = preg_replace('|<br\s*/?>\s*<br\s*/?>|', "\n\n", $pee); in 

    $pee1 = $pee;
    $pee = preg_replace('|<br\s*/?>\s*<br\s*/?>|', "\n\n", $pee);
    $pee = $pee1;
    

    Dies verhindert, dass das System doppelte <br>-Tags entfernt. (Ich weiß, der Code ist seltsam, aber einfach, //$pee hilft hier nicht, da ?>-Tag).

    C) Ändern Sie $pee = preg_replace("/\n\n+/", "\n\n", $pee); in //$pee = preg_replace("/\n\n+/", "\n\n", $pee);

    Dadurch wird verhindert, dass das System mehrere Zeilenumbrüche entfernt.

    D) Ändern Sie dies:

    $pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee);
    

    dazu:

    //$pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee);
    

    Dadurch wird verhindert, dass das System Zeilenumbrüche nach dem Öffnen oder vor dem schließenden Blockelement-Tag wie <div>, <article> usw. entfernt.

    E) Ändern Sie dies:

    $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee);
    

    dazu:

    //$pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee);
    

    Das Gleiche gilt: Dies verhindert, dass das System Zeilenumbrüche nach dem Öffnen oder vor dem schließenden Blockelement-Tag wie <div>, <article> usw. entfernt.

    F) Ändern Sie dies:

    $pee = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee);
    

    dazu:

    // $pee = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee);
    

    Dadurch wird verhindert, dass das System <br> am Ende des Blocks entfernt.

    G) Ändern Sie dies:

    $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee);
    

    dazu:

    //$pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee);
    

    Dadurch wird verhindert, dass das System <br> nach einem öffnenden oder schließenden Blocktag entfernt.

Hoffe es wird helfen! Lesen Sie die Kommentare in dieser Datei - sie helfen Ihnen zu verstehen, was Sie ein- oder ausschalten müssen.

0
Kir Mazur

Standardmäßig fügt WordPress den Beschreibungen der Kategorien Absatz <p></p>-Tags hinzu. Beenden Sie dies, indem Sie der Datei functions.php Folgendes hinzufügen

// Remove p tags from category description
remove_filter('term_description','wpautop');

Einfach und einfach (codeless).

Vielen Dank

0
Jodyshop

benutze das $ editor = wp_filter_nohtml_kses ($ _ POST ['editor1']);

0
Alpesh Navadiya

Da die akzeptierte Antwort hier in WP 4.8.1 nicht funktionierte, habe ich eine Problemumgehung veröffentlicht, die für mich funktioniert hat. Ich musste nur eine Klasse zum p hinzufügen und WordPress wird sie nicht entfernen.

<p class="whatever">
0