{"id":229514,"date":"2022-10-28T11:22:00","date_gmt":"2022-10-28T08:22:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229514"},"modified":"2022-11-09T08:16:19","modified_gmt":"2022-11-09T05:16:19","slug":"carica-tutti-i-campi-personalizzati-di-wordpress-tramite-la-query-del-database","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/carica-tutti-i-campi-personalizzati-di-wordpress-tramite-la-query-del-database\/","title":{"rendered":"Carica tutti i campi personalizzati di WordPress tramite la query del database"},"content":{"rendered":"<p>Quando recupero informazioni dal database di WordPress, preferisco evitare di utilizzare query dirette al database, ma ci sono momenti in cui possono essere utili (ed \u00e8 importante che sia fatto bene).<\/p>\n<p>Un caso d&#8217;uso in cui potrebbe essere utile \u00e8 quando \u00e8 necessario recuperare un insieme di dati di un singolo tipo. Esempio calzante: supponiamo che tu debba caricare tutti i campi personalizzati di WordPress.<\/p>\n<p>Al momento in cui scrivo, non c&#8217;\u00e8 alcuna funzione di cui sono a conoscenza che lo far\u00e0, quindi ecco come interrogo il database per farlo.<\/p>\n<h2>Carica tutti i campi personalizzati di WordPress<\/h2>\n<p>Ci sono diverse cose da notare sui campi personalizzati associati a un determinato post:<\/p>\n<ul>\n<li>i campi personalizzati sono memorizzati nei metadati del post,<\/li>\n<li>i campi personalizzati sono considerati privati, quindi sono preceduti da un trattino basso,<\/li>\n<li>agli standard di codifica di WordPress non piacer\u00e0 (quindi potresti dover ignorare gli standard)<\/li>\n<\/ul>\n<p>Puoi leggere tutto su di loro nel <a href=\"https:\/\/codex.wordpress.org\/Custom_Fields\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Codex<\/a>.<\/p>\n<p>E s\u00ec, \u00e8 facile ottenere tutte le informazioni personalizzate per un singolo post. Ma se stai lavorando a un progetto in cui devi recuperare tutti i campi personalizzati, in particolare quelli privati, devi assicurarti di eseguire query per le stringhe che iniziano con un trattino basso.<\/p>\n<p>Quindi, per caricare tutti i campi personalizzati di WordPress nel database, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/206b5b224488db5ba5e28ee106286695\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ecco la query che utilizzo<\/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>Alcune cose da notare sulla query di cui sopra:<\/p>\n<ul>\n<li>Sto usando la funzione <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wpdb\/prepare\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">prepare<\/a> prima di <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wpdb\/get_results\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_results<\/a>. Questo \u00e8 per la parametrizzazione e la sicurezza. Se \u00e8 nuovo per te, ti consiglio di leggere <a href=\"https:\/\/codex.wordpress.org\/Class_Reference\/wpdb#Protect_Queries_Against_SQL_Injection_Attacks\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">questo articolo<\/a>.<\/li>\n<li>Questo restituisce tutte le meta chiavi e i meta valori in un array,<\/li>\n<li>A seconda del numero di record che desideri restituire, l&#8217;operazione potrebbe richiedere del tempo (e forse dovrebbe essere eseguita in batch).<\/li>\n<\/ul>\n<p>Infine, per chi \u00e8 curioso, gli indici non esistono nella colonna meta_value ma nella colonna meta_key.<\/p>\n<p>Le colonne nella tabella Post Meta con indici.<\/p>\n<p>Pertanto, se si sceglie di modificare la query e si desidera utilizzare colonne con indici, fare riferimento a meta_id, post_id e meta_key.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Utilizzando una query diretta del database, puoi caricare tutti i campi personalizzati di WordPress. Ecco come farlo in modo sicuro.<\/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":[896,720,865],"tags":[1168],"class_list":["post-229514","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-sviluppatore","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229514","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=229514"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229514\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/220737"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=229514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=229514"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=229514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}