web-dev-qa-db-fra.com

Lire plus tag apparaît sur chaque message

J'ai récemment lu cet article génial et j'ai besoin d'aide pour savoir comment afficher le lien "Lire la suite" uniquement sur les publications à afficher. Actuellement, il est affiché sur tous les posts, même s’il s’agit d’une ligne courte. Toute aide serait appréciée, je simplement copié/collé le code de Pieter avec un ajout mineur:

// Begin Excerpt Code
function wpse_allowedtags() {
    // Add custom tags to this string
        return '<script>,<style>,<br>,<em>,<i>,<ul>,<ol>,<li>,<a>,<p>,<img>,<video>,<audio>'; 
    }

if ( ! function_exists( 'wpse_custom_wp_trim_excerpt' ) ) : 

    function wpse_custom_wp_trim_excerpt($wpse_excerpt) {
    $raw_excerpt = $wpse_excerpt;
        if ( '' == $wpse_excerpt ) {

            $wpse_excerpt = get_the_content('');
            $wpse_excerpt = strip_shortcodes( $wpse_excerpt );
            $wpse_excerpt = apply_filters('the_content', $wpse_excerpt);
            $wpse_excerpt = str_replace(']]>', ']]&gt;', $wpse_excerpt);
            $wpse_excerpt = strip_tags($wpse_excerpt, wpse_allowedtags()); /*IF you need to allow just certain tags. Delete if all tags are allowed */

            //Set the excerpt Word count and only break after sentence is complete.
                $excerpt_Word_count = 75;
                $excerpt_length = apply_filters('excerpt_length', $excerpt_Word_count); 
                $tokens = array();
                $excerptOutput = '';
                $count = 0;

                // Divide the string into tokens; HTML tags, or words, followed by any whitespace
                preg_match_all('/(<[^>]+>|[^<>\s]+)\s*/u', $wpse_excerpt, $tokens);

                foreach ($tokens[0] as $token) { 

                    if ($count >= $excerpt_length && preg_match('/[\,\;\?\.\!]\s*$/uS', $token)) { 
                    // Limit reached, continue until , ; ? . or ! occur at the end
                        $excerptOutput .= trim($token);
                        break;
                    }

                    // Add words to complete sentence
                    $count++;

                    // Append what's left of the token
                    $excerptOutput .= $token;
                }

            $wpse_excerpt = trim(force_balance_tags($excerptOutput));

                $excerpt_end = ' <a href="'. esc_url( get_permalink() ) . '">' . '&nbsp;&raquo;&nbsp;' . sprintf(__( 'Read more about: %s &nbsp;&raquo;', 'wpse' ), get_the_title()) . '</a>'; 
                $excerpt_more = apply_filters('excerpt_more', ' ' . $excerpt_end); 

                //$pos = strrpos($wpse_excerpt, '</');
                //if ($pos !== false)
                // Inside last HTML tag
                //$wpse_excerpt = substr_replace($wpse_excerpt, $excerpt_end, $pos, 0); /* Add read more next to last Word */
                //else
                // After the content
                $wpse_excerpt .= $excerpt_more; /*Add read more in new paragraph */

            return $wpse_excerpt;   

        }
        return apply_filters('wpse_custom_wp_trim_excerpt', $wpse_excerpt, $raw_excerpt);
    }

endif; 

remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'wpse_custom_wp_trim_excerpt'); 

// Replaces the excerpt "more" text by a link
function new_excerpt_more($more) {
       global $post;
    return '<br /><br /><a class="moretag btn-lg" href="'. get_permalink($post->ID) . '"> Read more</a>';
}
add_filter('excerpt_more', 'new_excerpt_more');
// End Excerpt Code
4
Jeff W

En fait, je n'ai jamais eu à ajouter cette section à la réponse à laquelle vous faites référence. Pour supprimer le lien lire plus de l'extrait est assez facile, il vous suffit de comparer $count avec $excerpt_length. $count sera toujours entre 0 et la valeur attribuée à $excerpt_length. Donc, ce que nous voulons faire ici est d’ajouter le lien read more dans une condition stipulant que si $count est inférieur à $excerpt_length, nous ne devrions pas afficher le read more

Pour tout mettre dans le code, il vous suffit de remplacer la section suivante

$excerpt_end = ' <a href="'. esc_url( get_permalink() ) . '">' . '&nbsp;&raquo;&nbsp;' . sprintf(__( 'Read more about: %s &nbsp;&raquo;', 'wpse' ), get_the_title()) . '</a>'; 
$excerpt_more = apply_filters('excerpt_more', ' ' . $excerpt_end); 

//$pos = strrpos($wpse_excerpt, '</');
//if ($pos !== false)
// Inside last HTML tag
//$wpse_excerpt = substr_replace($wpse_excerpt, $excerpt_end, $pos, 0); /* Add read more next to last Word */
//else
// After the content
$wpse_excerpt .= $excerpt_more; /*Add read more in new paragraph */

avec

if ( $count >= $excerpt_Word_count ) {   
     $excerpt_end = ' <a href="'. esc_url( get_permalink() ) . '">' . '&nbsp;&raquo;&nbsp;' . sprintf(__( 'Read more about: %s &nbsp;&raquo;', 'wpse' ), get_the_title()) . '</a>'; 
    $excerpt_more = apply_filters('excerpt_more', ' ' . $excerpt_end); 

    //$pos = strrpos($wpse_excerpt, '</');
    //if ($pos !== false)
    // Inside last HTML tag
    //$wpse_excerpt = substr_replace($wpse_excerpt, $excerpt_end, $pos, 0); /* Add read more next to last Word */
    //else
    // After the content
    $wpse_excerpt .= $excerpt_more; /*Add read more in new paragraph */
}  
8
Pieter Goosen