ajuste the_excerpt com base na página do modelo

Como posso escrever condições para ajustar the_excerpt em páginas diferentes?

Por exemplo, na page-products.php minha page-products.php , eu quero que the_excerpt seja digamos 40 .

 function custom_excerpt_length( $length ) { return 20; } add_filter( 'excerpt_length', 'custom_excerpt_length', 999 ); 

É if e else condições para fazer isso acontecer?

Solutions Collecting From Web of "ajuste the_excerpt com base na página do modelo"

Você pode adicioná-lo diretamente ao modelo antes do header na maioria dos casos …

 < ?php /* Template Name: Products */ ?> < ?php add_filter( 'excerpt_length', function( $length ) { return 10; }, 999); get_header(); ?> 

Estes também deveriam funcionar se você preferir colocar functions.php :

Método 2: no loop

 $slug = get_page_template_slug($post->ID); if('page-products.php' == $slug) { add_filter( 'excerpt_length', function( $length ) { return 20; }, 999); } 

Método 3: Fora do loop

 if ( is_page_template( 'page-products.php' ) ) { add_filter( 'excerpt_length', function( $length ) { return 20; }, 999); } 

Isso também pode ser usado para obter o modelo ….

 global $post; $template = get_post_meta($post->ID,'_wp_page_template',true); 

Ou possivelmente até isto (não testado):

 add_action('get_header', function() { if ( is_page( array( 37, 'Products' ) ) ) { add_filter( 'excerpt_length', function( $length ) { return 20; }, 999); } }, 1); 

Ou, como visto aqui , você pode criar sua própria function para permitir que o comprimento do trecho seja determinado em uma necessidade de necessidade de base pela quantidade de caracteres.

 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; } 

O para exibir:

 < ?php echo excerpt(50); ?>