Como criar um Custom Post Type no WordPress

Criando um custom post type

O WordPress é um CMS (Sistema de Gerenciamento de Conteúdo) muito poderoso. Por padrão, ele permite criar posts e páginas, mas com a adição de plugins ou códigos é possível personalizar ele da maneira que você desejar.

Existem dezenas de plugins que permitem adicionar diversos tipos de posts personalizados (também chamados de Custom Post Type) ao WordPress, mas, neste tutorial te ensinaremos a fazer de maneira manual. Apesar de ser um pouco mais trabalhoso, é um procedimento mais seguro. Já que adicionar um novo plugin pode trazer códigos desconhecidos ou pouco otimizados tornando o seu site mais vulnerável.

Porque criar um custom post type?

Os tipos de post personalizados podem ser utilizados para as mais variadas finalidades. Uma das mais populares é a criação de um portfolio separado dos posts do blog. Também é possível criar uma área de vídeos, de eventos ou literalmente qualquer coisa que desejar.

Neste post, adicionaremos um tipo de post personalizado chamado “Portfolio” para fins de exemplo, mas é possível alterar para o nome que desejar.

Para realizar este procedimento, precisamos ter um tema filho ativado, já que o WordPress restaura todos os arquivos do tema para o padrão no caso de uma atualização. Já ensinamos aqui no blog como criar um tema filho para o seu site WordPress. 

Entendendo cada comando

Primeiramente, abra o arquivo functions.php do tema filho, e siga até o final do arquivo. Iniciamos o código criando uma função que irá adicionar o tipo de post personalizado, e em seguida informamos os nomes que serão exibidos no menu esquerdo do painel do WordPress.

  • Name: O nome da categoria;
  • Singular_name: O nome da categoria, porém na sua versão no singular;
  • Menu_name: O nome que será exibido no menu;
  • All_items: O nome que será exibido no botão “Todos os itens”;

No código de exemplo, onde está informado “chaplin-child”, deve ser substituído pelo “Text Domain” do seu tema. Você pode verificá-lo observando nas primeiras linhas do arquivo style.css.

Em seguida, iremos preencher os argumentos do Custom Post Type:

  • Label: O nome da categoria;
  • Labels: A variável $labels está chamando todos os argumentos que preenchemos na etapa anterior;
  • Description: Uma breve descrição do seu Custom Post Type. Dependendo do seu tema, isso pode aparecer publicamente ou não;
  • Public: Se este Custom Post Type estará disponível publicamente ou não. True para verdadeiro ou False para falso;
  • Has_archive: Esta opção define se este Custom Post Type terá uma página de arquivo;
  • Show_in_menu: Se definido como verdadeiro, será possível adicionar este Custom Post Type no menu;
  • Delete_with_user: Esta opção informa se ao deletar um usuário, os posts atribuídos a ele devem ser deletados ou não;
  • Exclude_from_search: Define se os itens deste tipo de post serão excluídos da pesquisa;
  • Hierarchical: Informa se o tipo de post é hierárquico, como por exemplo as páginas;
  • Rewrite: Esta opção define as permissões de reescrita;
  • Menu_icon: Esta opção define qual ícone será exibido ao lado do nome na dashboard do WordPress. Neste link você pode verificar a lista completa de ícones disponíveis;
  • Supports: Define quais opções o tipo de post irá suportar.

Depois de definir os argumentos do tipo de post customizado, nós utilizamos a função register_post_type para habilitar o tipo de post com os argumentos definidos. Finalizamos com um add_action para passar todas as informações para o WordPress e pronto! Temos um Custom Post Type disponível sem a necessidade de utilizar nenhum plugin.

Custom Post Type finalizado

O código finalizado ficará assim:

/* Adiciona um novo custom post type */
function add_cpt() { 

    /* Informa os nomes que serão exibidos na dashboard do WordPress */
    $labels = [
        "name" => __( "Portfolio", "chaplin-child" ),
        "singular_name" => __( "Portfolio", "chaplin-child" ),
        "menu_name" => __( "Portfolio", "chaplin-child" ),
        "all_items" => __( "Todos os itens", "chaplin-child" ),
    ];

    /* Informa os argumentos do custom post type */
    $args = [
        "label" => __( "Portfolio", "chaplin-child" ),
        "labels" => $labels,
        "description" => "Meus principais trabalhos reunidos em um lugar.",
        "public" => true,
           "has_archive" => true,
        "show_in_menu" => true,
        "delete_with_user" => false,
        "exclude_from_search" => false,
        "hierarchical" => false,
        "rewrite" => [ "slug" => "portfolio", "with_front" => true ],
        "menu_icon" => "dashicons-text-page",
        "supports" => [ "title", "editor", "thumbnail", "excerpt", "comments", "revisions", "author", "page-attributes", "post-formats" ],
    ];

    /* Registra o custom post type */
    register_post_type( "portfolio", $args );

/* Adiciona a função que acabou de ser criada */
add_action( 'init', 'add_cpt' );

Lembre-se de sempre realizar um backup do seu arquivo functions.php antes de seguir os passos deste tutorial, já que uma alteração errada pode resultar na quebra de todo o seu site. Tome muito cuidado! 

Se você tiver alguma dúvida sobre tecnologia, ou quiser compartilhar conhecimento com a comunidade, o Diolinux Plus é o espaço ideal para isso. Venha fazer parte da nossa comunidade!

Até a próxima!

Talvez Você Também Goste
Coloque emblemas em pastas do Nautilus!
Continue lendo

Coloque emblemas em pastas do Nautilus!

Um recurso muito comum nos "idos do GNOME 2" eram os emblemas em pastas do Nautilus, curiosamente, tal recurso ainda existe nativamente em gerenciadores de arquivos como o Caja, do ambiente MATE (que deu continuidade ao GNOME 2) e no Nemo, do ambiente Cinnamon. Apesar de ter passado por diversas mudanças, o Nautilus ainda tem suporte a essa ferramenta.
Como instalar o FFmpeg
Continue lendo

Como instalar o FFmpeg-NVENC no Ubuntu – Tutorial passo a passo

Olá! No tutorial de hoje você vai aprender a compilar o FFmpeg com o codec Nvidia NVENC habilitado no Ubuntu e seus derivados. O NVENC pode ser muito útil para quem faz captura de tela no Linux, ele permite que os games especialmente rodem com uma taxa de FPS muito próxima da original do game sem a gravação, o que sem dúvida é interessante.