Je costume un modèle. Une liste contient l’introduction des 1-2 premiers paragraphes (tous les articles d’une catégorie). Si je règle l'extrait à 295 mots, la liste récupère parfois des mots supplémentaires du paragraphe suivant. J'aimerais ajouter une balise Lire plus pour l'arrêter. Quelqu'un peut-il m'aider avec cette partie?
<div id="all-div-cabrand-content-stories">
<div class="kids-families-con-cabrand-stories">
<?php echo get_the_post_thumbnail($page->ID, 'thubmnailstorysmall'); ?>
</div>
<div class="kids-con-cabrand-new-stories">
<span>
<?php print substr(get_the_excerpt(),wp_trim_excerpt(),295); ?>
<i><a style="color:#1975D1;float:Right;" class="title" href="<?php the_permalink() ?>" rel="bookmark">Click for Story & Video</a></i>
<br/>
</span>
</div>
</div>
Vous pouvez saisir le premier ou les deux premiers paragraphes avec une expression régulière (regexp)
function custom_excerpt( $content = '' ){
if( empty( $content ) )
return $content;
$result = '';
$matches = array();
// grab all paragraphs from $content
preg_match_all( '#<\s*p[^>]*>(.*?)<\s*/\s*p>#ui', $content, $matches );
if( ! empty( $matches ) ){
// add the first paragraph
$result = $matches[0][0];
// add the swecond paragraph if available
if( isset( $matches[0][1] ) )
$result .= $matches[0][1];
// set the excerpt length
add_filter( 'excerpt_length', 'custom_excerpt_length' );
// create the custom excerpt
$result = custom_trim_excerpt( $result );
}
return $result;
}
function custom_excerpt_length(){
return 295;
}
function custom_trim_excerpt( $text = '' ){
$text = strip_shortcodes( $text );
$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $text);
$excerpt_length = apply_filters('excerpt_length', 55);
$excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
$text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
return $text;
}
Appeler la fonction avec
<?php print custom_excerpt( get_the_content( 'Read More' ) ); ?>
Ceci est un peu délicat car vous ne pouvez pas remettre wp_trim_excerpt()
un texte. wp_trim_excerpt()
renverra simplement le texte s'il en est fourni. Vous devez copier et personnaliser un peu la fonction.
Pour obtenir une longueur spécifique, vous pouvez utiliser: wp_trim_words function. Il a 3 paramètres.
get_the_content()
295
''
Cela signifie null.Utilisez ceci:
<span>
<?php echo wp_trim_words( get_the_content(), 295, '' ); ?>
<i><a style="color:#1975D1;float:Right;" class="title" href="<?php
the_permalink() ?>" rel="bookmark">Click for Story & Video</a></i>
<br/>
</span>
Vous pouvez utiliser cette fonction:
function get_excerpt_trim($num_words='20', $more='...'){
$excerpt = get_the_excerpt();
$excerpt = wp_trim_words( $excerpt, $num_words , $more );
return $excerpt;
}
https://codex.wordpress.org/Function_Reference/wp_trim_words
Pour obtenir ce que vous voulez, vous devez faire deux choses.
1) Établissez une longueur d’extrait personnalisée (en mots, pas en caractères), obtenue de manière optimale en suivant cette réponse .
2) Appelez simplement wp_trim_excerpt (), ne l'enroulez pas à l'intérieur de substr
Votre ligne de code ci-dessus ne fait pas ce que vous vous attendez à faire. Je crois qu'il renvoie les 295 premiers caractères de l'extrait, mais je ne suis pas tout à fait sûr de ce que la fonction php subtr () va faire lorsque vous lui passez une chaîne comme second argument lorsqu'il attend un entier. .