Como implementar tipos de postagem personalizados e campos personalizados no WordPress

Publicados: 2014-06-10

O WordPress não se limita mais apenas aos blogs - é um sistema de gerenciamento de conteúdo completo capaz de exibir e formatar qualquer tipo de conteúdo que você fornecer. Então, vamos falar sobre duas ótimas maneiras de estender o WordPress: tipos de postagem personalizados e campos personalizados.

Tipos de postagem personalizados

Parece que nosso site de teste, Monday Morning Mug (que usamos em nossa postagem no blog de integração de e-mail), tem um novo problema para lidar. Nosso blog ficou tão grande que contratamos uma equipe de revisão de café em tempo integral. Eles estão ocupados preparando café e escrevendo críticas. Eles têm postado essas resenhas no blog, mas nossos leitores nos disseram que todas essas resenhas estão atrapalhando o conteúdo do nosso blog “real”. Precisamos criar um local separado para nossas análises de café, mas as páginas normais do WordPress simplesmente não são suficientes. Os revisores também sugeriram que adorariam ter um lugar para armazenar facilmente informações, como o país de origem do café e notas de degustação, no site. Isso parece um uso perfeito para um tipo de postagem personalizado, um recurso do WordPress que nos permite criar novas seções de conteúdo em nosso site.

Os tipos de postagem personalizados são incrivelmente flexíveis e podem ser implementados para qualquer tipo de conteúdo: citações, vídeos e diferentes tons de tinta são exemplos do que um tipo de postagem personalizado pode ser.

Vamos querer adicionar uma nova seção do nosso site no subdiretório /coffees/ que está cheia de comentários sobre café. Isso vai exigir um pouco de discussão de código, mas deve ser um processo relativamente fácil.

Nota: Para fazer isso, você precisará editar os arquivos .php em seu diretório de instalação do WordPress, que normalmente requer acesso FTP/SFTP/SSH. Certifique-se de ter isso antes de prosseguir.

Todo tema WordPress pode utilizar um arquivo functions.php, localizado em:
/wp-content/themes/your_current_theme/functions.php
Esse arquivo geralmente é usado para alterações de site específicas do tema, bem como modificações de site personalizadas menores, como a que estamos prestes a fazer.

Nota: Adicionaremos código ao arquivo functions.php , o que significa que é específico do tema. Se você adicionar isso ao seu arquivo functions.php e depois alterar o tema em sua instalação do WordPress, você removerá o tipo de postagem personalizado do seu site. Você pode manter tipos de conteúdo personalizados utilizando um plug-in, como Custom Post Type UI.

1. Abra seu arquivo functions.php e adicione o seguinte código na parte inferior do arquivo:

function create_new_post_type() {
$labels = array(
'name' 			 => __('Coffee Reviews'),
'singular_name'  => __('Coffee Review'),
);
$args = array(
'labels'      	 => $labels,
'public' 	  	 => true,
'has_archive' 	 => true,
'menu_position'  => 5,
'description'    => 'Reviews And Types of Coffee',
'rewrite'     	 =>
array('slug' => 'reviews'),
'supports'    	 =>
array( 'title',
'comments', 'editor',
'thumbnail', 'custom-fields', 'revisions'),
);

register_post_type('Reviews', $args);
}
add_action('init', 'create_new_post_type');

Como não gostamos particularmente de utilizar código sem ter uma ideia do que ele faz, vamos ver o que esse código faz.

Nota: Você deve ter notado que $labels e $args são definidos fora da função register_post_type() mesmo que eles sejam passados ​​apenas como argumentos para essa função mais tarde. Esse método ajuda na organização e legibilidade, mas você pode condensar as duas matrizes em um único argumento. Só seria mais difícil de entender.

