excerpt_length nu funcționează

2 apr. 2014, 03:16:23
Vizualizări: 14.6K
Voturi: 4

Încerc să construiesc o temă și vreau să controlez lungimea rezumatelor articolelor prin următorul cod în functions.php:

function theme_excerpt_length( $length ) {
    return 45; // Returnează 45 cuvinte pentru rezumat
}
add_filter( 'excerpt_length', 'theme_excerpt_length', 999 );

Dar nu pare să aibă efectul dorit de reducere a lungimii rezumatului la 45 de cuvinte. Chiar și fără această funcție, unele rezumate sunt mai lungi decât valoarea implicită de 55 de cuvinte. Ce ar putea fi în neregulă?

2
Comentarii

aceste articole au un rezumat personalizat introdus în câmpul de rezumat?

Milo Milo
2 apr. 2014 03:38:59

Nu. Nu există rezumat personalizat.

bodesam bodesam
2 apr. 2014 18:58:33
Toate răspunsurile la întrebare 4
0

Există două metode rapide pentru a afișa lungimi personalizate de rezumat în tema ta folosind wp_trim_words. Reține, dacă folosești the_excerpt(), lungimea rezumatului tău va fi întotdeauna maxim 55 de cuvinte, niciodată mai mult. Dacă folosești the_content(), poți specifica o lungime de rezumat mai mare de 55 de cuvinte.

Folosește următorul cod pentru a afișa rezumatul tău. Nu uita să înlocuiești get_the_excerpt cu get_the_content dacă ai nevoie de un rezumat mai lung de 55 de cuvinte, și înlocuiește <a href="'. esc_url( get_permalink() ) . '">' . '&nbsp;&hellip;' . __( 'Read more &nbsp;&raquo;', 'pietergoosen' ) . '</a> cu orice sfârșit de rezumat ai nevoie. Sfârșitul meu afișează un text "citeste mai mult" cu numele postului.

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>');
}

Acum folosește echo pietergoosen_custom_excerpts($limit); oriunde în șabloanele tale unde ai nevoie să afișezi rezumate. Doar schimbă $limit la numărul real de cuvinte, de exemplu echo pietergoosen_custom_excerpts(45); pentru a afișa 45 de cuvinte.

EDITARE

Vezi și răspunsul meu despre un rezumat personalizat.

2 apr. 2014 06:32:48
1

Aceasta este funcția pe care o folosesc pentru a controla lungimea fragmentelor (excerpt) sau a conținutului, în special în situațiile în care utilizatorul final nu este probabil să-și amintească să adauge tag-ul <!--more-->, dar design-ul temei o necesită.

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;
    }

De aici, poți schimba codul fragmentului în fișierele tale de șablon de la: <?php the_excerpt();?>

...la:

<?php echo excerpt(25);?>

unde 25 este numărul de caractere pe care dorești să le afișezi. Când proiectez teme, prefer să mă bazez pe caractere în loc de cuvinte, deoarece spațierea este puțin mai consistentă.

2 apr. 2014 04:53:49
Comentarii

Am încercat asta. Există o reducere a lungimii dar nu exact la lungimea specificată a fragmentului. De exemplu, am specificat 45, dar tot am primit un fragment de genul: "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

Dacă ai un fragment personalizat (custom excerpt), filtrul "excerpt_length" nu va funcționa pentru acesta. Poți folosi acest filtru pentru a trunchia fragmentul personalizat.

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

Succes!

29 nov. 2021 19:24:55
Comentarii

Căutam o soluție funcțională de jumătate de oră. Aceasta pare să funcționeze, mulțumesc!

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

Dacă ai ajuns la această întrebare pentru că folosești blocul "Excerpt" în editorul Gutenberg și încerci să setezi o lungime implicită pentru el (sau orice altceva în afara intervalului permis inițial de 10-100 de cuvinte), s-ar putea să observi că filtrul excerpt_length nu are efect asupra blocului și nici măcar nu poți folosi filtrul the_excerpt pentru a suprascrie conținutul excerpt-ului. Acest lucru se întâmplă din cauza ultimelor actualizări ale blocului Excerpt în WordPress.

Totuși, poți folosi următorul cod pentru a edita setările implicite ale blocului Excerpt din 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' );

Mai multe detalii aici: https://core.trac.wordpress.org/ticket/59348

14 sept. 2023 16:01:57