{"id":228852,"date":"2022-10-28T11:21:00","date_gmt":"2022-10-28T08:21:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228852"},"modified":"2022-11-09T04:31:15","modified_gmt":"2022-11-09T01:31:15","slug":"cargue-todos-los-campos-personalizados-de-wordpress-a-traves-de-la-consulta-de-la-base-de-datos","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/cargue-todos-los-campos-personalizados-de-wordpress-a-traves-de-la-consulta-de-la-base-de-datos\/","title":{"rendered":"Cargue todos los campos personalizados de WordPress a trav\u00e9s de la consulta de la base de datos"},"content":{"rendered":"<p>A la hora de recuperar informaci\u00f3n de la base de datos de WordPress prefiero evitar hacer consultas directas a la base de datos, pero hay ocasiones en las que pueden ser \u00fatiles (y es importante que se haga bien).<\/p>\n<p>Un caso de uso en el que podr\u00eda ser \u00fatil es cuando necesita recuperar un conjunto de datos de un solo tipo. Caso en cuesti\u00f3n: digamos que necesita cargar todos los campos personalizados de WordPress.<\/p>\n<p>En el momento de escribir este art\u00edculo, no hay ninguna funci\u00f3n de la que tenga conocimiento que haga esto, as\u00ed que as\u00ed es como consulto la base de datos para hacerlo.<\/p>\n<h2>Cargar todos los campos personalizados de WordPress<\/h2>\n<p>Hay varias cosas a tener en cuenta sobre los campos personalizados que est\u00e1n asociados con una publicaci\u00f3n determinada:<\/p>\n<ul>\n<li>los campos personalizados se almacenan en los metadatos de la publicaci\u00f3n,<\/li>\n<li>los campos personalizados se consideran privados, por lo que tienen un prefijo con un gui\u00f3n bajo,<\/li>\n<li>a los est\u00e1ndares de codificaci\u00f3n de WordPress no les gustar\u00e1 esto (por lo que es posible que deba ignorar los est\u00e1ndares)<\/li>\n<\/ul>\n<p>Puedes leer todo sobre ellos en <a href=\"https:\/\/codex.wordpress.org\/Custom_Fields\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">el Codex<\/a>.<\/p>\n<p>Y s\u00ed, es f\u00e1cil obtener toda la informaci\u00f3n personalizada para una sola publicaci\u00f3n. Pero si est\u00e1 trabajando en un proyecto en el que necesita recuperar todos los campos personalizados, es decir, aquellos que son privados, debe asegurarse de que est\u00e1 consultando cadenas que comienzan con un gui\u00f3n bajo.<\/p>\n<p>Entonces, para cargar todos los campos personalizados de WordPress en la base de datos, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/206b5b224488db5ba5e28ee106286695\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">aqu\u00ed est\u00e1 la 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>Algunas cosas a tener en cuenta sobre la consulta anterior:<\/p>\n<ul>\n<li>Estoy usando la funci\u00f3n de <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wpdb\/prepare\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">preparaci\u00f3n<\/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>. Esto es para parametrizaci\u00f3n y seguridad. Si es nuevo para ti, te recomiendo leer <a href=\"https:\/\/codex.wordpress.org\/Class_Reference\/wpdb#Protect_Queries_Against_SQL_Injection_Attacks\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">este art\u00edculo<\/a>.<\/li>\n<li>Esto devuelve todas las claves meta y valores meta en una matriz,<\/li>\n<li>Seg\u00fan la cantidad de registros que desea devolver, esto puede llevar alg\u00fan tiempo (y tal vez deber\u00eda hacerse en lotes).<\/li>\n<\/ul>\n<p>Finalmente, para aquellos que tengan curiosidad, los \u00edndices no existen en la columna meta_value pero s\u00ed en la columna meta_key.<\/p>\n<p>Las columnas en la tabla Post Meta con \u00edndices.<\/p>\n<p>Entonces, si opta por modificar la consulta y est\u00e1 buscando usar columnas que tengan \u00edndices, consulte meta_id, post_id y meta_key.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mediante una consulta directa a la base de datos, puede cargar todos los campos personalizados de WordPress. Aqu\u00ed se explica c\u00f3mo hacerlo de una manera 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":[892,716,861],"tags":[1172],"class_list":["post-228852","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-desarrollador","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=228852"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228852\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/220737"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=228852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=228852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=228852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}