Cum să preluați doar textul din wp_content() și nu din wp_excerpt()?
În prezent dezvolt un site web cu WordPress 3.5 și am nevoie să preiau Textul Postării (Doar text, fără imagini) în Pagina de Arhivă. Pot să-l preiau cu metoda wp_excerpt()
fără probleme. Dar problema principală pentru mine este că nu pot obține layoutul exact al textului. Metoda wp_excerpt()
returnează text care ignoră toate spațiile suplimentare și întreruperile de rând. Ce ar trebui să fac? Cred că voi obține Doar Textul Postării cu Layout Exact dacă pot prelua din metoda wp_content()
. Mulțumesc anticipat pentru ajutor!
Sau chiar mai simplu:
echo wp_strip_all_tags( get_the_content() );
Folosind:
Preia conținutul articolului. (Trebuie utilizat într-o Buclă)
O diferență importantă față de
the_content()
este căget_the_content()
nu trece conținutul prin filtrul 'the_content
'. Aceasta înseamnă căget_the_content()
nu va încorpora automat videoclipuri sau nu va expanda shortcodes-uri, printre altele.
Elimină corect toate tag-urile HTML, inclusiv script și stil.

Nu există o funcție WordPress nativă pentru a prelua doar textul, dar poți folosi filtre WordPress și cod regex pentru a rezolva această problemă specifică.
Pentru a obține text neformatat, folosește funcția get_the_content(). Pentru a aplica toate filtrele, folosește-o în felul următor (vezi 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;
Înainte de a aplica filtrele, există spațiu pentru modificări personalizate, de exemplu eliminarea imaginilor. Așa:
$content = get_the_content();
$content = preg_replace('/(<)([img])(\w+)([^>]*>)/', "", $content);
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;
Sursa codului preg_replace: http://www.phpzag.com/php-remove-image-tags-from-a-html-string-with-preg_replace/
Poate fi necesar să elimini și shortcode-urile, dacă sunt folosite. Acest lucru se poate face și prin preg_replace și sunt sigur că vei găsi exemple pe Google.

Mulțumesc mult pentru răspuns și îmi cer scuze pentru întârzierea mea. Am încercat așa. $content = get_the_content(); $content = preg_replace('/(<)([gallery])(\w+)([^>]*>)/', ”, $content); $content = apply_filters('the_content', $content); $content = str_replace(']]>', ']]>', $content); echo $content;
Dar nu a funcționat. Niciun imagine nu a fost eliminată și nu văd textul pe care mă așteptam să îl văd.

Am combinat rezultatele din celelalte răspunsuri de pe acest post pentru a elimina imaginile și audio etc, dar păstrând formatarea. Mai întâi obținând conținutul cu get_the_content
, apoi trecându-l prin filtrul "the_content" pentru a adăuga formatare etc, și apoi folosind funcția PHP strip_tags
pentru a permite doar un număr limitat de tag-uri.
strip_tags(apply_filters('the_content',get_the_content()),"<p><a><br><b><u><i><strong><span><div>");

Următorul cod funcționează perfect pentru mine. Doar adaugă acest cod în fișierul functions.php
din tema ta:
// Hook: pentru a obține conținutul fără imagini
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;
}
Apoi, obține conținutul articolului în modul standard folosind echo the_content();
.

Iată codul pentru a elimina conținutul galeriei și a rămâne doar cu conținutul.
$content = get_the_content();
$content = preg_replace('/\[gallery.*ids=.(.*).\]/', "", $content);
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;
