{"id":229200,"date":"2022-10-27T09:34:00","date_gmt":"2022-10-27T06:34:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229200"},"modified":"2022-11-09T05:56:29","modified_gmt":"2022-11-09T02:56:29","slug":"associacao-de-metadados-do-wordpress-entidades-relacionadas","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/associacao-de-metadados-do-wordpress-entidades-relacionadas\/","title":{"rendered":"Associa\u00e7\u00e3o de Metadados do WordPress: Entidades Relacionadas"},"content":{"rendered":"\n<p>Neste ponto, abordamos como criar as entidades dentro do plug-in (que, como dissemos, \u00e9 apenas uma palavra chique para outra ideia concreta). Ou seja, temos um usu\u00e1rio e um tipo de postagem personalizado, ou um livro. E \u00e9 aqui que come\u00e7amos a pegar as duas entidades separadas e combinar e trabalhar com o que chamaremos de associa\u00e7\u00e3o de metadados do WordPress.<\/p>\n<p>Mas antes de fazer isso, \u00e9 importante entender os dois tipos de metadados com os quais trabalharemos e as duas maneiras (ou tr\u00eas maneiras, dependendo de como voc\u00ea v\u00ea) de como podemos associar os metadados.<\/p>\n<p>Tal como acontece com o resto das postagens da s\u00e9rie, isso n\u00e3o pretende ser um mergulho profundo na compreens\u00e3o de cada uma das tabelas ou um mergulho profundo em cada uma das fun\u00e7\u00f5es da API. Em vez disso, vamos pesquisar o que est\u00e1 dispon\u00edvel, coloc\u00e1-los em uso e deixar detalhes mais sutis para postagens futuras (ou talvez discuss\u00f5es nos coment\u00e1rios).<\/p>\n<h2>Associa\u00e7\u00e3o de Metadados do WordPress<\/h2>\n<p>Os metadados n\u00e3o s\u00e3o exclusivos do WordPress. Voc\u00ea provavelmente sabe disso. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Metadata\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">E muitas vezes \u00e9 definido como<\/a> :<\/p>\n<blockquote>\n<p>Informa\u00e7\u00f5es sobre informa\u00e7\u00f5es ou dados sobre dados.<\/p>\n<\/blockquote>\n<p>E essa \u00e9 uma boa maneira de coloc\u00e1-lo. O WordPress oferece algumas tabelas de banco de dados diferentes que podemos usar para fornecer informa\u00e7\u00f5es sobre outros tipos de entidades dentro do WordPress. Vamos usar alguns deles mais adiante neste post, mas basta dizer que o <a href=\"https:\/\/codex.wordpress.org\/Database_Description\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress oferece<\/a> :<\/p>\n<ul>\n<li>metadados de coment\u00e1rios,<\/li>\n<li>postar metadados,<\/li>\n<li>metadados de termo,<\/li>\n<li>e metadados do usu\u00e1rio<\/li>\n<\/ul>\n<p>E tudo isso est\u00e1 dispon\u00edvel fora da caixa.<\/p>\n<p>Uma das tabelas de metadados do WordPress.<\/p>\n<p>As APIs para cada um deles s\u00e3o consistentes, o que tamb\u00e9m \u00e9 bom. Mas, novamente, vamos nos preocupar apenas com alguns deles no restante deste post.<\/p>\n<h3>1 As Tabelas de Metadados<\/h3>\n<p>Para nosso exemplo, usaremos uma, ou ambas, das duas tabelas a seguir:<\/p>\n<ol>\n<li><a href=\"https:\/\/codex.wordpress.org\/Database_Description#Table:_wp_postmeta\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_postmeta<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Database_Description#Table:_wp_usermeta\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_usermeta<\/a><\/li>\n<\/ol>\n<p>Concedido, em sua instala\u00e7\u00e3o, eles podem ter um prefixo diferente, mas o sufixo \u00e9 o mesmo, e voc\u00ea entendeu.<\/p>\n<p>Em segundo lugar, usaremos as fun\u00e7\u00f5es de API relacionadas para associar nossos metadados. Veremos isso no c\u00f3digo quando estivermos associando os dados entre nosso usu\u00e1rio e o tipo de postagem personalizado (ou nosso autor e nossos livros, se voc\u00ea quiser usar a terminologia mais precisa).<\/p>\n<p>Est\u00e1 bem ent\u00e3o. Toda esta primeira parte do post est\u00e1 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 \u00fatil.<\/p>\n<h3>2 Associando Metadados<\/h3>\n<p>A ideia por tr\u00e1s da associa\u00e7\u00e3o de metadados do WordPress parece mais complicada do que \u00e9. Pense assim:<\/p>\n<ul>\n<li>Dadas duas tabelas, como podemos compartilhar informa\u00e7\u00f5es entre duas entidades que permitem que uma conhe\u00e7a a outra?<\/li>\n<\/ul>\n<p>Por exemplo, dado um usu\u00e1rio, como podemos informar os metadados do usu\u00e1rio sobre os metadados da postagem. Ou, invertendo a situa\u00e7\u00e3o, como podemos permitir que os metadados do post saibam qualquer coisa sobre os metadados do usu\u00e1rio relacionados?<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167597-61e7a5d09f770.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167597-61e7a5d09f770.jpg\" alt=\"Associa\u00e7\u00e3o de Metadados do WordPress: Entidades Relacionadas\" ><\/a><\/p>\n<p>Em alto n\u00edvel, isso \u00e9 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\u00e7\u00e3o, um pode ser mais ben\u00e9fico do que o outro.<\/p>\n<h4>1 sentido \u00fanico<\/h4>\n<p>Quando falamos sobre a cria\u00e7\u00e3o de associa\u00e7\u00f5es WordPress unidirecionais, geralmente estamos falando sobre a ideia de que apenas uma entidade est\u00e1 ciente da outra. Isso significa que o usu\u00e1rio s\u00f3 pode estar ciente da postagem.<\/p>\n<p>Assim, podemos configurar ap\u00f3s a cria\u00e7\u00e3o de uma postagem, como o usu\u00e1rio em quest\u00e3o est\u00e1 ciente da postagem que <a href=\"https:\/\/gist.github.com\/tommcfarlin\/c1245410fdf288edd11c9547711dd76c#file-01-post-aware-of-user-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">acabou de ser criada<\/a> :<\/p>\n<pre><code>&lt;?php\n\n\/\/ Using post title as the value, but it's just an example.\nadd_user_meta( $user_id, $post_id, $post_title );<\/code><\/pre>\n<p>Ou talvez isso signifique que a postagem est\u00e1 ciente do usu\u00e1rio:<\/p>\n<pre><code>&lt;?php\n\n\/\/ User user email address a value but just an example.\nadd_post_meta( $post_id, $user_id, $email_address );<\/code><\/pre>\n<p>Mas n\u00e3o importa como voc\u00ea olhe para isso, a associa\u00e7\u00e3o s\u00f3 vai de uma maneira.<\/p>\n<p>E embora o relacionamento v\u00e1 de um jeito, n\u00e3o precisa ser assim. Ou seja, ambas as entidades podem estar cientes uma da outra.<\/p>\n<h4>2 Bidirecional<\/h4>\n<p>Como as APIs de metadados s\u00e3o t\u00e3o f\u00e1ceis e consistentes de trabalhar, n\u00e3o \u00e9 dif\u00edcil trabalhar com elas. Cada um dos geralmente requer pelo menos dois dos seguintes:<\/p>\n<ol>\n<li>um tipo de ID ao qual os metadados est\u00e3o relacionados,<\/li>\n<li>uma meta-chave que pode ser usada para pesquisar as informa\u00e7\u00f5es,<\/li>\n<li>um valor que armazena informa\u00e7\u00f5es associadas ao ID e \u00e0 postagem.<\/li>\n<\/ol>\n<p>Em rela\u00e7\u00e3o a qual ID e qual chave voc\u00ea escolhe, geralmente depende de sua implementa\u00e7\u00e3o, como vimos.<\/p>\n<p>At\u00e9 este ponto, vimos como criar uma associa\u00e7\u00e3o unidirecional. Uma associa\u00e7\u00e3o de m\u00e3o dupla n\u00e3o \u00e9 nada diferente. \u00c9 apenas em vez de tornar uma entidade ciente da outra, tornamos ambas as entidades cientes da outra:<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Using this association will give you the ability to query for information \n * both on posts and users and then work with the data accordingly.\n *\/\nadd_user_meta( $user_id, $post_id, $post_title );\nadd_post_meta( $post_id, $user_id, $email_address );\n<\/code><\/pre>\n<p>Mas esta n\u00e3o \u00e9 uma decis\u00e3o que deve ser tomada apenas por isso. Em vez disso, vale a pena pensar em algumas das raz\u00f5es pelas quais voc\u00ea pode querer escolher um ou outro.<\/p>\n<h3>Pensando no problema<\/h3>\n<p>Quando se trata de resolver problemas como este, n\u00e3o h\u00e1 uma solu\u00e7\u00e3o definitiva em termos de &quot;voc\u00ea deve ser definitivo para isso [desta maneira]&quot; de qualquer maneira. Em vez disso, voc\u00ea deve se fazer perguntas como &quot;o que contribui para o maneira mais f\u00e1cil de gerenciar esses dados?&quot;<\/p>\n<p>Por exemplo, se voc\u00ea estiver interessado principalmente no gerenciamento de usu\u00e1rios, talvez tudo o que voc\u00ea precise seja ter os metadados do usu\u00e1rio cientes de qualquer entidade \u00e0 qual estejam relacionados. Dessa forma, quando o usu\u00e1rio for exclu\u00eddo, voc\u00ea tamb\u00e9m deve procurar as entidades relacionadas a ele por meio da tabela de metadados do usu\u00e1rio e exclu\u00ed-las tamb\u00e9m.<\/p>\n<p>Da mesma forma, talvez a mesma funcionalidade funcione nos dois sentidos. Ou seja, assim como voc\u00ea quer ter certeza de que quando um usu\u00e1rio for exclu\u00eddo, suas postagens tamb\u00e9m ser\u00e3o exclu\u00eddas, voc\u00ea tamb\u00e9m pode querer que o usu\u00e1rio seja exclu\u00eddo (ou modificado) sempre que uma de suas postagens for removida. E se for esse o caso, ent\u00e3o a associa\u00e7\u00e3o bidirecional permite isso.<\/p>\n<p>Como voc\u00ea tem o ID de um determinado post e o ID de um determinado usu\u00e1rio, bem como as meta-chaves que voc\u00ea especificou, praticamente qualquer tipo de consulta que voc\u00ea pode criar atrav\u00e9s da API de metadados do WordPress ou <a href=\"https:\/\/codex.wordpress.org\/Class_Reference\/WP_Query\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_Query<\/a> ou mesmo <a href=\"https:\/\/codex.wordpress.org\/Class_Reference\/WP_User_Query\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_User_Query<\/a> \u00e9 poss\u00edvel .<\/p>\n<h2>O fim<\/h2>\n<p>Por fim, espero que esta s\u00e9rie tenha fornecido algumas dicas sobre como n\u00e3o apenas criar associa\u00e7\u00f5es de metadados do WordPress, mas tamb\u00e9m como pensar abstratamente sobre conceitos dentro do WordPress no que se refere \u00e0 cria\u00e7\u00e3o de implementa\u00e7\u00f5es de n\u00edvel superior em seus plugins e aplicativos da web.<\/p>\n<p>Para quem estiver interessado, estou pensando em lan\u00e7ar esta s\u00e9rie como um pequeno recurso em formato PDF junto com um plugin funcional para estudar. Se isso \u00e9 algo que voc\u00ea est\u00e1 interessado em fazer, inscreva-se na lista de e-mails aqui, e eu avisarei quando estiver pronta; caso contr\u00e1rio, use as informa\u00e7\u00f5es da s\u00e9rie para avan\u00e7ar e criar algo que valha a pena<\/p>\n<h3>Quer mais?<\/h3>\n<h2>Postagens da s\u00e9rie<\/h2>\n<ol>\n<li><a href=\"https:\/\/tommcfarlin.com\/wordpress-metadata-association\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Associa\u00e7\u00e3o de metadados do WordPress: como fazer<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/criando-usuarios-do-wordpress-programaticamente\/\" title=\"Criando usu\u00e1rios do WordPress programaticamente\">Criando usu\u00e1rios do WordPress programaticamente<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/tipos-de-postagem-do-wordpress-uma-abstracao-para-entidades\/\" title=\"Tipos de postagem do WordPress: uma abstra\u00e7\u00e3o para entidades\">Tipos de postagem do WordPress: uma abstra\u00e7\u00e3o para entidades<\/a><\/li>\n<li><a href=\"https:\/\/tommcfarlin.com\/wordpress-metadata-association-entities\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Associa\u00e7\u00e3o de Metadados do WordPress: Entidades Relacionadas<\/a><\/li>\n<\/ol>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aqui \u00e9 onde come\u00e7amos a pegar as duas entidades separadas e combinar e trabalhar com o que chamaremos de associa\u00e7\u00e3o de metadados do WordPress.<\/p>\n","protected":false},"author":1,"featured_media":220451,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[898,722,846,867],"tags":[1170],"class_list":["post-229200","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-2","category-desenvolvedor","category-tutoriais","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229200","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=229200"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229200\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/220451"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=229200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=229200"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=229200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}