Associação de Metadados do WordPress: Entidades Relacionadas
Neste ponto, abordamos como criar as entidades dentro do plug-in (que, como dissemos, é apenas uma palavra chique para outra ideia concreta). Ou seja, temos um usuário e um tipo de postagem personalizado, ou um livro. E é aqui que começamos a pegar as duas entidades separadas e combinar e trabalhar com o que chamaremos de associação de metadados do WordPress.
Mas antes de fazer isso, é importante entender os dois tipos de metadados com os quais trabalharemos e as duas maneiras (ou três maneiras, dependendo de como você vê) de como podemos associar os metadados.
Tal como acontece com o resto das postagens da série, isso não pretende ser um mergulho profundo na compreensão de cada uma das tabelas ou um mergulho profundo em cada uma das funções da API. Em vez disso, vamos pesquisar o que está disponível, colocá-los em uso e deixar detalhes mais sutis para postagens futuras (ou talvez discussões nos comentários).
Associação de Metadados do WordPress
Os metadados não são exclusivos do WordPress. Você provavelmente sabe disso. E muitas vezes é definido como :
Informações sobre informações ou dados sobre dados.
E essa é uma boa maneira de colocá-lo. O WordPress oferece algumas tabelas de banco de dados diferentes que podemos usar para fornecer informações sobre outros tipos de entidades dentro do WordPress. Vamos usar alguns deles mais adiante neste post, mas basta dizer que o WordPress oferece :
- metadados de comentários,
- postar metadados,
- metadados de termo,
- e metadados do usuário
E tudo isso está disponível fora da caixa.
Uma das tabelas de metadados do WordPress.
As APIs para cada um deles são consistentes, o que também é bom. Mas, novamente, vamos nos preocupar apenas com alguns deles no restante deste post.
1 As Tabelas de Metadados
Para nosso exemplo, usaremos uma, ou ambas, das duas tabelas a seguir:
Concedido, em sua instalação, eles podem ter um prefixo diferente, mas o sufixo é o mesmo, e você entendeu.
Em segundo lugar, usaremos as funções de API relacionadas para associar nossos metadados. Veremos isso no código quando estivermos associando os dados entre nosso usuário e o tipo de postagem personalizado (ou nosso autor e nossos livros, se você quiser usar a terminologia mais precisa).
Está bem então. Toda esta primeira parte do post está apenas estabelecendo algumas bases para quais partes da infraestrutura subjacente do WordPress vamos usar. Com tudo isso dito, vamos ver como podemos transformar isso programaticamente em algo um pouco mais útil.
2 Associando Metadados
A ideia por trás da associação de metadados do WordPress parece mais complicada do que é. Pense assim:
- Dadas duas tabelas, como podemos compartilhar informações entre duas entidades que permitem que uma conheça a outra?
Por exemplo, dado um usuário, como podemos informar os metadados do usuário sobre os metadados da postagem. Ou, invertendo a situação, como podemos permitir que os metadados do post saibam qualquer coisa sobre os metadados do usuário relacionados?
Em alto nível, isso é realmente o que estamos fazendo: estamos deixando uma entidade saber que a outra existe e estamos relacionando-a com a outra. Ou poderia ir para o outro lado. Dependendo da sua implementação, um pode ser mais benéfico do que o outro.
1 sentido único
Quando falamos sobre a criação de associações WordPress unidirecionais, geralmente estamos falando sobre a ideia de que apenas uma entidade está ciente da outra. Isso significa que o usuário só pode estar ciente da postagem.
Assim, podemos configurar após a criação de uma postagem, como o usuário em questão está ciente da postagem que acabou de ser criada :
<?php
// Using post title as the value, but it's just an example.
add_user_meta( $user_id, $post_id, $post_title );
Ou talvez isso signifique que a postagem está ciente do usuário:
<?php
// User user email address a value but just an example.
add_post_meta( $post_id, $user_id, $email_address );
Mas não importa como você olhe para isso, a associação só vai de uma maneira.
E embora o relacionamento vá de um jeito, não precisa ser assim. Ou seja, ambas as entidades podem estar cientes uma da outra.
2 Bidirecional
Como as APIs de metadados são tão fáceis e consistentes de trabalhar, não é difícil trabalhar com elas. Cada um dos geralmente requer pelo menos dois dos seguintes:
- um tipo de ID ao qual os metadados estão relacionados,
- uma meta-chave que pode ser usada para pesquisar as informações,
- um valor que armazena informações associadas ao ID e à postagem.
Em relação a qual ID e qual chave você escolhe, geralmente depende de sua implementação, como vimos.
Até este ponto, vimos como criar uma associação unidirecional. Uma associação de mão dupla não é nada diferente. É apenas em vez de tornar uma entidade ciente da outra, tornamos ambas as entidades cientes da outra:
<?php
/**
* Using this association will give you the ability to query for information
* both on posts and users and then work with the data accordingly.
*/
add_user_meta( $user_id, $post_id, $post_title );
add_post_meta( $post_id, $user_id, $email_address );
Mas esta não é uma decisão que deve ser tomada apenas por isso. Em vez disso, vale a pena pensar em algumas das razões pelas quais você pode querer escolher um ou outro.
Pensando no problema
Quando se trata de resolver problemas como este, não há uma solução definitiva em termos de "você deve ser definitivo para isso [desta maneira]" de qualquer maneira. Em vez disso, você deve se fazer perguntas como "o que contribui para o maneira mais fácil de gerenciar esses dados?"
Por exemplo, se você estiver interessado principalmente no gerenciamento de usuários, talvez tudo o que você precise seja ter os metadados do usuário cientes de qualquer entidade à qual estejam relacionados. Dessa forma, quando o usuário for excluído, você também deve procurar as entidades relacionadas a ele por meio da tabela de metadados do usuário e excluí-las também.
Da mesma forma, talvez a mesma funcionalidade funcione nos dois sentidos. Ou seja, assim como você quer ter certeza de que quando um usuário for excluído, suas postagens também serão excluídas, você também pode querer que o usuário seja excluído (ou modificado) sempre que uma de suas postagens for removida. E se for esse o caso, então a associação bidirecional permite isso.
Como você tem o ID de um determinado post e o ID de um determinado usuário, bem como as meta-chaves que você especificou, praticamente qualquer tipo de consulta que você pode criar através da API de metadados do WordPress ou WP_Query ou mesmo WP_User_Query é possível .
O fim
Por fim, espero que esta série tenha fornecido algumas dicas sobre como não apenas criar associações de metadados do WordPress, mas também como pensar abstratamente sobre conceitos dentro do WordPress no que se refere à criação de implementações de nível superior em seus plugins e aplicativos da web.
Para quem estiver interessado, estou pensando em lançar esta série como um pequeno recurso em formato PDF junto com um plugin funcional para estudar. Se isso é algo que você está interessado em fazer, inscreva-se na lista de e-mails aqui, e eu avisarei quando estiver pronta; caso contrário, use as informações da série para avançar e criar algo que valha a pena
Quer mais?
Postagens da série
- Associação de metadados do WordPress: como fazer
- Criando usuários do WordPress programaticamente
- Tipos de postagem do WordPress: uma abstração para entidades
- Associação de Metadados do WordPress: Entidades Relacionadas
