Cum pot limita numărul de caractere în rezumat (excerpt)?

30 oct. 2012, 06:47:12
Vizualizări: 136K
Voturi: 12

Posibilă Duplicare:
rezumat în caractere

Am o întrebare după ce am citit această postare (Cum să evidențiezi termenii de căutare fără plugin). Îmi place foarte mult această funcție (Termen de Căutare Fără Plugin) dar numărul de caractere este prea mare. Ce cod PHP ar trebui să adaug pentru a face rezumatul mai scurt? Aș aprecia dacă cineva poate sugera o soluție. Mulțumesc!

0
Toate răspunsurile la întrebare 2
4
33

În plus față de cârligul de filtrare furnizat de răspunsul lui Deepa, iată o funcție suplimentară care vă poate ajuta să extindeți utilizarea the_excerpt în două moduri,

Vă permite să...

Limitați rezumatul după numărul de caractere, dar fără a trunchia ultimul cuvânt. Acest lucru vă va permite să returnați un număr maxim de caractere, dar să păstrați cuvintele întregi, astfel încât să fie returnate doar cuvintele care se încadrează în limita specificată și să vă permită să specificați sursa de unde va proveni rezumatul.

function get_excerpt($limit, $source = null){

    $excerpt = $source == "content" ? get_the_content() : get_the_excerpt();
    $excerpt = preg_replace(" (\[.*?\])",'',$excerpt);
    $excerpt = strip_shortcodes($excerpt);
    $excerpt = strip_tags($excerpt);
    $excerpt = substr($excerpt, 0, $limit);
    $excerpt = substr($excerpt, 0, strripos($excerpt, " "));
    $excerpt = trim(preg_replace( '/\s+/', ' ', $excerpt));
    $excerpt = $excerpt.'... <a href="'.get_permalink($post->ID).'">more</a>';
    return $excerpt;
}

/*
Exemplu...  Lorem ipsum habitant morbi (26 de caractere în total) 

Returnează primele trei cuvinte care au exact 21 de caractere inclusiv spațiile
Exemplu..  echo get_excerpt(21);  
Rezultat...  Lorem ipsum habitant 

Returnează același lucru ca mai sus, nu sunt suficiente caractere în limită pentru a returna ultimul cuvânt
Exemplu..  echo get_excerpt(24);    
Rezultat...  Lorem ipsum habitant  

Returnează toate cele 26 de caractere ale conținutului nostru, limită de 30 de caractere dată, sunt necesare doar 26 de caractere. 
Exemplu..  echo get_excerpt(30);    
Rezultat...  Lorem ipsum habitant morbi
*/

Această funcție poate fi utilizată de mai multe ori în fișierele de temă, fiecare cu limite diferite de caractere specificate.

Această funcție are capacitatea de a prelua un rezumat din fie,

  • the_content
  • the_excerpt

De exemplu, dacă aveți postări care conțin text în caseta the_excerpt din ecranul editorului de postări, dar doriți să extrageți un rezumat din corpul the_content pentru un caz de utilizare special, ați face în schimb;

get_excerpt(140, 'the_content'); //rezumatul este preluat din get_the_content

Acest lucru îi spune funcției că doriți primele 140 de caractere din the_content, indiferent dacă este setat un rezumat în caseta the_excerpt.

get_excerpt(140); //rezumatul este preluat din get_the_excerpt

Acest lucru îi spune funcției că doriți primele 140 de caractere din the_excerpt mai întâi și, dacă nu există niciun rezumat, the_content va fi utilizat ca rezervă.

Funcția poate fi îmbunătățită pentru a fi mai eficientă și/sau încorporată cu utilizarea filtrelor WordPress atât pentru the_content cât și pentru the_excerpt sau pur și simplu utilizată așa cum este în situațiile în care nu există o alternativă potrivită, încorporată în API-ul WordPress.

30 oct. 2012 10:36:23
Comentarii

Salut! Mulțumesc tuturor pentru răspunsurile oferite! Aș dori să întreb, cum pot face să funcționeze cu ... în loc de [...] la sfârșitul rezumatului?

Jornes Jornes
2 nov. 2012 07:24:05

Ultima linie, $excerpt = $excerpt.'... <a href="'.get_permalink($post->ID).'">more</a>'; este ceea ce poți folosi pentru a defini link-ul tău "citește mai mult" ca să zicem așa. Poți vedea că adaugă o elipsă, dar poți adăuga orice dorești.

Adam Adam
2 nov. 2012 07:36:43

@Jornes poate fi cu 6 ani întârziere, dar iată codul HTML pentru elipsă &hellip;

AlbertSamuel AlbertSamuel
20 iul. 2018 10:26:41

@AlbertSamuel Mulțumesc pentru răspuns. :)

Jornes Jornes
10 mai 2019 09:42:46
4
22

adaugă aceste linii în fișierul function.php

function custom_excerpt_length( $length ) {
        return 20;
    }
    add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );
30 oct. 2012 07:10:18
Comentarii

Acest lucru limitează numărul de cuvinte la 20, nu caracterele.

Ionut Necula Ionut Necula
7 dec. 2016 17:48:51

De ce am adăugat numărul 999 aici?

Navnish Bhardwaj Navnish Bhardwaj
11 apr. 2018 10:49:03

@NavnishBhardwaj 999 este prioritatea pentru încărcarea filtrului. consultați aici pentru mai multe detalii. https://developer.wordpress.org/reference/functions/add_filter/

Annapurna Annapurna
18 apr. 2018 09:33:59

@dipali Setarea lungimii fragmentului va ajuta la reducerea dimensiunii bazei de date?

Anand Somani Anand Somani
22 nov. 2022 00:12:28