Par défaut, les extraits WordPress sont définis sur 55 mots et il y a un filtre de longueur d’extrait qui vous permet de changer cette valeur par défaut à la longueur de votre choix. Mais que faire si vous vouliez une longueur d’extrait différente sur différentes sections de votre site ? Par exemple, si vous développez un site Web avec plusieurs types de publication, vous souhaiterez peut-être afficher différentes longueurs d’extrait en fonction du type de publication. Un article de blog peut avoir un extrait plus long que par exemple un élément de portefeuille.
Fonction d’extrait personnalisé
Vous trouverez ci-dessous une fonction personnalisée que nous avons développée pour vous aider à afficher des extraits de différentes longueurs dans WordPress. Pour utiliser la fonction, ajoutez-la simplement à votre fichier functions.php, puis vous pouvez remplacer les fonctions the_excerpt ou the_content tout au long de votre thème afin que vous puissiez différentes longueurs d’extrait.
function wpex_get_excerpt( $args = array() ) {
// Default arguments.
$defaults = array(
'post' => '',
'length' => 40,
'readmore' => false,
'readmore_text' => esc_html__( 'read more', 'text-domain' ),
'readmore_after' => '',
'custom_excerpts' => true,
'disable_more' => false,
);
// Apply filters to allow child themes mods.
$args = apply_filters( 'wpex_excerpt_defaults', $defaults );
// Parse arguments, takes the function arguments and combines them with the defaults.
$args = wp_parse_args( $args, $defaults );
// Apply filters to allow child themes mods.
$args = apply_filters( 'wpex_excerpt_args', $args );
// Extract arguments to make it easier to use below.
extract( $args );
// Get the current post.
$post = get_post( $post );
// Get the current post id.
$post_id = $post->ID;
// Check for custom excerpts.
if ( $custom_excerpts && has_excerpt( $post_id ) ) {
$output = $post->post_excerpt;
}
// No custom excerpt...so lets generate one.
else {
// Create the readmore link.
$readmore_link = '<a href="' . esc_url( get_permalink( $post_id ) ) . '" class="readmore">' . $readmore_text . $readmore_after . '</a>';
// Check for more tag and return content if it exists.
if ( ! $disable_more && strpos( $post->post_content, '<!--more-->' ) ) {
$output = apply_filters( 'the_content', get_the_content( $readmore_text . $readmore_after ) );
}
// No more tag defined so generate excerpt using wp_trim_words.
else {
// Generate an excerpt from the post content.
$output = wp_trim_words( strip_shortcodes( $post->post_content ), $length );
// Add the readmore text to the excerpt if enabled.
if ( $readmore ) {
$output .= apply_filters( 'wpex_readmore_link', $readmore_link );
}
}
}
// Apply filters and return the excerpt.
return apply_filters( 'wpex_excerpt', $output );
}
Comment utiliser la fonction
Alors maintenant, au lieu d’utiliser « the_excerpt() » dans vos boucles, vous pouvez utiliser « wpex_excerpt( $args) », où $args contient un tableau de vos paramètres préférés pour l’extrait spécifique.
Exemple:
<?php echo wpex_get_excerpt ( $defaults = array(
'length' => 40,
'readmore' => true,
'readmore_text' => esc_html__( 'read more', 'wpex-boutique' ),
'custom_excerpts' => true,
) ); ?>
Filtres de fonction
Vous remarquerez peut-être que notre extrait comprend diverses fonctions apply_filters(). Pourquoi? La raison en est que si vous travaillez sur un thème ou un plugin premium ou gratuit pour la distribution, vous voudrez donner aux utilisateurs finaux la possibilité de modifier leurs extraits via leur thème enfant si nécessaire. Par exemple, si vous définissez un extrait d’une certaine longueur pour une section du site, l’utilisateur final peut toujours utiliser le filtre « wpex_get_excerpt_args » pour modifier l’extrait à une longueur différente ou personnaliser le texte ou lire la suite