Par défaut, les extraits WordPress sont définis sur 55 mots et il y a un filtre excerpt_length ce qui vous permet de modifier cette valeur par défaut selon 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 et vous pourrez ensuite remplacer les fonctions the_excerpt ou the_content dans tout votre thème afin que vous puissiez différentes longueurs d’extraits.

function wpex_get_excerpt( $args = array() ) {

    // Defaults
    $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
    $defaults = apply_filters( 'wpex_get_excerpt_defaults', $defaults );

    // Parse args
    $args = wp_parse_args( $args, $defaults );

    // Apply filters to args
    $args = apply_filters( 'wpex_get_excerpt_args', $defaults );

    // Extract
    extract( $args );

    // Get global post data
    if ( ! $post ) {
        global $post;
    }

    // Get post ID
    $post_id = $post->ID;

    // Check for custom excerpt
    if ( $custom_excerpts && has_excerpt( $post_id ) ) {
        $output = $post->post_excerpt;
    }

    // No custom excerpt...so lets generate one
    else {

        // Readmore link
        $readmore_link = '<a href="' . 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 excerpt
            $output = wp_trim_words( strip_shortcodes( $post->post_content ), $length );

            // Add readmore to excerpt if enabled
            if ( $readmore ) {

                $output .= apply_filters( 'wpex_readmore_link', $readmore_link );

            }

        }

    }

    // Apply filters and echo
    return apply_filters( 'wpex_get_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 de code 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 comme ayant une certaine longueur pour une section du site, l’utilisateur final peut toujours utiliser le filtre «wpex_get_excerpt_args» pour changer l’extrait en une longueur différente ou personnaliser le texte ou lire plus

Share: