Cum să preluați doar textul din wp_content() și nu din wp_excerpt()?

22 feb. 2013, 10:15:45
Vizualizări: 54.6K
Voturi: 14

Î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!

0
Toate răspunsurile la întrebare 5
2
22

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.

30 sept. 2015 17:57:22
Comentarii

Acesta ar trebui aprobat ca răspuns.

AlbertSamuel AlbertSamuel
9 apr. 2018 02:44:18

De asemenea, nu acoperă shortcode-urile, înfășurați-l în strip_shortcodes()

Ostap Brehin Ostap Brehin
25 mai 2020 20:29:06
1

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(']]>', ']]&gt;', $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.

22 feb. 2013 12:24:20
Comentarii

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.

Thiha Maung Thiha Maung
24 feb. 2013 13:08:16
0

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>");

10 iun. 2018 19:50:18
0

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();.

16 nov. 2017 21:06:20
1

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(']]>', ']]&gt;', $content);
        echo $content;
2 ian. 2019 05:17:48
Comentarii

Nu este exact ceea ce au spus unele dintre celelalte răspunsuri, doar cu mai puțină explicație?

Matthew Brown aka Lord Matt Matthew Brown aka Lord Matt
4 sept. 2019 08:26:04