Come posso limitare la lunghezza dei caratteri nell'excerpt?

30 ott 2012, 06:47:12
Visualizzazioni: 136K
Voti: 12

Possibile Duplicato:
excerpt in caratteri

Ho una domanda dopo aver letto questo post (Come evidenziare i termini di ricerca senza plugin). Mi piace molto questa funzione (Termine di Ricerca Senza Plugin) ma la lunghezza dei caratteri è troppo lunga. Quale codice PHP dovrei aggiungere per rendere l'excerpt più corto? Apprezzerei molto se qualcuno potesse suggerirlo. Grazie!

0
Tutte le risposte alla domanda 2
4
33

Oltre al gancio del filtro fornito nella risposta di Deepa, ecco una funzione aggiuntiva che può aiutarti a estendere l'uso di the_excerpt in due modi,

Ti permette di...

Limitare l'estratto per numero di caratteri ma SENZA troncare l'ultima parola. Questo ti consentirà di restituire un numero massimo di caratteri preservando le parole intere, quindi verranno restituite solo le parole che possono rientrare nel limite specificato e ti permetterà di specificare la fonte da cui verrà preso l'estratto.

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).'">altro</a>';
    return $excerpt;
}

/*
Esempio...  Lorem ipsum habitant morbi (26 caratteri totali) 

Restituisce le prime tre parole che sono esattamente 21 caratteri inclusi gli spazi
Esempio..  echo get_excerpt(21);  
Risultato...  Lorem ipsum habitant 

Restituisce lo stesso di sopra, non ci sono abbastanza caratteri nel limite per restituire l'ultima parola
Esempio..  echo get_excerpt(24);    
Risultato...  Lorem ipsum habitant  

Restituisce tutti i 26 caratteri del nostro contenuto, limite di 30 caratteri dato, servono solo 26 caratteri. 
Esempio..  echo get_excerpt(30);    
Risultato...  Lorem ipsum habitant morbi
*/

Questa funzione può essere utilizzata più volte nei file del tema, ciascuna con limiti di caratteri diversi specificati.

Questa funzione ha la capacità di recuperare un estratto da entrambi,

  • the_content
  • the_excerpt

Ad esempio, se hai post che contengono testo nella casella the_excerpt nell'editor dei post, ma vuoi estrarre un estratto dal corpo the_content per un caso d'uso speciale, faresti invece;

get_excerpt(140, 'the_content'); //l'estratto viene preso da get_the_content

Questo indica alla funzione che vuoi i primi 140 caratteri da the_content, indipendentemente dal fatto che sia stato impostato un estratto nella casella the_excerpt.

get_excerpt(140); //l'estratto viene preso da get_the_excerpt

Questo indica alla funzione che vuoi i primi 140 caratteri da the_excerpt e se non esiste un estratto, verrà utilizzato the_content come fallback.

La funzione può essere migliorata per essere resa più efficiente e/o incorporata con l'uso dei filtri di WordPress sia per the_content che per the_excerpt o semplicemente utilizzata così com'è in situazioni in cui non esiste un'alternativa adatta già integrata nell'API di WordPress.

30 ott 2012 10:36:23
Commenti

Ciao! Grazie a tutti per le risposte fornite! Vorrei chiedere, come si può fare per far apparire ... invece di [...] alla fine dell'estratto?

Jornes Jornes
2 nov 2012 07:24:05

L'ultima riga, $excerpt = $excerpt.'... <a href="'.get_permalink($post->ID).'">more</a>'; è quella che puoi usare per definire il tuo link "leggi tutto". Come puoi vedere aggiunge i puntini di sospensione ma puoi inserire quello che preferisci.

Adam Adam
2 nov 2012 07:36:43

@Jornes forse sono passati 6 anni, ma ecco il codice HTML per i puntini di sospensione &hellip;

AlbertSamuel AlbertSamuel
20 lug 2018 10:26:41

@AlbertSamuel Grazie per la risposta. :)

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

aggiungi queste righe nel file function.php

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

Questo limita il numero di parole a 20, non i caratteri.

Ionut Necula Ionut Necula
7 dic 2016 17:48:51

Perché abbiamo aggiunto il numero 999 qui?

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

@NavnishBhardwaj 999 è la priorità per il caricamento del filtro. Per maggiori dettagli, consulta qui. https://developer.wordpress.org/reference/functions/add_filter/

Annapurna Annapurna
18 apr 2018 09:33:59

@dipali Impostare la lunghezza dell'estratto aiuta a ridurre le dimensioni del database?

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