Comment puis-je écrire des conditions pour ajuster the_excerpt
sur différentes pages?
Par exemple, sur ma page page-products.php
, je veux que the_excerpt
soit disons 40
.
function custom_excerpt_length( $length ) {
return 20;
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );
Est-ce une if
et else
conditions pour que cela se produise?
Vous pouvez l'ajouter directement au modèle avant l'en-tête dans la plupart des cas ...
<?php /* Template Name: Products */ ?>
<?php
add_filter( 'excerpt_length', function( $length ) { return 10; }, 999);
get_header();
?>
Celles-ci devraient également fonctionner si vous préférez mettre functions.php
:
Méthode 2: Dans la boucle
$slug = get_page_template_slug($post->ID);
if('page-products.php' == $slug) {
add_filter( 'excerpt_length', function( $length ) {
return 20;
}, 999);
}
Méthode 3: en dehors de la boucle
if ( is_page_template( 'page-products.php' ) ) {
add_filter( 'excerpt_length', function( $length ) {
return 20;
}, 999);
}
Ceci pourrait également être utilisé pour obtenir le modèle ....
global $post;
$template = get_post_meta($post->ID,'_wp_page_template',true);
Ou peut-être même ceci (non testé):
add_action('get_header', function() {
if ( is_page( array( 37, 'Products' ) ) ) {
add_filter( 'excerpt_length', function( $length ) {
return 20;
}, 999);
}
}, 1);
Ou comme vu ici , vous pouvez créer votre propre fonction pour permettre à la longueur de l'extrait d'être déterminée en fonction de la nécessité par le nombre de caractères.
function excerpt($limit) {
$excerpt = explode(' ', get_the_excerpt(), $limit);
if (count($excerpt)>=$limit) {
array_pop($excerpt);
$excerpt = implode(" ",$excerpt).' ...';
} else {
$excerpt = implode(" ",$excerpt);
}
$excerpt = preg_replace('`\[[^\]]*\]`','',$excerpt);
return $excerpt;
}
Le pour afficher: _
<?php echo excerpt(50); ?>