Uma boa maneira para manter seu tema bem estruturado é deixar tudo organizado. Pensando assim, como gerentes e desenvolvedores WordPress temos a obrigação de criar soluções fáceis e intuitivas para o Painel Administrativo.
Assim, criar tipo de post personalizado ou custom post type, deixa o trabalho e a utilização por meio dos usuários muito mais eficiente. Imaginar que no WordPress podemos criar diversos tipos de post, onde cadastramos informações muito além de conteúdos para postagem é realmente incrível. Hoje você vai aprender, sem utilizar plugins, como criar tipos de post personalizados e deixar seu sistema muito mais avançado, completo e profissional.
Tipo de Post Personalizado
Um tipo de post personalizado ou custom post type é algo simples. Nada mais é que um “clone” da estrutura de Posts que o WordPress utiliza. Existem funções nativas e que nos permitem realizar esse tipo de implementação de forma bastante clara e sem nenhuma dificuldade.
Noções Básicas
Quando queremos desenvolver algo novo ou simplesmente alterar algo no Frontend ou Backend do nosso site WordPress, na maioria precisamos utilizar o arquivo functions.php. É nesse arquivo, que está presente em todo e qualquer tema WP, que encontramos todas as funções, ações e comportamentos que costumamos ver na página web.
Vamos utilizar código PHP e funções que a própria equipe de desenvolvimento WordPress nos oferece para criar dentro do nosso site.
Cenário de Exemplo
Para exemplificar e deixar esse tutorial mais fácil de explicar e entender, irei utilizar um cenário bastante comum e que pode ser aplicado ou alterado por qualquer um.
Imagine que você necessita de um sistema WordPress para cadastrar Clientes. Sua estrutura para receber conteúdo e informações será relativamente a mesma dos Posts. Todavia, irá existir a área de Clientes e continuará existindo a área para criação de Posts – a qual você pode escolher manter ou não.
Acessando o functions.php
Como provavelmente você já viu em tutoriais aqui do CanalWP, é possível acessar o arquivo functions.php para criar e alterar seu WordPress por meio da Dashboard (Aparência > Editor) ou utilizando um editor de código da sua preferência. Para abrir o functions.php e editá-lo utilizando a última opção é necessário que você acesse seu servidor e siga para wp-content > themes > seu tema > functions.php.
Criando seu novo tipo de post
Antes de te mostrar o bloco de código PHP que vamos utilizar, bem como a função que faz tudo acontecer, olha só como é o nosso ambiente de testes antes da implementação do novo tipo de post personalizado:
Repare que há apenas itens de menu padrão do WordPress e do tema que estou utilizando. A partir da inserção de código você verá um novo item de menu com o título Clientes.
O bloco de código que segue abaixo possui a função e todas as definições necessárias que vamos utilizar. Copie o mesmo e cole-o no arquivo functions.php do tema que você está utilizando, em seguida salve as alterações e verifique como seu Painel Administrativo WordPress estará.
function create_post_types() { $labels = array( 'name' => __( 'Clientes', THEMENAME ), 'singular_name' => __( 'Cliente', THEMENAME ), 'add_new' => __( 'Adicionar Novo', THEMENAME ), 'add_new_item' => __( 'Adicionar Novo Cliente', THEMENAME ), 'edit_item' => __( 'Editar Cliente', THEMENAME ), 'new_item' => __( 'Novo Cliente', THEMENAME ), 'all_items' => __( 'Todos Clientes', THEMENAME ), 'view_item' => __( 'Ver Cliente', THEMENAME ), 'search_items' => __( 'Pesquisar Clientes', THEMENAME ), 'not_found' => __( 'Nenhum Cliente encontrada', THEMENAME ), 'not_found_in_trash' => __( 'Nenhum Cliente no Lixo', THEMENAME ), 'menu_name' => __( 'Clientes', THEMENAME ), ); $supports = array( 'title', 'editor' ); $slug = get_theme_mod( 'cliente_permalink' ); $slug = ( empty( $slug ) ) ? 'cliente' : $slug; $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => array( 'slug' => $slug ), 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => 4, 'supports' => $supports, ); register_post_type( 'cliente', $args ); } add_action( 'init', 'create_post_types' );
Entendendo o Código
Nós estamos utilizando a função create_post_types para criar o nosso novo tipo de post personalizado ou custom post type. Depois disso, por meio do add_action chamamos a função acima para que seja executada.
Chamo sua atenção para a linha em que aparece ‘menu_position’ => 4 – ela é utilizada para definir qual o posicionamento no menu da Dashboard. Você pode utilizar um numeral ou “null” para não configurar posição.
Quando chegamos na linha com register_post_type(‘cliente’ – $args) – é quando realmente registramos o nosso tipo de post personalizado, enviando as configurações que definimos.
Para que esse código se adapte perfeitamente ao seu site WordPress, onde está escrito “Clientes” ou “Cliente” você pode alterar pelo título que desejar.
Se você gostou desse artigo considere compartilhar nas redes sociais. Siga-nos nas redes sociais para acompanhar mais artigos como esse. Se de alguma forma este artigo lhe foi útil deixa seu comentário abaixo para podermos saber a sua opinião.
Ferramentas WordPress Veja Mais Ferramentas
Social Warfare PRO
Ninja Forms
Revive Social
Muito obrigado pela ajuda, estou fazendo o meu primeiro site em WP e no curso que eu estou fazendo não ensina a fazer isso de novo muito obrigado e continuem com o ótimo trabalho.
Como eu faço pra adicionar os atributos? Nesse caso do Cliente, por exemplo, as informações referentes a clientes são adicionadas onde?
Como eu Coloco Categoria Independente para este tipo de Post, no caso quero que as categorias apareçam individualmente das tradicionais dentro da aba clientes.
Muito bom o artigo. Para colocar uma imagem destacada, como faço.
Como adicionar a função de categoria no nesse post ?
Como adicionar a função de categoria no nesse post ?
Você precisa adicionar uma taxonomia ao tipo de post personalizado para isso.
Adicione o seguinte código em seu functions.php:
http://pastebin.com/AAL1LqQk
Abraço.