Limită de cuvinte în post_content după eticheta more

25 feb. 2015, 08:55:34
Vizualizări: 21.8K
Voturi: 3

Folosesc următorul cod pentru a ascunde teaser-ul și a afișa conținutul doar după eticheta more în buclă:

<?php
$after_more = explode(
    '<!--more-->', 
    $post->post_content
); 
if( $after_more[1] ) { 
    echo $after_more[1]; 
} else {
    echo $after_more[0]; 
}
?>

Există vreo modalitate de a afișa doar primele 50 de cuvinte în loc de întregul conținut al articolului? Vreau să ascund teaser-ul și să afișez 50 de cuvinte după eticheta more.

0
Toate răspunsurile la întrebare 2
7

Folosește funcția wp_trim_words pentru a limita conținutul la un anumit număr de cuvinte și returnează textul redus. Exemplu de utilizare a funcției wp_trim_words.

<?php

    $content = get_the_content();
    $trimmed_content = wp_trim_words( $content, 50, NULL );
    echo $trimmed_content;

?>

Am adăugat funcția wp_trim_words în codul tău pentru a obține 50 de cuvinte după <!-- more -->.

<?php
    $after_more = explode( '<!--more-->', $post->post_content );

    if( $after_more[1] ) {
        $content = $after_more[1];
    } else {
        $content = get_the_content();
    }

    $trimmed_content = wp_trim_words( $content, 50, NULL );
    echo $trimmed_content;
?>

Editat pentru a afișa 50 de cuvinte din conținut dacă nu există <!--more--> în conținutul postării.

25 feb. 2015 09:10:18
Comentarii

Este minunat. :)

Robert hue Robert hue
25 feb. 2015 09:32:41

Am putea folosi și funcția de bază get_extended() pentru a gestiona cazul mai general: <!--more(.*?)?-->. De exemplu: <!--more Dar stai, mai este! -->.

birgire birgire
25 feb. 2015 11:23:35

@birgire nu am văzut niciodată această funcție înainte. O să mă uit la ea. :) Mulțumesc

Robert hue Robert hue
25 feb. 2015 11:36:31

Salut Robert, voiam să știu ce se întâmplă dacă postarea nu are tag-ul <!--more--&gt. Am observat că ascunde tot conținutul.

Skotlive Skotlive
26 feb. 2015 16:23:25

Vreau să spun, există vreo modalitate de a folosi ambele coduri pe care le-ai scris în taxonomie într-un tag condițional if else: Dacă postarea are tag-ul <!--more-->, să folosească a doua opțiune, iar dacă postarea nu are <!--more-->, să folosească prima opțiune.

Skotlive Skotlive
26 feb. 2015 16:35:16

@SureshSoni Am făcut modificări în cod. Folosește codul actualizat și spune-mi dacă funcționează așa cum dorești.

Robert hue Robert hue
26 feb. 2015 21:26:05

@Roberthue , Mulțumesc! A funcționat și a fost de mare ajutor.

Skotlive Skotlive
3 mar. 2015 15:31:59
Arată celelalte 2 comentarii
0

A) Comentariul <!--more-->:

Iată o soluție într-o singură linie:

echo wp_trim_words( strip_shortcodes( strip_tags( get_the_content( '', true ) ) ), 50 );

unde folosim al doilea argument al funcției get_the_content() pentru a ascunde fragmentul de deasupra părții <!--more--> din conținutul articolului.

B) Comentariul <!--noteaser-->:

De remarcat că există și comentariul <!--noteaser-->, pe care îl putem folosi pentru a controla afișarea fragmentului direct din conținutul articolului:

....
<!--more--><!--noteaser-->
...

În acest caz am folosi:

echo wp_trim_words( strip_shortcodes( strip_tags( get_the_content( '', false ) ) ), 50 );

Putem aplica și filtre suplimentare acestui rezultat dacă este necesar.

Pentru acest caz am putea folosi și:

echo wp_trim_excerpt();

și apoi controla rezultatul cu filtrele excerpt_length, excerpt_more, the_content și wp_trim_excerpt.

Un exemplu cu Star Trek Lorem Ipsum:

Pentru cazul A de mai sus:

Înainte:

Exceeding reaction chamber thermal limit. 
We have begun power-supply calibration. 
<!--more-->
Force fields have been established on all turbo lifts and crawlways. 
Computer, run a level-two diagnostic on warp-drive systems. 
Antimatter containment positive. 
Warp drive within normal parameters. 
I read an ion trail characteristic of a freighter escape pod. 
The bomb had a molecular-decay detonator. 
Detecting some unusual fluctuations in subspace frequencies.
Sensors indicate no shuttle or other ships in this sector. 
According to coordinates, we have travelled 7,000 light years 
and are located near the system J-25. 
Tractor beam released, sir. 
Force field maintaining our hull integrity. 

După:

Force fields have been established on all turbo lifts and crawlways. 
Computer, run a level-two diagnostic on warp-drive systems. 
Antimatter containment positive. 
Warp drive within normal parameters. 
I read an ion trail characteristic of a freighter escape pod. 
The bomb had a molecular-decay detonator. 
Detecting some unusual fluctuations in subspace...
25 feb. 2015 12:00:00