Back-End

14 mai, 2018

A funcionalidade de resumo para páginas no WordPress

Publicidade

O recurso de resumo para páginas no WordPress – quando necessário no projeto – precisa ser ativado. Por padrão, o WordPress já disponibiliza a funcionalidade de resumo para os posts, além de um template tag comumente utilizado, chamado the_excerpt(), e sua alinhada get_the_excerpt().

Essa mesma opção de resumo pode ser estendida para as páginas ou qualquer outro tipo de post personalizado – os famosos Custom Post Types.

Nesse último caso, a funcionalidade é adicionada através do argumento supports, que recebe um array com os suportes desejados. Para os resumos, o suporte é “excerpt”.

Como implementar o resumo para páginas

É possível implementar recursos adicionais nos variados tipos de posts no WordPress através da função add_post_type_support(). Essa função recebe dois parâmetros: o tipo de post e a funcionalidade a ser agregada.

Em nosso contexto, o tipo de post é “page” e o recurso é o “excerpt”. O código da implementação do resumo para páginas seria assim:

<?php
add_action( 'after_setup_theme', 'theme_setup' );

function theme_setup() {
    add_action( 'init', 'add_support_to_pages' );
}

function add_support_to_pages() {
    add_post_type_support( 'page', 'excerpt' );
}

O código demonstrado acima deve ser colocado no arquivo functions.php do seu tema ou em um plugin. Na interface de edição de páginas, teremos o box de resumo como ilustrado na imagem abaixo:

Em caso de não visualização do box de resumo para páginas, certifique que a opção está marcada para exibição em “Opções de Tela” – exibido no canto superior direito da tela de edição de páginas.

Funções para se dar bem com os resumos no WordPress

No início deste artigo eu apresentei duas funções: the_excerpt() e get_the_excerpt(). Ambas devem ser utilizadas em conjunto com o Loop do WordPress. A primeira exibirá o resumo na tela, enquanto a segunda retornará o valor e, assim podendo ser armazenada numa variável e ser manipulada como o desenvolver precisar.

Um exemplo clássico de uso da função get_the_excerpt() é limitar a quantidade de caracteres a serem exibidos, por exemplo:

<?php
while( have_posts() ) : the_post();
...
$_the_excerpt = get_the_excerpt();
$the_excerpt = substr( $_the_excerpt, 0, 30 );
echo $the_excerpt;
if ( strlen( $the_excerpt ) > 30 )
    echo ' ...';
...
?>

Convenhamos que o exemplo acima é trabalhoso e nada elegante. Uma melhor implementação e uso do resumo para páginas nos arquivos do tema seria assim:

<?php 
add_action( 'after_setup_theme', 'theme_setup' ); 

function theme_setup() { 
     add_action( 'init', 'add_support_to_pages' );
     add_filter( 'excerpt_length', 'define_excerpt_length' );
} 

function add_support_to_pages() { 
     add_post_type_support( 'page', 'excerpt' ); 
}

function define_excerpt_length( $length ) {
     return 30;
}

Com a implementação acima, quando a chamada à função the_excerpt() for feita, será retornado no máximo 30 palavras.

Importante frisar que no exemplo usando a função do PHP substr, limitamos a exibição em no máximo 30 caracteres, já no segundo exemplo, 30 palavras. O padrão do WordPress é retornar até 55 palavras. Se o seu projeto requerer diferentes totais de palavras a serem retornadas, siga com o uso da função wp_trim_words().

Veja um exemplo de uso dela:

<?php
while( have_posts() ) : the_post();
...
$the_excerpt = wp_trim_words( get_the_excerpt(), 30 );
echo $the_excerpt;
...
endwhile;

A função wp_trim_words() aceita até três parâmetros, sendo somente o primeiro requerido.

  • O primeiro parâmetro, $text, recebe o texto a ser analisado
  • O segundo, $num_words, é o total de palavras a serem consideradas no texto informado. O padrão é 55
  • Para finalizar, o parâmetro $more é concatenado ao texto, caso ele tenha mais que o total de palavras desejada. O padrão é composto por reticências, &hellip

Por falar em concatenação, vocês já devem ter percebido que o WordPress faz uso da string “[…]” junto ao texto retornado pela função the_excerpt().

Se você não gosta desse comportamento ou prefere algum outro caractere, siga assim:

<?php 
add_action( 'after_setup_theme', 'theme_setup' ); 

function theme_setup() { 
     add_action( 'init', 'add_support_to_pages' );
     add_filter( 'excerpt_length', 'define_excerpt_length' );
     add_filter( 'excerpt_more', 'define_excerpt_more' );
} 

function add_support_to_pages() { 
     add_post_type_support( 'page', 'excerpt' ); 
}

function define_excerpt_length( $length ) {
     return 30;
}

function define_excerpt_more( $default_more ) {
    return ' o que você quiser';
}

Conclusão

Resumos são utilizados em várias situações de projetos para exibir informações complementares a um conteúdo. Resumo para página também pode ser considerado, mas como percebemos, precisa ser ativado.

Como quaisquer tipos de conteúdo no WordPress são posts, é possível fazer uso do recurso em páginas ou qualquer outro tipo de post. Embora o mesmo tipo de funcionalidade possa ser utilizada através de campos personalizados, fazer uso de recursos nativos é sempre uma melhor opção.

Nesse caso será melhor para o usuário, acostumado com a interface e melhor ainda para o desenvolvedor, acostumado com o padrão de uso.