Comment puis-je limiter la longueur des caractères dans l'extrait?
2 réponses
- votes
-
- 2012-10-30
ajoutez ces lignes dans lefichierfunction.php
function custom_excerpt_length( $length ) { return 20; } add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );
add these lines in function.php file
function custom_excerpt_length( $length ) { return 20; } add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );
-
Cela limite lenombre demots à 20,pas les caractères.This limits the number of words to 20, not the characters.
- 9
- 2016-12-07
- Ionut
-
Pourquoi avons-nous ajouté lenuméro 999ici?Why we have added number 999 here?
- 0
- 2018-04-11
- Navnish Bhardwaj
-
@NavnishBhardwaj 999est lapriorité dufiltre à charger.référez-vousicipourplus de détails. https://developer.wordpress.org/reference/functions/add_filter/@NavnishBhardwaj 999 is the priority for the filter to be loaded. refer here for more details. https://developer.wordpress.org/reference/functions/add_filter/
- 1
- 2018-04-18
- Annapurna
-
- 2012-10-30
Enplus du crochet defiltre ci-dessusfournipar la réponse de Deepa,voici unefonction supplémentaire quipeut vous aider à étendre l'utilisation de
the_excerpt
de deuxmanières,Vouspermet de ...
Limitez l'extraitparnombre de caractèresmaisne tronquez PAS le derniermot. Cela vouspermettra de renvoyer unnombremaximum de caractèresmais de conserver lesmotsentiers,de sorte que seuls lesmots quipeuvententrer dans la limite denombre spécifiée sont retournéset vouspermettent de spécifier la source d'où l'extraitproviendra.
function get_excerpt($limit, $source = null){ $excerpt = $source == "content" ? get_the_content() : get_the_excerpt(); $excerpt = preg_replace(" (\[.*?\])",'',$excerpt); $excerpt = strip_shortcodes($excerpt); $excerpt = strip_tags($excerpt); $excerpt = substr($excerpt, 0, $limit); $excerpt = substr($excerpt, 0, strripos($excerpt, " ")); $excerpt = trim(preg_replace( '/\s+/', ' ', $excerpt)); $excerpt = $excerpt.'... <a href="'.get_permalink($post->ID).'">more</a>'; return $excerpt; } /* Sample... Lorem ipsum habitant morbi (26 characters total) Returns first three words which is exactly 21 characters including spaces Example.. echo get_excerpt(21); Result... Lorem ipsum habitant Returns same as above, not enough characters in limit to return last word Example.. echo get_excerpt(24); Result... Lorem ipsum habitant Returns all 26 chars of our content, 30 char limit given, only 26 characters needed. Example.. echo get_excerpt(30); Result... Lorem ipsum habitant morbi */
Cettefonctionpeut être utiliséeplusieursfois dans lesfichiers dethème,chacun avec des limites de caractères différentes spécifiées.
Cettefonction a la capacité de récupérer unextrait de l'un ou l'autre,
the_content
the_excerpt
Parexemple,si vous avez desmessages qui contiennent dutexte dans la zone_excerpt sur l'écran de l'éditeur demessages,mais que vous souhaitezextraire unextrait du corps_content à laplacepour un cas d'utilisation spécial,vous leferiez à laplace;
get_excerpt(140, 'the_content'); //excerpt is grabbed from get_the_content
Celaindique à lafonction que vous voulez les 140premiers caractères de
the_content
,indépendamment dufait qu'unextrait soit défini dans la zonethe_excerpt
.get_excerpt(140); //excerpt is grabbed from get_the_excerpt
Celaindique à lafonction que vous voulez d'abord les 140premiers caractères de
the_excerpt
et si aucunextraitn'existe,the_content
sera utilisé comme solution de secours.Lafonctionpeut être amélioréepour être rendueplusefficaceet/ouincorporée avec l'utilisation defiltres WordPresspour
the_content
outhe_excerpt
ou simplement utiliséetelle quelle dans des situations oùiln'est pas appropriée ,une alternative à l'API WordPressintégrée.In addition to the above filter hook supplied by Deepa's answer here is one additional function that can help you extend the use of
the_excerpt
in two ways,Allows you to...
Limit the excerpt by number of characters but do NOT truncate the last word. This will allow you to return a maximum number of characters but preserve full words, so only the words that can fit within the specified number limit are returned and allow you to specify the source of where the excerpt will come from.
function get_excerpt($limit, $source = null){ $excerpt = $source == "content" ? get_the_content() : get_the_excerpt(); $excerpt = preg_replace(" (\[.*?\])",'',$excerpt); $excerpt = strip_shortcodes($excerpt); $excerpt = strip_tags($excerpt); $excerpt = substr($excerpt, 0, $limit); $excerpt = substr($excerpt, 0, strripos($excerpt, " ")); $excerpt = trim(preg_replace( '/\s+/', ' ', $excerpt)); $excerpt = $excerpt.'... <a href="'.get_permalink($post->ID).'">more</a>'; return $excerpt; } /* Sample... Lorem ipsum habitant morbi (26 characters total) Returns first three words which is exactly 21 characters including spaces Example.. echo get_excerpt(21); Result... Lorem ipsum habitant Returns same as above, not enough characters in limit to return last word Example.. echo get_excerpt(24); Result... Lorem ipsum habitant Returns all 26 chars of our content, 30 char limit given, only 26 characters needed. Example.. echo get_excerpt(30); Result... Lorem ipsum habitant morbi */
This function can be used multiple times through out theme files, each with different character limits specified.
This function has the ability to retrieve an excerpt from either,
the_content
the_excerpt
For example, if you have posts that contain text in the_excerpt box on the post editor screen, but want to pull an excerpt from the_content body instead for a special use case you would instead do;
get_excerpt(140, 'the_content'); //excerpt is grabbed from get_the_content
This tells the function that you want the first 140 characters from
the_content
, regardless of whether an excerpt is set inthe_excerpt
box.get_excerpt(140); //excerpt is grabbed from get_the_excerpt
This tells the function that you want the first 140 characters from
the_excerpt
first and if no excerpt exists,the_content
will be used as a fallback.The function can be improved to be made more efficient and or incorporated with the use of WordPress filters for both
the_content
orthe_excerpt
or simply used as is in situations where there is no suitable, in-built WordPress API alternative.-
Salut!Merci àtouspour la réponsefournie!Je voudrais demander,comment lefairefonctionner avec ... au lieu de [...] à lafin de l'extrait?Hi! Thanks for all for the answer provided! I would like to ask, how to make it work with ... instead of [...] at the end of excerpt?
- 0
- 2012-11-02
- Jornes
-
La dernière ligne,`$excerpt=$extrait .'... Plus '; `est ce que vouspouvez utiliserpour définir votre"En savoirplus" lienpour ainsi dire.Vouspouvez voir là-bas qu'il ajoute despoints de suspensionmais vouspouvez ajouter ce que vous voulez.The last line, `$excerpt = $excerpt.'... more';` is what you can use to define your "read more" link so to speak. You can see there it adds an ellipsis but you can add whatever you like.
- 0
- 2012-11-02
- Adam
-
@Jornes c'estpeut-être 6 ans de retard,mais voici le code HTML despoints de suspension `& hellip;`@Jornes it maybe 6 years late, but here is the HTML code for the ellipsis `…`
- 1
- 2018-07-20
- AlbertSamuel
-
@AlbertSamuel Mercipour la réponse.:)@AlbertSamuel Thank you for the answer. :)
- 1
- 2019-05-10
- Jornes
J'ai une question après avoir lu cet article ( Commentmettreen évidence la recherchetermes sansplugin ).J'aimebeaucoup cettefonction (terme de recherche sansplug-in)mais la longueur des caractèresesttrop longue.Quel code PHP dois-je ajouterpour raccourcir l'extrait?J'apprécierais que quelqu'unpuisse le suggérer.Merci!