O WordPress é um dos sistemas de gerenciamento de conteúdo (CMSs) mais populares do mundo, ajudando pequenas e grandes empresas a configurar e criar várias formas de conteúdo de sites. Mas o WordPress evoluiu para além do suporte ao conteúdo tradicional de blogs, e isso se deve em grande parte à sua API REST.

A API REST do WordPress conecta o WordPress e outros aplicativos web externos. Ela torna a comunicação mais acessível e ajuda a criar experiências imersivas e envolventes na web, que se integram perfeitamente à plataforma CMS.

Essa API usa endpoints para recuperar e manipular o conteúdo do WordPress como objetos JSON. Com esses endpoints, você pode criar, ler, atualizar e excluir (CRUD) o conteúdo do WordPress remotamente sem fazer login na conta de administrador do WordPress, proporcionando flexibilidade e ampliando a funcionalidade do WordPress além de seus recursos padrão.

Este guia explora o que é a API REST do WordPress, seus benefícios, como expande as funcionalidades básicas do WordPress, e como criar, registrar e acessar um endpoint personalizado.

Pré-requisitos

Para seguir este tutorial, você precisa de:

Entendendo a API REST do WordPress

A API REST do WordPress é uma interface poderosa que permite interagir com sites WordPress de forma programática usando métodos HTTP padrão.

Seus recursos padrão incluem o acesso e a manipulação de vários tipos de dados do WordPress, como publicações, páginas, comentários, usuários e taxonomias, em um formato JSON estruturado. Você também pode executar remotamente ações CRUD no conteúdo.

Porém, o verdadeiro valor da API REST do WordPress reside em sua extensibilidade por meio de endpoints personalizados. Você pode criar endpoints personalizados para adaptar a API a necessidades específicas, como a integração de funcionalidades adicionais, serviços de terceiros ou estruturas de dados exclusivas. Essa flexibilidade permite criar aplicativos altamente personalizados e ricos em recursos com base no WordPress.

Como planejar seu endpoint de API personalizado

Planejar a estrutura e a finalidade dos seus endpoints personalizados é fundamental para o desenvolvimento eficiente da API. Endpoints personalizados adaptados às suas necessidades específicas exigem uma consideração cuidadosa para garantir a funcionalidade ideal. O planejamento estratégico facilita a escalabilidade e a adaptabilidade, preparando os endpoints para o futuro a fim de adequá-los às necessidades dos negócios, que estão sempre em evolução.

Planejar os endpoints da sua API personalizada antes da implementação proporciona:

  • Clareza da função do endpoint — Planejar o seu endpoint deixa clara a sua função específica, os tipos de dados esperados e a sua forma de utilização.
  • Consistência e eficiência no desenvolvimento — O planejamento também garante a consistência no uso dos endpoints, dos tipos de resposta e da formatação, o que melhora a interação com a API. Além disso, o conhecimento da finalidade da API permite a implementação adequada, reduzindo o tempo de desenvolvimento e o risco de erros.
  • Escalabilidade e adaptabilidade — A definição das necessidades do seu endpoint ajuda a prepará-lo para o futuro, a fim de acomodar as necessidades e os requisitos do negócio, que mudam constantemente, sem a necessidade de uma reformulação completa.
  • Segurança — O planejamento adequado do endpoint ajuda a determinar a necessidade de autenticação para acessar ou manipular dados. Obter conteúdo por meio da API às vezes não envolve autenticação de usuário. Ainda assim, para conteúdo que contém dados confidenciais ou não autorizados, é essencial definir requisitos de segurança e implementar medidas como autorização e controles de acesso para ajudar a garantir a segurança dos dados.

As seções práticas a seguir explicam como você pode criar um endpoint personalizado que está disponível em site-domain/wp-json/custom/v2/testimonials para recuperar depoimentos de clientes de um site de banco de dados do WordPress.

Após enviar uma solicitação, o endpoint retorna um objeto JSON que contém informações sobre os depoimentos em seu site WordPress, conforme definido em sua função callback.

Vamos começar!

Crie um tipo personalizadode artigo para o seu endpoint

Primeiro, você precisa criar um tipo de artigo personalizado.

  1. Navegue até o Theme File Editor na seção Appearance do painel do WordPress.
  2. Abra o arquivo function.php do seu tema e adicione o seguinte código:
    function create_custom_testimonial_type() {
        register_post_type('testimonials', array(
            'labels' => array(
                'name' => 'Testimonials',
                'singular_name' => 'Testimonial',
            ),
            'public' => true,
            'has_archive' => true,
            'show_in_rest' => true, // This enables REST API support
        ));
    }
    add_action('init', 'create_custom_testimonial_type');

    Esse código cria o tipo de artigo personalizado “testimonials” e ativa o suporte à API REST do WordPress ('show_in_rest' => true). A função add_action hook chama a função callback create_testimonial_type e a inicia durante a execução.

    Você pode personalizar as etiquetas e os argumentos removendo ou adicionando para atender às suas necessidades.

  3. Clique em Update File (Atualizar arquivo) para salvar suas alterações.
    Criando um tipo de artigo <code>custom_testimonial</code>.
    Criando um tipo de artigo custom_testimonial.

    Atualize o painel para ver a opção Testimonials (Depoimentos) adicionada ao painel do WordPress.

    O tipo de artigo
    O tipo de artigo “testimonial” recém-criado.

  4. Para criar uma novo artigo contendo depoimentos, clique em Testimonials > Add New Post. Você pode usar o bloco Pullquote. Dependendo de como você apresenta o depoimento, também pode usar outros blocos.

Aqui estão dois exemplos de depoimentos criados usando os blocos Pullquote:

Depoimentos recém-criados.
Depoimentos recém-criados.

