Como adicionar vários comprimentos de trechos personalizados no WordPress
Por padrão, os trechos do WordPress são definidos para 55 palavras e há um filtro trecho_comprimento que permite alterar esse valor padrão para o tamanho de sua escolha. Mas e se você quisesse um comprimento de trecho diferente em diferentes seções do seu site? Por exemplo, se você estiver desenvolvendo um site com vários tipos de postagem, talvez queira mostrar diferentes tamanhos de trechos, dependendo do tipo de postagem. Uma postagem de blog pode ter um trecho mais longo do que, por exemplo, um item de portfólio.
Função de trecho personalizado
Abaixo, você encontrará uma função personalizada que desenvolvemos para ajudá-lo a exibir trechos em diferentes comprimentos no WordPress. Para usar a função, basta adicioná-la ao seu arquivo functions.php e então você pode substituir as funções the_excerpt ou the_content em todo o seu tema para que você possa obter diferentes comprimentos de trechos.
function wpex_get_excerpt( $args = array() ) {
// Default arguments.
$defaults = array(
‘post’ => ”,
‘length’ => 40,
‘readmore’ => false,
‘readmore_text’ => esc_html__( ‘read more’, ‘text-domain’ ),
‘readmore_after’ => ”,
‘custom_excerpts’ => true,
‘disable_more’ => false,
);
// Apply filters to allow child themes mods.
$args = apply_filters( ‘wpex_excerpt_defaults’, $defaults );
// Parse arguments, takes the function arguments and combines them with the defaults.
$args = wp_parse_args( $args, $defaults );
// Apply filters to allow child themes mods.
$args = apply_filters( ‘wpex_excerpt_args’, $args );
// Extract arguments to make it easier to use below.
extract( $args );
// Get the current post.
$post = get_post( $post );
// Get the current post id.
$post_id = $post->ID;
// Check for custom excerpts.
if ( $custom_excerpts && has_excerpt( $post_id ) ) {
$output = $post->post_excerpt;
}
// No custom excerpt…so lets generate one.
else {
// Create the readmore link.
$readmore_link = ‘<a href=”‘ . esc_url( get_permalink( $post_id ) ) . ‘” class=”readmore”>’ . $readmore_text . $readmore_after . ‘</a>’;
// Check for more tag and return content if it exists.
if ( ! $disable_more && strpos( $post->post_content, ‘<!–more–>’ ) ) {
$output = apply_filters( ‘the_content’, get_the_content( $readmore_text . $readmore_after ) );
}
// No more tag defined so generate excerpt using wp_trim_words.
else {
// Generate an excerpt from the post content.
$output = wp_trim_words( strip_shortcodes( $post->post_content ), $length );
// Add the readmore text to the excerpt if enabled.
if ( $readmore ) {
$output .= apply_filters( ‘wpex_readmore_link’, $readmore_link );
}
}
}
// Apply filters and return the excerpt.
return apply_filters( ‘wpex_excerpt’, $output );
}
Como usar a função
Então agora, em vez de usar “the_excerpt()” em seus loops, você pode usar “wpex_excerpt( $args )”, onde $args contém uma matriz de suas configurações preferidas para o trecho específico.
Exemplo:
<?php echo wpex_get_excerpt ( $defaults = array(
‘length’ => 40,
‘readmore’ => true,
‘readmore_text’ => esc_html__( ‘read more’, ‘wpex-boutique’ ),
‘custom_excerpts’ => true,
) ); ?>
Filtros de função
Você pode notar que nosso snippet inclui várias funções apply_filters(). Por quê? A razão para isso é que se você estiver trabalhando em um tema premium ou gratuito ou plugin para distribuição, você desejará dar aos usuários finais a capacidade de alterar seus trechos por meio do tema filho, se necessário. Por exemplo, se você definiu um trecho para um determinado tamanho para uma seção do site, o usuário final sempre pode usar o filtro “wpex_get_excerpt_args” para alterar o trecho para um tamanho diferente ou personalizar o texto ou leia mais