O array $args contém todos os detalhes que precisamos para definir nosso novo tipo de conteúdo. Aqui está o que estes fazem:

  • 'labels' – Um array definindo o que chamaremos de nosso tipo de conteúdo. Há muitos outros rótulos disponíveis que você pode usar, e uma lista completa está disponível na documentação aqui.
  • 'public' – Um booleano que define se a postagem pode ou não ser visualizada fora do painel de administração.
  • 'has_archive' – Se verdadeiro, este booleano criará um arquivo desse tipo de postagens personalizadas, assim como as postagens padrão do WordPress.
  • 'menu_position' – Este número inteiro muda para onde seu botão de navegação de postagem personalizado vai. O número 5 indica que ele irá diretamente abaixo da aba de posts. Para obter uma lista completa de códigos numéricos, consulte a mesma documentação.
  • 'description' – Descreve o tipo de postagem.
  • 'rewrite' – Isso altera o slug para “reviews”, o que ajudará a criar uma estrutura de permalink utilizável. (Também pode ser booleano; verifique a documentação para mais informações.)
  • 'supports' – Uma matriz que define quais recursos nativos de edição/post do WordPress estão ativados. Este é bastante flexível e há muito mais opções, mas precisaremos de pelo menos custom-fields e editor para este post.

A função register_post_type() é chamada em seguida, que cria um novo tipo de postagem chamado Reviews usando o array de argumentos que acabamos de definir.

Finalmente, temos que chamar uma última função para completar o processo. register_post_type() deve sempre ser inicializado pela ação 'init'. Podemos ligar nossa nova função ao init chamando

add_action(‘init’, ‘create_new_post_type’);

Incrível! Agora, se entrarmos no nosso painel de administração do WordPress, devemos ver uma nova guia à esquerda chamada “Reviews”.

coffee_reviews

2. Agora que temos Resenhas configuradas como um tipo de postagem personalizado, precisamos atualizar a estrutura de links permanentes para que nossos leitores possam encontrar facilmente nossas postagens. Além disso, torna nossos URLs muito mais fáceis de ler e amigável para SEO.

3. Na barra de menu Configurações -> Links permanentes, você encontrará várias opções comuns para estruturas de links permanentes. Vamos alterar a configuração personalizada para corresponder ao campo /%category%/%postname%/

Isso significa que o WordPress gerará URLs para corresponder à categoria e título de nossas postagens.

Observação: esta é uma alteração em todo o site e afetará suas postagens em outras categorias.

custom_permalink

Agora vamos dar uma olhada no URL de um post que nossos revisores escreveram para o café Sumatra Ketiara:

sumatra_permalink

Fantástico! Confira esse URL. Temos comentários separados em seu próprio diretório e o URL está escrito em inglês simples. Agora nossos leitores sabem exatamente o que vão obter quando clicarem em um link.

Os campos personalizados

Embora nossos revisores adorem a nova seção de Revisão, eles nos pediram para incorporar algo no back-end que lhes permita inserir informações comuns que escrevem sobre cada café, como país de origem e notas de degustação. Isso soa como o uso perfeito de campos personalizados, que, felizmente, são muito fáceis de implementar.

1. Em um editor de revisão individual, você verá o botão de opções de tela no canto superior direito do editor:

screen_options

que se expande para isso quando clicado:

screen_options_dropdown

2. Marque a caixa Campos personalizados.

Abaixo do editor, você verá a caixa Campos personalizados que acabamos de habilitar.

custom_fields_blank

3. Você pode digitar qualquer coisa em ambas as caixas; tudo o que você digitar e adicionar no campo Nome será salvo para uso posterior. Aqui, listamos a região e o país de origem do nosso café.

custom_fields_region

Os campos personalizados tornam incrivelmente fácil padronizar dados importantes para uma categoria em cada postagem em um local separado. Agora só temos que obter essas informações para exibir em nossa análise.

4. Vamos adicionar esta tag de código a um de nossos documentos de tema:

<br /><?php the_meta(); ?><br />

Nota: Neste exemplo, vamos colocar essa tag em nosso arquivo content.php, mas você precisará encontrar um local adequado para sua tabela de valores. Você também deve estilizar essa tag para combinar com o resto do seu tema, sobre o qual você pode ler mais aqui.

Voltando ao nosso blog, podemos ver que nossa tag inseriu uma lista em nossa análise.

custom_field_example

Elegante! Agora nossos leitores e nossos revisores estão felizes. Conseguimos criar um tipo de postagem personalizado que nos permitia salvar avaliações sobre café, e pudemos dar aos nossos avaliadores um local para armazenar todas as informações importantes para cada avaliação diferente.