Você provavelmente está familiarizado com o widget de Categoria no WordPress. Recentemente, um de nossos leitores nos perguntou se era possível exibir posts recentes em um menu suspenso também. Neste artigo, mostraremos como exibir posts recentes como um menu suspenso no WordPress.

Por que e quem precisa de posts recentes em menu suspenso?
O WordPress vem com um widget de posts recentes integrado que você pode adicionar a qualquer barra lateral ou área pronta para widgets.
Este widget simplesmente exibe uma lista de posts recentes, e você pode escolher o número de posts que deseja mostrar. Mas se você quiser mostrar mais de 5-10 posts, a lista ocupará muito espaço em sua barra lateral.
Alguns usuários do WordPress podem precisar de uma maneira compacta de exibir posts recentes. Nesse caso, usar menus suspensos ou listas recolhíveis pode ajudá-lo a economizar espaço.
Vamos dar uma olhada em algumas maneiras diferentes de exibir posts recentes como um menu suspenso no WordPress.
Exibindo Posts Recentes do WordPress em um Menu Suspenso Simples (Código Manual)
Este método usa a função integrada wp_get_recent_posts. Tudo o que você precisa fazer é copiar e colar o seguinte código no arquivo functions.php do seu tema ou em um plugin específico do site.
function wpb_recentposts_dropdown() {
$string .= '<select id="rpdropdown">
<option value="" selected>Select a Post</option>';
$args = array( 'numberposts' => '5', 'post_status' => 'publish' );
$recent_posts = wp_get_recent_posts($args);
foreach( $recent_posts as $recent ){
$string .= '<option value="' . get_permalink($recent["ID"]) . '">' . $recent["post_title"].'</option> ';
}
$string .= '</select>
<script type="text/javascript"> var urlmenu = document.getElementById( "rpdropdown" ); urlmenu.onchange = function() {
window.open( this.options[ this.selectedIndex ].value, "_self" );
};
</script>';
return $string;
}
add_shortcode('rp_dropdown', 'wpb_recentposts_dropdown');
add_filter('widget_text','do_shortcode');
Agora você pode usar o shortcode [rp_dropdown] em seus posts, páginas e widgets de texto do WordPress. Ele ficará assim:

Adicionando Posts Recentes Recolhíveis Usando Plugin
O método acima simplesmente lista suas postagens recentes em um formulário suspenso. Outra maneira de economizar espaço é adicionando uma lista recolhível de postagens recentes que se expande quando os usuários clicam nela.
A primeira coisa que você precisa fazer é instalar e ativar o plugin Collapse-O-Matic. Ele funciona imediatamente, e não há configurações para você configurar.
O plugin simplesmente permite que você mostre qualquer coisa em um menu recolhível usando um shortcode.
Antes de usarmos este plugin, precisamos de uma maneira de mostrar facilmente as postagens recentes onde quisermos. Simplesmente adicione este código ao arquivo functions.php do seu tema ou a um plugin específico para o site.
function wpb_recentposts() {
$string .= '<ul>';
$args = array( 'numberposts' => '5', 'post_status' => 'publish' );
$recent_posts = wp_get_recent_posts($args);
foreach( $recent_posts as $recent ){
$string .= '<li><a href="' . get_permalink($recent["ID"]) . '">' . $recent["post_title"].'</a></li> ';
}
$string .= '</ul>';
return $string;
}
add_shortcode('recentposts', 'wpb_recentposts');
add_filter('widget_text','do_shortcode');
Este código simplesmente permite que você exiba uma lista de postagens recentes usando o shortcode [recentposts].
Agora adicionaremos nosso shortcode ao shortcode do Collapse-O-Matic para criar uma lista recolhível de postagens recentes.
Simplesmente adicione o shortcode assim:
[expand title="Postagens Recentes"][recentposts][/expand]
Você pode adicionar este shortcode em um widget de texto, posts ou páginas do seu site WordPress. É assim que ficou em nosso site de teste.

É tudo, esperamos que este artigo tenha ajudado você a mostrar postagens recentes como um menu suspenso no WordPress. Você também pode querer ver estas 6 dicas para criar um calendário editorial matador no WordPress.
Se você gostou deste artigo, por favor, inscreva-se em nosso Canal do YouTube para tutoriais em vídeo do WordPress. Você também pode nos encontrar no Twitter e Facebook.


