{"id":229281,"date":"2022-10-28T11:49:00","date_gmt":"2022-10-28T08:49:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229281"},"modified":"2022-11-09T06:17:14","modified_gmt":"2022-11-09T03:17:14","slug":"carregar-todos-os-campos-personalizados-do-wordpress-via-consulta-de-banco-de-dados","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/carregar-todos-os-campos-personalizados-do-wordpress-via-consulta-de-banco-de-dados\/","title":{"rendered":"Carregar todos os campos personalizados do WordPress via consulta de banco de dados"},"content":{"rendered":"<p>Ao recuperar informa\u00e7\u00f5es do banco de dados do WordPress, prefiro evitar o uso de consultas diretas ao banco de dados, mas h\u00e1 momentos em que elas podem ser \u00fateis (e \u00e9 importante que seja feito corretamente).<\/p>\n<p>Um caso de uso em que pode ser \u00fatil \u00e9 quando voc\u00ea precisa recuperar um conjunto de dados de um \u00fanico tipo. Caso em quest\u00e3o: digamos que voc\u00ea precise carregar todos os campos personalizados do WordPress.<\/p>\n<p>No momento da reda\u00e7\u00e3o deste artigo, n\u00e3o h\u00e1 nenhuma fun\u00e7\u00e3o que eu saiba que far\u00e1 isso, ent\u00e3o aqui est\u00e1 como eu consulto o banco de dados para fazer isso.<\/p>\n<h2>Carregar todos os campos personalizados do WordPress<\/h2>\n<p>H\u00e1 v\u00e1rias coisas a serem observadas sobre os campos personalizados associados a uma determinada postagem:<\/p>\n<ul>\n<li>campos personalizados s\u00e3o armazenados nos metadados do post,<\/li>\n<li>campos personalizados s\u00e3o considerados privados, ent\u00e3o eles s\u00e3o prefixados com um sublinhado,<\/li>\n<li>os Padr\u00f5es de Codifica\u00e7\u00e3o do WordPress n\u00e3o gostar\u00e3o disso (ent\u00e3o voc\u00ea pode precisar ignorar os padr\u00f5es)<\/li>\n<\/ul>\n<p>Voc\u00ea pode ler tudo sobre eles no <a href=\"https:\/\/codex.wordpress.org\/Custom_Fields\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Codex<\/a>.<\/p>\n<p>E sim, \u00e9 f\u00e1cil obter todas as informa\u00e7\u00f5es personalizadas para uma \u00fanica postagem. Mas se voc\u00ea estiver trabalhando em um projeto em que precisa recuperar todos os campos personalizados, ou seja, aqueles que s\u00e3o privados, precisar\u00e1 verificar se est\u00e1 consultando strings que come\u00e7am com um sublinhado.<\/p>\n<p>Ent\u00e3o, para carregar todos os campos personalizados do WordPress no banco de dados, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/206b5b224488db5ba5e28ee106286695\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">aqui est\u00e1 a consulta que uso<\/a> :<\/p>\n<pre><code>&lt;?php\n\nfunction get_the_custom_fields() {\n\n    global $wpdb;\n\n    $results = $wpdb-&gt;get_results(\n        $wpdb-&gt;prepare(\n            \"\n            SELECT meta_key, meta_value\n            FROM   $wpdb-&gt;postmeta\n            WHERE  meta_key REGEXP '%s'\n            \", '^[_]') );\n\n    return $results;\n}\n<\/code><\/pre>\n<p>Algumas coisas a serem observadas sobre a consulta acima:<\/p>\n<ul>\n<li>Estou usando a fun\u00e7\u00e3o <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wpdb\/prepare\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">prepare<\/a> antes de <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wpdb\/get_results\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_results<\/a>. Isso \u00e9 para parametriza\u00e7\u00e3o e seguran\u00e7a. Se \u00e9 novo para voc\u00ea, recomendo a leitura <a href=\"https:\/\/codex.wordpress.org\/Class_Reference\/wpdb#Protect_Queries_Against_SQL_Injection_Attacks\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">deste artigo<\/a>.<\/li>\n<li>Isso retorna todas as meta-chaves e meta-valores em uma matriz,<\/li>\n<li>Dependendo de quantos registros voc\u00ea deseja retornar, isso pode levar algum tempo (e talvez deva ser feito em lotes).<\/li>\n<\/ul>\n<p>Finalmente, para quem est\u00e1 curioso, os \u00edndices n\u00e3o existem na coluna meta_value, mas sim na coluna meta_key.<\/p>\n<p>As colunas na tabela Post Meta com \u00edndices.<\/p>\n<p>Portanto, se voc\u00ea optar por modificar a consulta e quiser usar colunas que tenham \u00edndices, consulte meta_id, post_id e meta_key.<\/p>\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>Usando uma consulta direta ao banco de dados, voc\u00ea pode carregar todos os campos personalizados do WordPress. Veja como fazer isso de maneira segura.<\/p>\n","protected":false},"author":1,"featured_media":220737,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[898,722,867],"tags":[1170],"class_list":["post-229281","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-2","category-desenvolvedor","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229281","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=229281"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229281\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/220737"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=229281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=229281"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=229281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}