{"id":229133,"date":"2022-10-28T11:25:00","date_gmt":"2022-10-28T08:25:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229133"},"modified":"2022-11-09T05:39:56","modified_gmt":"2022-11-09T02:39:56","slug":"charger-tous-les-champs-personnalises-wordpress-via-une-requete-de-base-de-donnees","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/charger-tous-les-champs-personnalises-wordpress-via-une-requete-de-base-de-donnees\/","title":{"rendered":"Charger tous les champs personnalis\u00e9s WordPress via une requ\u00eate de base de donn\u00e9es"},"content":{"rendered":"<p>Lors de la r\u00e9cup\u00e9ration d&rsquo;informations de la base de donn\u00e9es WordPress, je pr\u00e9f\u00e8re \u00e9viter d&rsquo;utiliser des requ\u00eates directes dans la base de donn\u00e9es, mais il y a des moments o\u00f9 elles peuvent \u00eatre utiles (et il est important que ce soit fait correctement).<\/p>\n<p>Un cas d&rsquo;utilisation dans lequel cela peut \u00eatre utile est lorsque vous devez r\u00e9cup\u00e9rer un ensemble de donn\u00e9es d&rsquo;un seul type. Exemple: Supposons que vous deviez charger tous les champs personnalis\u00e9s WordPress.<\/p>\n<p>Au moment d&rsquo;\u00e9crire ces lignes, il n&rsquo;y a aucune fonction dont je sache qui fera cela, alors voici comment j&rsquo;interroge la base de donn\u00e9es pour le faire.<\/p>\n<h2>Charger tous les champs personnalis\u00e9s WordPress<\/h2>\n<p>Il y a plusieurs choses \u00e0 noter concernant les champs personnalis\u00e9s associ\u00e9s \u00e0 une publication donn\u00e9e\u00a0:<\/p>\n<ul>\n<li>les champs personnalis\u00e9s sont stock\u00e9s dans les m\u00e9tadonn\u00e9es post,<\/li>\n<li>les champs personnalis\u00e9s sont consid\u00e9r\u00e9s comme priv\u00e9s, ils sont donc pr\u00e9c\u00e9d\u00e9s d&rsquo;un trait de soulignement,<\/li>\n<li>les normes de codage WordPress n&rsquo;aimeront pas cela (vous devrez donc peut-\u00eatre ignorer les normes)<\/li>\n<\/ul>\n<p>Vous pouvez tout lire \u00e0 leur sujet dans <a href=\"https:\/\/codex.wordpress.org\/Custom_Fields\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">le Codex<\/a>.<\/p>\n<p>Et oui, il est facile d&rsquo;obtenir toutes les informations personnalis\u00e9es pour un seul message. Mais si vous travaillez sur un projet o\u00f9 vous devez r\u00e9cup\u00e9rer tous les champs personnalis\u00e9s, \u00e0 savoir ceux qui sont priv\u00e9s, vous devez vous assurer que vous recherchez des cha\u00eenes commen\u00e7ant par un trait de soulignement.<\/p>\n<p>Donc pour charger tous les champs personnalis\u00e9s WordPress dans la base de donn\u00e9es, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/206b5b224488db5ba5e28ee106286695\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">voici la requ\u00eate que j&rsquo;utilise<\/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>Quelques points \u00e0 noter \u00e0 propos de la requ\u00eate ci-dessus\u00a0:<\/p>\n<ul>\n<li>J&rsquo;utilise la fonction <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wpdb\/prepare\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">prepare<\/a> avant <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wpdb\/get_results\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_results<\/a>. C&rsquo;est pour le param\u00e9trage et la s\u00e9curit\u00e9. Si c&rsquo;est nouveau pour vous, je vous recommande de lire <a href=\"https:\/\/codex.wordpress.org\/Class_Reference\/wpdb#Protect_Queries_Against_SQL_Injection_Attacks\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cet article<\/a>.<\/li>\n<li>Cela renvoie toutes les m\u00e9ta-cl\u00e9s et les m\u00e9ta-valeurs dans un tableau,<\/li>\n<li>Selon le nombre d&rsquo;enregistrements que vous cherchez \u00e0 renvoyer, cela peut prendre un certain temps (et devrait peut-\u00eatre \u00eatre fait par lots).<\/li>\n<\/ul>\n<p>Enfin, pour les curieux, les index n&rsquo;existent pas sur la colonne meta_value mais existent sur la colonne meta_key.<\/p>\n<p>Les colonnes de la table Post Meta avec index.<\/p>\n<p>Donc, si vous choisissez de modifier la requ\u00eate et que vous cherchez \u00e0 utiliser des colonnes qui ont des index, reportez-vous \u00e0 meta_id, post_id et meta_key.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00c0 l&rsquo;aide d&rsquo;une requ\u00eate directe dans la base de donn\u00e9es, vous pouvez charger tous les champs personnalis\u00e9s WordPress. Voici comment proc\u00e9der en toute s\u00e9curit\u00e9.<\/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":[893,717,862],"tags":[1167],"class_list":["post-229133","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229133","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=229133"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229133\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/220737"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=229133"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=229133"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=229133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}