Mauro Vicariotto
Prezado autor,
há um erro de digitação na linha 2 da sua função wpb_recentposts_dropdown():
deveria ser " $string = … " em vez de " $string .= … "
WPBeginner Support
.= e = têm usos ligeiramente diferentes. Neste caso de uso, não é um erro de digitação.
Admin
Yvonne Manders
Cometi um erro e o corrigi.
WPBeginner Support
Glad you were able to solve the issue
Admin
Yvonne Manders
Olá,
Eu instalei o collapse-o-mattic e colei o código no arquivo functions.php.
Depois disso, colei o shortcode [expand title=”Posts Recentes”][recentposts][/expand] em um textwidget, mas nada aconteceu.
Estou perdendo alguma coisa?
Atenciosamente, Yvonne
WPBeginner Support
Você deve colocar o shortcode no editor de texto em vez do editor visual para garantir que nenhum estilo esteja bloqueando o funcionamento do shortcode.
Admin
Erika
A linha 3 tem um erro. A tag de opção de fechamento está sem o seu “/” de fechamento. Isso está gerando uma opção em branco no menu.
WPBeginner Support
Thank you for letting us know, the code should be fixed now
Admin
Amjad
Olá. Usei o código acima para mostrar todos os meus posts em um menu suspenso, mas ele não está ordenado. Tenho duas perguntas aqui:
1. Como posso ordenar os posts por título?
2. Como posso mostrar posts de uma categoria específica em um menu suspenso em vez de mostrar todos os posts?
WPBeginner Support
Para o que parece que você quer, você deve dar uma olhada em nosso outro tutorial aqui: https://www.wpbeginner.com/plugins/how-to-let-users-filter-posts-and-pages-in-wordpress/
Admin
Rolando
Ótimo artigo! Como você pode fazer isso por uma categoria específica e não apenas por todas as suas categorias? Além disso, isso pode ser feito em ordem alfabética?
Farai Mugaviri
Muito obrigado pela grande ajuda. Eu também gostaria de exibir categorias em uma lista suspensa, se você puder ajudar com isso…. Mas e agora, se eu atualizar meu Wordpress, isso é possível? Vi em algum lugar que falavam sobre desafios ao atualizar o wordpress e o risco de perder dados por codificar as funções PHP.
Robert
Ótima ferramenta, obrigado por isso!
É possível ordenar a saída dos posts na lista em ordem alfabética?
Obrigado antecipadamente pela sua resposta!
Atenciosamente,
Robert
Andre
É possível mostrar o dropdown de posts com um botão para enviar?
‘function wpb_recentposts_dropdown() {
$string .= ‘
Selecione sua escola’;
$args = array( ‘numberposts’ => ‘5’, ‘post_status’ => ‘publish’ );
$recent_posts = wp_get_recent_posts($args);
foreach( $recent_posts as $recent ){
$string .= ” . $recent[“post_title”].’ ‘;
}
$string .= ‘
ENCONTRE UMA ESCOLA AGORA
var urlmenu = document.getElementById( “submitschool” ); urlmenu.onclick = function() {
window.open( this.options[ this.selectedIndex ].value, “_self” );
};
‘;
return $string;
}
add_shortcode(‘rp_dropdown’, ‘wpb_recentposts_dropdown’);
add_filter(‘widget_text’,’do_shortcode’);’
Emily Johns
Coisas muito legais!! Ótima leitura e fácil de entender.
NG SHAIKH
É um excelente artigo. Iniciantes como eu podem entender o poder do WordPress e seus plug-ins com tais artigos.
Ficarei grato se alguns artigos forem escritos para exibir uma mensagem em uma página específica e não em todas as postagens e páginas.
Também ajudará os iniciantes se alguns artigos forem escritos para exibir um formulário para entrada do usuário que possa ser salvo no banco de dados
Julie S
Eu realmente gosto do menu suspenso de posts recentes. Como posso controlar a largura deste menu suspenso? Ele está padrão muito longo para a minha barra lateral.
WPBeginner Support
Tente ajustar a largura usando CSS:
select#rp_dropdown { width:200px; }1-click Use in WordPress
Admin