Registre um endpoint personalizado no WordPress

O registro de um endpoint personalizado o torna disponível para consumo por meio da API REST. Isso envolve o uso da função register_rest_route, chamando no hook rest_api_init e fornecendo um método callback que será invocado quando o caminho for chamado.

Cole o código a seguir no arquivo function.php do seu tema:

add_action( 'rest_api_init', 'register_testimonial_rest_route' );
 
function register_testimonial_rest_route(){
	register_rest_route(
		'custom/v2',
		'/testimonials',
		array(
			'methods' => 'GET',
			'callback' => 'get_testimonials',
		)
	);
}

Essa função register_rest_route() recebe três parâmetros:

  • Route Namespace ($route_namespace) — Esta é a primeira parte do segmento de URL e deve seguir o padrão fornecedor/número de versão. O fornecedor representa o slug do fornecedor ou do tema. O namespace ajuda a diferenciar os endpoints e ajuda os clientes a entrar em contato com o suporte para o seu endpoint personalizado. Este tutorial usa o namespace custom/v2.
  • A URL de base ($route) — Segue o namespace e é uma URL mapeada para um método. Você pode registrar mais de um único endpoint para o seu caminho. Para este tutorial, você usa o caminho /testimonials, que informa ao endpoint para recuperar depoimentos.
  • As opções do endpoint ($args) — Aqui, trata-se de um array que contém o método HTTP usado ao chamar o caminho e a função callback que o endpoint invocará quando você enviar uma solicitação. Examinaremos essa função callback na próxima seção.

Por fim, anote o endereço do endpoint. O formato de um endpoint é site-address/wp-json/namespace/route. Portanto, neste exemplo, o endpoint será https://www.staging.kidspartysanctuary.co.uk/wp-json/custom/v2/testimonials.

Implemente a função callback para o endpoint

Após criar o tipo personalizado de artigo e registrar o endpoint personalizado, a próxima etapa é escrever a função callback. Essa função é chamada sempre que o endpoint é acessado.

  1. Declare sua função callback get_testimonials usando o código abaixo:
    function get_testimonials(){
    
    }
  2. Inicialize um array de depoimentos vazio para armazenar os dados de depoimentos do WordPress recuperados:
    $testimonials = array();
  3. Configure um array chamado $args com parâmetros de consulta para uma chamada WP_Query.
    $args = array(
        'post_type' => 'testimonials', //specifies you want to query the custom post type   
    'testimonial',
        'nopaging' => true,  // no pagination, but retrieve all testimonials at once
    ),
  4. Crie uma instância da classe WP_Query que receba o array $args, execute uma consulta com base nos parâmetros especificados e armazene os resultados da consulta do WordPress na variável $query.
    $query = new WP_Query($args)
  5. Escreva uma instrução condicional para verificar se há algum artigo de depoimento. Em seguida, crie um loop while para iterar os artigos de depoimentos e retornar title e content delas.
    if ( $query->have_posts() ) {
            while ( $query->have_posts() ) {
                $query->the_post();
                $testimonial_data = array( /*an array that stores the title 
    and content of every post*/
                'title' => get_the_title(),
                    'content' => get_the_content(),
                    // Add other fields as needed
                );
                $testimonials[] = $testimonial_data; 
            }
            wp_reset_postdata(); /* restores $post 
    global to the current post to avoid any conflicts in subsequent queries*/
        }
        return rest_ensure_response( $testimonials ); /*ensures response is 
    correctly set as a response object for consistency*/

    Aqui está o código completo:

    function get_testimonials() {
    $testimonials = array();
    $args = array(
        'post_type' => 'testimonials',
        'nopaging' => true,
    );
    $query = new WP_Query( $args );
    if ( $query->have_posts() ) {
        while ( $query->have_posts() ) {
            $query->the_post();
            $testimonial_data = array(
                'title' => get_the_title(),
                'content' => get_the_content(),
                // Add other fields as needed
            );
            $testimonials[] = $testimonial_data;
        }
        wp_reset_postdata();
    }
    return rest_ensure_response( $testimonials );
    }
  6. Teste seu endpoint usando o Postman para verificar se você pode acessar seus dados.
    O Postman mostrando uma resposta bem-sucedida.
    O Postman mostrando uma resposta bem-sucedida.

    Você também pode testar isso usando um navegador. Para acessar o endpoint, digite a URL site-domain/wp-json/custom/v2/testimonials na barra de endereços.

    Screenshot of the endpoint being successfully accessed in a web browser
    O resultado no navegador quando o endpoint é acessado.

Resumo

Este tutorial explicou como implementar um endpoint personalizado da API do WordPress. Para permitir que os usuários acessem e interajam com os dados do seu banco de dados do WordPress, você só precisa registrar o caminho que implementa uma função callback.

Quer saber como maximizar o WordPress para os seus negócios? A Kinsta oferece várias opções avançadas como parte do nosso serviço de hospedagem gerenciada WordPress para ajudar a atender às necessidades únicas do seu negócio. Uma opção a considerar é o plugin Kinsta MU (must-use), que gerencia e implementa o armazenamento em cache em seu site a fim de reduzir a latência e melhorar o desempenho. Experimente a Kinsta hoje mesmo!

Qual é a sua opinião sobre o desenvolvimento de endpoints de API personalizados do WordPress? Você já projetou algum? Gostaríamos muito de ouvir sobre suas experiências. Compartilhe-as na seção de comentários abaixo.

Jeremy Holcombe Kinsta

Editor de Conteúdo & Marketing na Kinsta, Desenvolvedor Web WordPress e Escritor de Conteúdo. Fora do universo WordPress, eu curto praia, golfe e filmes. Também enfrento problemas de gente alta ;).