{"id":229430,"date":"2022-10-26T16:26:00","date_gmt":"2022-10-26T13:26:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229430"},"modified":"2022-11-09T07:03:13","modified_gmt":"2022-11-09T04:03:13","slug":"tipi-di-post-di-wordpress-unastrazione-per-le-entita","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/tipi-di-post-di-wordpress-unastrazione-per-le-entita\/","title":{"rendered":"Tipi di post di WordPress: un&#8217;astrazione per le entit\u00e0"},"content":{"rendered":"\n<p>Quando i programmatori parlano di entit\u00e0, di solito parlano di un concetto o qualcosa che ha un&#8217;esistenza all&#8217;interno di un sistema. A volte \u00e8 una classe, a volte \u00e8 una libreria o una dipendenza, oppure potrebbe essere qualcosa come i tipi di post di WordPress.<\/p>\n<p>Se WordPress deve essere considerato come una <a href=\"https:\/\/tommcfarlin.com\/web-application-foundation\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">base dell&#8217;applicazione (rispetto a un framework)<\/a>, \u00e8 importante pensare a determinate funzionalit\u00e0 in modi che possono essere trattati come entit\u00e0. Nell&#8217;esempio sopra, un tipo di post \u00e8 proprio questo.<\/p>\n<p>Quando sono stati introdotti i tipi di post personalizzati, <a href=\"https:\/\/make.wordpress.org\/training\/handbook\/theme-school\/custom-post-types\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ci ha fornito un modo<\/a> per introdurre nell&#8217;applicazione qualcosa di diverso dalle pagine e dai post. Ora possiamo implementare qualsiasi concetto, come un <a href=\"https:\/\/wordpress.mediadoma.com\/it\/interrogazione-di-tipi-di-post-di-eventi-con-wp-query-e-the-event-calendar\/\" title=\"evento\">evento<\/a>, e trattarlo come una propria entit\u00e0 all&#8217;interno del sistema.<\/p>\n<p>Ma quando tutto \u00e8 stato detto e fatto, \u00e8 tutto salvato nella tabella dei post. E va bene perch\u00e9 lo sviluppo del software \u00e8 tutto basato sull&#8217;astrazione. Mentre implementiamo i tipi di post di WordPress, stiamo implementando un&#8217;astrazione in cima all&#8217;idea di post.<\/p>\n<h2>Tipi di post di WordPress<\/h2>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/it\/creazione-programmatica-di-utenti-wordpress\/\" title=\"Nell&#039;ultimo post\">Nell&#8217;ultimo post<\/a>, ho seguito il processo di creazione di un utente che sar\u00e0 associato a qualche entit\u00e0 nell&#8217;applicazione WordPress.<\/p>\n<ul>\n<li>Forse \u00e8 l&#8217;autore di un post,<\/li>\n<li>Forse \u00e8 il venditore di un prodotto,<\/li>\n<li>Forse \u00e8 il narratore di una storia,<\/li>\n<li>O qualsiasi altra cosa tu possa immaginare.<\/li>\n<\/ul>\n<p>Le possibilit\u00e0 sono infinite. Ma prima di parlare di come creare un&#8217;associazione tra le due entit\u00e0, ovvero l&#8217;utente e il tipo di post di WordPress, dobbiamo parlare di come implementare un&#8217;entit\u00e0 o un tipo di post personalizzato in modo programmatico.<\/p>\n<p>C&#8217;\u00e8 molta documentazione su questo, e ci sono molti tutorial disponibili su questo, quindi non ho intenzione di soffermarmi sul punto. Invece, cercher\u00f2 di mantenerlo il pi\u00f9 semplice possibile. Ricorda, l&#8217;obiettivo di tutta questa serie \u00e8 di arrivare al punto in cui stiamo associando entit\u00e0 tramite metadati.<\/p>\n<p>Ma prima di farlo, dobbiamo creare le entit\u00e0. Quindi, abbiamo un utente, quindi facciamolo.<\/p>\n<p>Per il nostro esempio, supponiamo che l&#8217;utente che abbiamo creato nel post precedente, Meghan, sia l&#8217;autore di un libro. E all&#8217;interno di un&#8217;installazione di WordPress gestita da qualcun altro, c&#8217;\u00e8 un tipo di post personalizzato per i libri, ognuno dei quali ha alcuni attributi:<\/p>\n<ul>\n<li>titolo,<\/li>\n<li>descrizione,<\/li>\n<li>data di pubblicazione,<\/li>\n<li>ISBN,<\/li>\n<li>numero di copie iniziali vendute,<\/li>\n<li>dove pu\u00f2 essere acquistato,<\/li>\n<li>e cos\u00ec via.<\/li>\n<\/ul>\n<p>Puoi aggiungere pi\u00f9 o meno alla tua implementazione. In effetti, forse sei nel settore della vendita di eBook e l&#8217;URL del libro per l&#8217;acquisto \u00e8 uno degli attributi. In ogni caso, hai un&#8217;idea.<\/p>\n<p>Detto questo, possiamo implementare un semplice tipo di post personalizzato per i &quot;libri&quot; in modo programmatico.<\/p>\n<h3>Implementazione di un tipo di post<\/h3>\n<p>E questo assomiglia <a href=\"https:\/\/gist.github.com\/tommcfarlin\/17ab6e5d052da8d471b15cfd70ffa37c\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">a questo<\/a> :<\/p>\n<pre><code>&lt;?php\n\nadd_action( 'init', 'acme_create_book_post_type' );\n\/**\n * Creates a new custom post type called 'Book' using the smallest number of arguments\n * to prepare the post type.\n *\/\nfunction acme_create_book_post_type() {\n\n    $args = array(\n        'labels' =&gt; array(\n            'name'          =&gt; 'Books',\n            'singular_name' =&gt; 'Book',\n        ),\n        'public' =&gt; true,\n    );\n    register_post_type( 'acme_book', $args );\n}<\/code><\/pre>\n<p>Se leggi la documentazione sulla <a href=\"https:\/\/codex.wordpress.org\/Post_Types\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">creazione di tipi di post personalizzati<\/a>, non c&#8217;\u00e8 nulla di anormale in questo. Dovrebbe apparire esattamente come ti aspetteresti.<\/p>\n<p>Riguardo a dove crei questo dipende dalla natura del tuo progetto. Ci sono molte persone che cercheranno di trovarlo in un plug-in o di essere inserito in un tema. Non \u00e8 questo il luogo per discuterne. Basti dire che, per i miei scopi, presumo che faccia tutto parte dello stesso plugin del tutorial precedente.<\/p>\n<p>Inoltre, non sto divagando su tassonomie personalizzate, commenti o qualsiasi altro tipo di dati personalizzato che \u00e8 possibile associare a un tipo di post personalizzato.<\/p>\n<p>Da l\u00ec, diamo quindi un&#8217;occhiata a come appare nell&#8217;area di amministrazione di WordPress e come appare nel database.<\/p>\n<h3>Guarda dietro le quinte<\/h3>\n<p>Innanzitutto, ecco come appare (o dovrebbe apparire) nell&#8217;area di amministrazione di WordPress:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167618-61e7a62adc9ed.png\" 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-167618-61e7a62adc9ed.png\" alt=\"Tipi di post di WordPress: un&#039;astrazione per le entit\u00e0\" ><\/a><\/p>\n<p>E se guardi il database dopo aver creato una voce, vedrai qualcosa del genere:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167618-61e7a6307603a.png\" 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-167618-61e7a6307603a.png\" alt=\"Tipi di post di WordPress: un&#039;astrazione per le entit\u00e0\" ><\/a><\/p>\n<p>Ovviamente, ho limitato i record restituiti nel front-end del database filtrando i risultati per rendere lo screenshot pi\u00f9 facile da seguire.<\/p>\n<h2>Sui libri<\/h2>\n<p>E questo \u00e8 tutto, davvero. Voglio dire, al livello pi\u00f9 fondamentale \u00e8 cos\u00ec che crei un tipo di post personalizzato all&#8217;interno di WordPress. So che non \u00e8 una novit\u00e0, ma se potessi fare un caso leggermente pi\u00f9 forte per un post come questo, includerebbe i seguenti due punti.<\/p>\n<h4>1 Si tratta di astrazioni<\/h4>\n<p>Se stai cercando di creare applicazioni web utilizzando WordPress, \u00e8 importante smettere di pensare a cose in termini tradizionali come post, pagine, commenti e categorie e iniziare a considerarle come astrazioni pi\u00f9 generiche.<\/p>\n<p>Entit\u00e0, come accennato in precedenza nell&#8217;articolo. Una volta fatto, avrai un cambiamento nel modello mentale che guida la tua capacit\u00e0 di pensare e implementare una soluzione.<\/p>\n<h4>2 Si tratta di relazioni<\/h4>\n<p>Anche se spesso pensiamo alle cose nelle loro singole parti come post e pagine, sappiamo intrinsecamente che i post possono avere commenti, commenti possono avere risposte, pagine possono avere modelli e cos\u00ec via.<\/p>\n<p>Ci sono relazioni tra tutte queste cose individuali che fanno parte del sistema. E quando inizi a pensare alle relazioni come a qualcosa che ci permette di fare di pi\u00f9, inizi a vedere quanto pu\u00f2 essere potente qualcosa. \u00c8 intero &quot;il tutto \u00e8 maggiore della somma delle sue parti&quot;.<\/p>\n<p>Quindi, una volta che hai entit\u00e0 individuali a posto e una volta che inizi a vedere come possono relazionarsi tra loro, stai facendo un passo avanti nella creazione di qualcosa che risolva un problema leggermente pi\u00f9 complesso da parti apparentemente semplici.<\/p>\n<p>Ed \u00e8 l\u00ec che ci dirigeremo dopo.<\/p>\n<h2>E i metadati?<\/h2>\n<p>L&#8217;intero scopo di questa serie \u00e8 esaminare come creare un&#8217;associazione tra entit\u00e0, giusto? In particolare, stiamo cercando di creare un&#8217;associazione tra un utente e un post o, pi\u00f9 specificamente, un autore e un libro.<\/p>\n<p>WordPress fornisce le basi per farlo ed \u00e8 qui che pu\u00f2 entrare in gioco la potenza di tabelle e hook aggiuntivi. Nel prossimo post parler\u00f2 di come creare questa associazione, delle direzioni che possono andare le associazioni e di come lavorare con questi dati se, ad esempio, un utente viene eliminato dall&#8217;applicazione.<\/p>\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:\/\/tommcfarlin.com\/wordpress-post-types\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Tipi di post di WordPress: un&#8217;astrazione per le entit\u00e0<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/it\/associazione-di-metadati-di-wordpress-entita-correlate\/\" title=\"Associazione di metadati di WordPress: entit\u00e0 correlate\">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>Quando i programmatori parlano di entit\u00e0, di solito parlano di una singola parte all&#8217;interno di un sistema, come i tipi di post di WordPress.<\/p>\n","protected":false},"author":1,"featured_media":221177,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[918,896,720,844,865],"tags":[1168],"class_list":["post-229430","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-altro","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\/229430","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=229430"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229430\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/221177"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=229430"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=229430"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=229430"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}