{"id":229437,"date":"2022-10-27T09:13:00","date_gmt":"2022-10-27T06:13:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229437"},"modified":"2022-11-09T07:03:01","modified_gmt":"2022-11-09T04:03:01","slug":"associazione-di-metadati-di-wordpress-entita-correlate","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/associazione-di-metadati-di-wordpress-entita-correlate\/","title":{"rendered":"Associazione di metadati di WordPress: entit\u00e0 correlate"},"content":{"rendered":"\n<p>A questo punto, abbiamo spiegato come creare le entit\u00e0 all&#8217;interno del plugin (che, come abbiamo detto, \u00e8 solo una parola di fantasia per un&#8217;altra idea concreta). Vale a dire, abbiamo un utente e un tipo di post personalizzato o un libro. Ed \u00e8 qui che iniziamo a prendere le due entit\u00e0 separate e a combinare e lavorare con quella che chiameremo associazione di metadati di WordPress.<\/p>\n<p>Ma prima di farlo, \u00e8 importante capire i due tipi di metadati con cui lavoreremo e i due modi (o tre modi, a seconda di come li guardi) in come possiamo associare i metadati.<\/p>\n<p>Come per il resto dei post della serie, questo non vuole essere un approfondimento nella comprensione di ciascuna delle tabelle o un approfondimento in ciascuna delle funzioni dell&#8217;API. Invece, esamineremo ci\u00f2 che \u00e8 disponibile, lo metteremo in uso e lasceremo dettagli pi\u00f9 fini per post futuri (o forse discussioni nei commenti).<\/p>\n<h2>Associazione di metadati di WordPress<\/h2>\n<p>I metadati non sono esclusivi di WordPress. Probabilmente lo sai. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Metadata\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Ed \u00e8 spesso definito come<\/a> :<\/p>\n<blockquote>\n<p>Informazioni su informazioni o dati su dati.<\/p>\n<\/blockquote>\n<p>E questo \u00e8 un buon modo per dirlo. WordPress offre alcune tabelle di database diverse che possiamo utilizzare per fornire informazioni su determinati altri tipi di entit\u00e0 all&#8217;interno di WordPress. Ne useremo un paio pi\u00f9 avanti in questo post, ma basti dire che <a href=\"https:\/\/codex.wordpress.org\/Database_Description\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress offre<\/a> :<\/p>\n<ul>\n<li>metadati dei commenti,<\/li>\n<li>postare i metadati,<\/li>\n<li>metadati a termine,<\/li>\n<li>e metadati dell&#8217;utente<\/li>\n<\/ul>\n<p>E tutto questo \u00e8 disponibile out-of-the-box.<\/p>\n<p>Una delle tabelle di metadati di WordPress.<\/p>\n<p>Le API per ciascuno di questi sono coerenti, il che \u00e8 anche bello. Ma, ancora una volta, ci occuperemo solo di un paio di questi per il resto di questo post.<\/p>\n<h3>1 Le tabelle dei metadati<\/h3>\n<p>Per il nostro esempio, utilizzeremo una o entrambe delle seguenti due tabelle:<\/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_utentemeta<\/a><\/li>\n<\/ol>\n<p>Certo, nella tua installazione potrebbero avere un prefisso diverso, ma il suffisso \u00e8 lo stesso e ti fai un&#8217;idea.<\/p>\n<p>In secondo luogo, utilizzeremo le relative funzioni API per associare i nostri metadati. Li esamineremo nel codice quando associamo i dati tra il nostro utente e il tipo di post personalizzato (o il nostro autore e i nostri libri se desideri utilizzare una terminologia pi\u00f9 accurata).<\/p>\n<p>Va bene, allora. L&#8217;intera prima parte del post sta solo gettando le basi per quali parti dell&#8217;infrastruttura WordPress sottostante utilizzeremo. Detto questo, diamo un&#8217;occhiata a come possiamo trasformare programmaticamente questa cosa in qualcosa di un po&#8217; pi\u00f9 utile.<\/p>\n<h3>2 Associazione dei metadati<\/h3>\n<p>L&#8217;idea alla base dell&#8217;associazione dei metadati di WordPress sembra pi\u00f9 complicata di quanto non sia. Pensare in questo modo:<\/p>\n<ul>\n<li>Date due tabelle, come possiamo condividere informazioni tra due entit\u00e0 che fanno conoscere l&#8217;una all&#8217;altra?<\/li>\n<\/ul>\n<p>Ad esempio, dato un utente, come possiamo far conoscere ai metadati dell&#8217;utente i metadati dei post. Oppure, ribaltando la situazione, come possiamo far sapere ai metadati dei post qualcosa sui metadati degli utenti correlati?<\/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=\"Associazione di metadati di WordPress: entit\u00e0 correlate\" ><\/a><\/p>\n<p>Ad alto livello, questo \u00e8 davvero quello che stiamo facendo: stiamo facendo sapere a un&#8217;entit\u00e0 che l&#8217;altra esiste e la stiamo mettendo in relazione con l&#8217;altra. Oppure potrebbe andare dall&#8217;altra parte. A seconda dell&#8217;implementazione, uno potrebbe essere pi\u00f9 vantaggioso dell&#8217;altro.<\/p>\n<h4>1 unidirezionale<\/h4>\n<p>Quando si parla di creare associazioni WordPress unidirezionali, di solito si parla dell&#8217;idea che solo un&#8217;entit\u00e0 sia a conoscenza dell&#8217;altra. Ci\u00f2 significa che l&#8217;utente pu\u00f2 essere solo a conoscenza del post.<\/p>\n<p>Quindi potremmo impostare dopo che un post \u00e8 stato creato come l&#8217;utente in questione \u00e8 a conoscenza del post che \u00e8 stato <a href=\"https:\/\/gist.github.com\/tommcfarlin\/c1245410fdf288edd11c9547711dd76c#file-01-post-aware-of-user-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">appena creato<\/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>O forse significa che il post \u00e8 a conoscenza dell&#8217;utente:<\/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>Ma non importa come la guardi, l&#8217;associazione va solo in un modo.<\/p>\n<p>E anche se la relazione va in un modo, non deve essere cos\u00ec. Cio\u00e8, entrambe le entit\u00e0 possono essere consapevoli l&#8217;una dell&#8217;altra.<\/p>\n<h4>2 Bidirezionale<\/h4>\n<p>Poich\u00e9 le API dei metadati sono cos\u00ec facili e coerenti con cui lavorare, non \u00e8 difficile lavorarci. Ciascuno di solito richiede almeno due dei seguenti:<\/p>\n<ol>\n<li>un ID di sorta a cui sono correlati i metadati,<\/li>\n<li>una meta chiave che pu\u00f2 essere utilizzata per cercare le informazioni,<\/li>\n<li>un valore che memorizza le informazioni associate all&#8217;ID e al post.<\/li>\n<\/ol>\n<p>Per quanto riguarda l&#8217;ID e la chiave che scegli spesso dipende dalla tua implementazione, come abbiamo visto.<\/p>\n<p>Fino a questo punto, abbiamo visto come creare un&#8217;associazione unidirezionale. Un&#8217;associazione a due vie non \u00e8 niente di diverso. \u00c8 solo piuttosto che rendere un&#8217;entit\u00e0 consapevole dell&#8217;altra, rendiamo entrambe le entit\u00e0 consapevoli dell&#8217;altra:<\/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>Ma questa non \u00e8 una decisione che dovrebbe essere presa solo per il gusto di farlo. Invece, vale la pena pensare ad alcuni dei motivi per cui potresti voler scegliere l&#8217;uno o l&#8217;altro.<\/p>\n<h3>Pensare attraverso il problema<\/h3>\n<p>Quando si tratta di risolvere problemi come questo, non c&#8217;\u00e8 una soluzione definitiva in termini di &quot;dovresti definirlo [in questo modo]&quot; in qualunque modo possa essere. Invece, devi porsi domande come &quot;cosa rende il modo pi\u00f9 semplice per gestire questi dati?&quot;<\/p>\n<p>Ad esempio, se sei principalmente interessato alla gestione degli utenti, forse tutto ci\u00f2 di cui hai bisogno \u00e8 che i metadati degli utenti siano a conoscenza di qualsiasi entit\u00e0 a cui sono correlati. In questo modo, quando l&#8217;utente viene eliminato, assicurati anche di cercare le entit\u00e0 ad esso correlate tramite la tabella dei metadati dell&#8217;utente ed eliminarle anche loro.<\/p>\n<p>Allo stesso modo, forse la stessa funzionalit\u00e0 andrebbe in entrambi i modi. Cio\u00e8, proprio come vuoi assicurarti che quando un utente viene eliminato, anche i suoi post vengano eliminati, potresti anche voler eliminare (o modificare) l&#8217;utente ogni volta che uno dei suoi post viene rimosso. E se \u00e8 cos\u00ec, allora l&#8217;associazione a due vie lo consente.<\/p>\n<p>Dal momento che hai l&#8217;ID di un determinato post e l&#8217;ID di un determinato utente, nonch\u00e9 le meta chiavi che hai specificato, \u00e8 possibile quasi qualsiasi tipo di query che puoi visualizzare tramite l&#8217;API dei metadati di WordPress o WP_Query <a href=\"https:\/\/codex.wordpress.org\/Class_Reference\/WP_Query\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">o<\/a> anche tramite <a href=\"https:\/\/codex.wordpress.org\/Class_Reference\/WP_User_Query\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_User_Query<\/a>.<\/p>\n<h2>La fine<\/h2>\n<p>In definitiva, spero che questa serie abbia fornito alcune informazioni su come creare non solo associazioni di metadati di WordPress, ma anche su come pensare in modo astratto ai concetti all&#8217;interno di WordPress in relazione alla creazione di implementazioni di livello superiore nei plug-in e nelle applicazioni Web.<\/p>\n<p>Per coloro che sono interessati, sto pensando di rilasciare questa serie come una piccola risorsa in formato PDF insieme a un plug-in funzionante da studiare. Se questo \u00e8 qualcosa che ti interessa fare, allora iscriviti alla mailing list qui, e sar\u00f2 sicuro di farti sapere quando sar\u00e0 pronta; in caso contrario, usa le informazioni nella serie per andare avanti e creare qualcosa che valga la pena<\/p>\n<h3>Voglio di pi\u00f9?<\/h3>\n<h2>Messaggi di serie<\/h2>\n<ol>\n<li><a href=\"https:\/\/tommcfarlin.com\/wordpress-metadata-association\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Associazione di metadati di WordPress: come farlo<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/it\/creazione-programmatica-di-utenti-wordpress\/\" title=\"Creazione programmatica di utenti WordPress\">Creazione programmatica di utenti WordPress<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/it\/tipi-di-post-di-wordpress-unastrazione-per-le-entita\/\" title=\"Tipi di post di WordPress: un&#039;astrazione per le entit\u00e0\">Tipi di post di WordPress: un&#8217;astrazione per le entit\u00e0<\/a><\/li>\n<li><a href=\"https:\/\/tommcfarlin.com\/wordpress-metadata-association-entities\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Associazione di metadati di WordPress: entit\u00e0 correlate<\/a><\/li>\n<\/ol>\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>\u00c8 qui che iniziamo a prendere le due entit\u00e0 separate e a combinare e lavorare con quella che chiameremo associazione di metadati di 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":[896,720,844,865],"tags":[1168,1168],"class_list":["post-229437","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-sviluppatore","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229437","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=229437"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229437\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/220451"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=229437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=229437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=229437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}