Recherché partout mais cela ne semble pas être le cas. Je cherche à définir la longueur des extraits dans la boucle dans functions.php
mais j'ai besoin du premier message seulement pour avoir le double des caractères comme reste.
Exemple: le premier message est défini à 60 caractères, les suivants, à 30.
J'ai essayé ça mais ça ne marche pas:
function custom_excerpt_length( $length )
{
static $instance = 0;
return ( in_the_loop() && 0 == $instance++ ) ? 60 : 30;
}
add_filter( 'excerpt_length', 'custom_excerpt_length' );
Des idées?
Pour déterminer où vous vous trouvez dans la boucle de ce filtre, vous devez accéder à la requête principale globale . Comme ça:
add_filter ('excerpt_length', 'wpse268679_custom_excerpt_length');
function wpse268679_custom_excerpt_length ($length) {
// access main query
global $wp_query;
// do this only for the main loop and the first post in the query
if (is_main_query() && ($wp_query->current_post == 0))
$length = 60;
else
$length = 30;
return $length;
}
Ce qui précède fonctionnera uniquement pour la boucle principale. Si vous avez une boucle locale, vous ne pouvez pas accéder à la requête de manière globale. Vous devrez donc créer votre propre fonction d'extrait, qui transmet la requête à la place de la publication. Ce n'est pas si difficile. Comme ça:
wpse268679_custom_excerpt ($query) {
if ($query->current_post == 0)
$excerpt = wp_trim_words ($query->post->post_excerpt, 60);
else
$excerpt = wp_trim_words ($query->post->post_excerpt, 30);
return $excerpt;
}
Attention, il faudra peaufiner le réglage ci-dessus, par exemple pour prendre en compte les cas où aucun extrait n'est défini (dans ce cas, vous pouvez utiliser le contenu de la publication pour couper).