excerpt_length non funziona - Risoluzione problemi WordPress

2 apr 2014, 03:16:23
Visualizzazioni: 14.6K
Voti: 4

Sto cercando di costruire un tema e voglio controllare la lunghezza degli estratti dei post facendo qualcosa come questo in functions.php:

// Funzione per modificare la lunghezza degli estratti
function theme_excerpt_length( $length ) {
    return 45; // Restituisce 45 parole come lunghezza desiderata
}
// Aggiunge il filtro con priorità alta (999)
add_filter( 'excerpt_length', 'theme_excerpt_length', 999 );

Ma non sembra avere l'effetto desiderato di ridurre la lunghezza dell'estratto a 45 parole. Inoltre, anche senza questa funzione, alcuni estratti sono più lunghi del valore predefinito di 55 parole. Cosa potrebbe non funzionare?

2
Commenti

quei post hanno un estratto personalizzato inserito nel campo dell'estratto?

Milo Milo
2 apr 2014 03:38:59

No. Nessun estratto personalizzato.

bodesam bodesam
2 apr 2014 18:58:33
Tutte le risposte alla domanda 4
0

Ci sono due modi rapidi per visualizzare lunghezze personalizzate degli estratti nel tuo tema utilizzando wp_trim_words. Ricorda, se usi the_excerpt(), la lunghezza del tuo estratto sarà sempre un massimo di 55 parole, mai di più. Se invece usi the_content(), puoi specificare una lunghezza dell'estratto superiore a 55 parole.

Usa il seguente codice per visualizzare il tuo estratto. Ricorda di sostituire get_the_excerpt con get_the_content se hai bisogno di un estratto con più di 55 parole, e sostituisci <a href="'. esc_url( get_permalink() ) . '">' . '&nbsp;&hellip;' . __( 'Read more &nbsp;&raquo;', 'pietergoosen' ) . '</a> con qualsiasi chiusura di estratto tu necessiti. La mia chiusura mostra un testo "leggi tutto" con il nome del post.

function pietergoosen_custom_excerpts($limit) {
    return wp_trim_words(get_the_excerpt(), $limit, '<a href="'. esc_url( get_permalink() ) . '">' . '&nbsp;&hellip;' . __( 'Read more &nbsp;&raquo;', 'pietergoosen' ) . '</a>');
}

Ora puoi semplicemente usare echo pietergoosen_custom_excerpts($limit); ovunque nei tuoi template dove hai bisogno di visualizzare estratti. Basta cambiare $limit con il numero effettivo di parole, ad esempio echo pietergoosen_custom_excerpts(45); per visualizzare 45 parole.

MODIFICA

Dai un'occhiata anche alla mia risposta su un estratto personalizzato

2 apr 2014 06:32:48
1

Questa è la funzione che utilizzo per controllare la lunghezza degli estratti/contenuti, specialmente in situazioni in cui è improbabile che l'utente finale ricordi di aggiungere il tag <!--more-->, ma il design del tema lo richiede.

function excerpt($limit) {
    $excerpt = explode(' ', get_the_excerpt(), $limit);
    if (count($excerpt)>=$limit) {
        array_pop($excerpt);
        $excerpt = implode(" ",$excerpt).'...';
      } else {
        $excerpt = implode(" ",$excerpt);
      } 
    $excerpt = preg_replace('`\[[^\]]*\]`','',$excerpt);
    return $excerpt;
    }

Da qui, puoi modificare il codice dell'estratto nei tuoi file template da: <?php the_excerpt();?>

...a:

<?php echo excerpt(25);?>

dove 25 è il numero di caratteri che vuoi visualizzare. Quando progetto temi, tendo a utilizzare i caratteri invece delle parole perché la spaziatura risulta un po' più consistente.

2 apr 2014 04:53:49
Commenti

Ho provato questo. C'è una riduzione nella lunghezza ma non esattamente quella specificata per l'estratto. Ad esempio ho specificato 45, ma ho comunque ottenuto un estratto come: "Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem..."

bodesam bodesam
2 apr 2014 19:03:07
1

Se hai un estratto personalizzato, il filtro "excerpt_length" non funzionerà su di esso. Puoi utilizzare questo filtro per tagliare l'estratto personalizzato.

function custom_excerpt_length($excerpt) {
    if (has_excerpt()) {
        $excerpt = wp_trim_words(get_the_excerpt(), apply_filters("excerpt_length", 30));
    }
    return $excerpt;
}
add_filter("the_excerpt", "custom_excerpt_length", 999);

Buona fortuna!

29 nov 2021 19:24:55
Commenti

Ho cercato una soluzione funzionante per mezz'ora. Questa sembra funzionare, grazie!

Jameu Lukasli1 Jameu Lukasli1
29 apr 2022 17:58:52
0

Se hai trovato questa domanda, è perché stai utilizzando il blocco "Estratto" nell'editor Gutenberg e stai cercando di impostare una lunghezza predefinita per esso (o qualsiasi valore diverso da quello originariamente consentito tra 10-100 parole). Potresti notare che il filtro excerpt_length non ha alcun effetto sul blocco, e non puoi nemmeno usare il filtro the_excerpt per sovrascrivere il contenuto dell'estratto. Ciò è dovuto agli aggiornamenti più recenti apportati al blocco Estratto in WordPress.

Tuttavia, puoi utilizzare il seguente codice per modificare le impostazioni predefinite del blocco Estratto in Gutenberg:

function filter_metadata_registration( $metadata ) {
    if ($metadata['name'] === 'core/post-excerpt') {
        $metadata['attributes']['excerptLength'] = [
            'type' => 'number',
            'default' => 9999,
        ];
    }
    return $metadata;
};
add_filter( 'block_type_metadata', 'filter_metadata_registration' );

Maggiori informazioni: https://core.trac.wordpress.org/ticket/59348

14 set 2023 16:01:57