web-dev-qa-db-de.com

Wie kann ich Text nur von wp_content () und nicht von wp_excerpt () abrufen?

Ich entwickle derzeit eine Website mit WordPress 3.5 und muss Text posten (nur Text, keine Bilder) at Archivseite . Ich kann es mit wp_excerpt() Methode ohne Probleme abrufen. Das Hauptproblem für mich ist jedoch, dass ich nicht das genaue Textlayout bekomme. Die Methode wp_excerpt() gibt Text zurück, der alle zusätzlichen Leerzeichen und Zeilenumbrüche ignoriert. Was soll ich machen? Ich denke, ich bekomme Nur Post-Text mit genauem Layout wenn ich von der wp_content()-Methode abrufen kann. Vielen Dank im Voraus für Ihre Hilfe!

4
Thiha Maung

Oder noch einfacher:

echo wp_strip_all_tags( get_the_content() );

Durch die Nutzung:

  • get_the_content()

    Rufen Sie den Inhalt des Beitrags ab. (Muss in einer Schleife verwendet werden)

    Ein wichtiger Unterschied zu the_content() besteht darin, dass get_the_content() den Inhalt nicht über den 'the_content' weitergibt. Dies bedeutet, dass get_the_content() unter anderem keine Videos automatisch einbettet oder Shortcodes erweitert.

  • wp_strip_all_tags()

    Entfernen Sie ordnungsgemäß alle HTML-Tags, einschließlich Skript und Stil.

8
andy

Es gibt keine native WordPress-Funktion, um nur Text abzurufen, aber Sie können WordPress-Filter und Regex-Code verwenden, um dieses spezielle Problem anzugehen.

Verwenden Sie get_the_content () , um unformatierten Text abzurufen. Verwenden Sie diese Methode, um alle Filter anzuwenden (siehe Codex: http://codex.wordpress.org/Function_Reference/the_content#Alternative_Usage ):

$content = get_the_content();
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;

Vor dem Anwenden von Filtern können Sie benutzerdefinierte Änderungen vornehmen, z. Bilder entfernen. Diesen Weg:

$content = get_the_content();
$content = preg_replace('/(<)([img])(\w+)([^>]*>)/', "", $content);
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]&gt;', $content);
echo $content;

Quellcode von preg_replace: http://www.phpzag.com/php-remove-image-tags-from-a-html-string-with-preg_replace/

Eventuell müssen Sie auch Kurzwahlen entfernen, falls welche verwendet werden. Dies kann auch über preg_replace erfolgen und ich wette, Sie finden einige auf der Google.

4
david.binda

Ich habe die Ergebnisse der anderen Antworten in diesem Beitrag kombiniert, um Bilder und Audiodateien usw. zu entfernen, aber die Formatierung beizubehalten. Indem Sie zuerst den Inhalt mit get_the_content abrufen, ihn dann durch den Filter "the_content" leiten, um Formatierungen usw. hinzuzufügen, und dann den strip_tags von php verwenden, um nur eine begrenzte Anzahl von Tags zuzulassen.

strip_tags(apply_filters('the_content',get_the_content()),"<p><a><br><b><u><i><strong><span><div>");

1

Der folgende Code funktioniert perfekt für mich. Fügen Sie dies einfach zu Ihrer functions.php-Datei in Ihrem Thema hinzu:

// Hook : to get content without images
add_filter('the_content', 'wpse_get_content_without_images');

function wpse_get_content_without_images() {
    $content = get_the_content();
    $content = preg_replace( '/<img[^>]+./', '', $content );
    echo $content;
}

Holen Sie sich dann Ihren Beitragsinhalt auf die übliche Weise mit echo the_content();.

1
ITstudios

Hier ist der Code, um Galerieinhalte zu entfernen und nur Inhalte zu haben.

$content = get_the_content();
        $content = preg_replace('/\[gallery.*ids=.(.*).\]/', "", $content);
        $content = apply_filters('the_content', $content);
        $content = str_replace(']]>', ']]&gt;', $content);
        echo $content;
0
Rhinotheme