{"id":230303,"date":"2022-11-17T11:10:00","date_gmt":"2022-11-17T08:10:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230303"},"modified":"2022-11-17T11:18:19","modified_gmt":"2022-11-17T08:18:19","slug":"creazione-di-componenti-jquery-in-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/creazione-di-componenti-jquery-in-wordpress\/","title":{"rendered":"Creazione di componenti jQuery in WordPress"},"content":{"rendered":"\n<p>Lo sviluppo del front-end ha fatto grandi passi avanti negli ultimi due anni (e continua a farlo) attraverso l&#8217;uso di <a href=\"http:\/\/sass-lang.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">preprocessori CSS<\/a> e varie tecnologie basate su JavaScript.<\/p>\n<p>La cosa bella \u00e8 che tutti questi possono ancora essere utilizzati nel contesto dello sviluppo di WordPress; tuttavia, poich\u00e9 WordPress include jQuery, non \u00e8 raro continuare a scrivere JavaScript basato su jQuery.<\/p>\n<p>Nonostante tutte le varie tecnologie (come <a href=\"https:\/\/angular.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Angular<\/a>, <a href=\"https:\/\/vuejs.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Vue<\/a>, <a href=\"https:\/\/reactjs.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">React<\/a>, ecc.), mi ritrovo ancora a utilizzare <a href=\"https:\/\/jquery.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">jQuery<\/a> ed <a href=\"https:\/\/es6.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ES6<\/a> pi\u00f9 di altre librerie e strumenti.<\/p>\n<p>Per le attivit\u00e0 semplici, non \u00e8 un problema, ma quando \u00e8 necessario, ad esempio, creare componenti pi\u00f9 avanzati basati sulla risposta di una chiamata API, l&#8217;utilizzo di jQuery pu\u00f2 essere un po&#8217; pesante.<\/p>\n<p>Ci\u00f2 non significa che non possa essere utilizzato &#8211; e illustrer\u00f2 come utilizzarlo per creare componenti momentaneamente in modo dinamico &#8211; ma penso che rappresenti un caso in cui le altre opzioni sono pi\u00f9 variabili.<\/p>\n<p>Ma ne parleremo pi\u00f9 alla fine del post.<\/p>\n<h2>Creazione di componenti jQuery in WordPress<\/h2>\n<p>Ogni volta che mi riferisco all&#8217;idea di un componente, penso a una combinazione di elementi che lavorano insieme per creare un elemento pi\u00f9 complesso.<\/p>\n<p>Ad esempio, supponiamo di effettuare una chiamata API e quindi, utilizzando la risposta, \u00e8 necessario creare un componente composto da altri elementi.<\/p>\n<h3>Definizione e disegno di un componente<\/h3>\n<p>Quindi, per cominciare, penso che sia un buon modo per definire un componente: un elemento composto da una combinazione di elementi.<\/p>\n<p>Almeno questo \u00e8 quello che user\u00f2 per questo particolare post.<\/p>\n<p>Quindi, come potremmo visualizzarlo in termini prima di codificarlo? Forse qualcosa del genere:<\/p>\n<p>Ancora una volta, tutto questo si basa sull&#8217;idea di fare una richiesta API e lavorare sui dati.<\/p>\n<h3>Effettuare la chiamata API<\/h3>\n<p>Fare una chiamata API utilizzando l&#8217;API di WordPress \u00e8 qualcosa che ho trattato in alcuni post (e se stai cercando il modo pi\u00f9 sicuro per farlo, ti consiglio di leggere <a href=\"https:\/\/wordpress.mediadoma.com\/it\/invio-di-richieste-ajax-sicure-in-wordpress-con-nonces\/\" title=\"questo post\">questo post<\/a> ).<\/p>\n<p>Ma il flusso di controllo sarebbe simile a questo:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165318-61e77cd5dc522.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-165318-61e77cd5dc522.png\" alt=\"Creazione di componenti jQuery in WordPress\"><\/a><\/p>\n<p>E il codice per farlo sarebbe <a href=\"https:\/\/gist.github.com\/tommcfarlin\/3d708d486ef8cbcbdb5c6cf932b6e9c7#file-00-request-js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">simile a questo<\/a> :<\/p>\n<pre><code>$.get(acme_ajax_object.ajax_url, {\n\n  action:   'get_data',\n  security: acme_ajax_object.security\n\n}, function(response) {\n\n  \/\/ More to come...\n\n});<\/code><\/pre>\n<p>Ma questo non ci porta ancora al punto di costruire il componente dalla risposta.<\/p>\n<h3>Lavorare con la risposta<\/h3>\n<p>Questo bit successivo \u00e8 tutto il modo in cui scegli di scrivere il tuo JavaScript. Non sto affermando che il modo in cui lo faccio \u00e8 il modo per farlo, ma \u00e8 un modo per farlo.<\/p>\n<p>Ad ogni modo, per questo post supponiamo che recupereremo alcuni dati dall&#8217;API e che abbiamo la garanzia di averli (questo ci impedisce di dover scrivere clausole di guardia).<\/p>\n<p>Inoltre, ci consente di popolare le variabili necessarie per costruire il nostro componente. Pertanto, sto mantenendo il codice il <a href=\"https:\/\/gist.github.com\/tommcfarlin\/3d708d486ef8cbcbdb5c6cf932b6e9c7#file-01-response-js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">pi\u00f9 snello possibile<\/a>.<\/p>\n<pre><code>var $container = $('#component-container'),\n    i, l       = 0;\n\n$.get(acme_ajax_object.ajax_url, {\n\n  action:   'get_data',\n  security: acme_ajax_object.security\n\n}, function( response) {\n\n  for( i = 0, l = response.data.length; i &lt; l; i++) {\n    $container.append(\n      _createComponent(response.data[i])\n    );\n  }\n\n});<\/code><\/pre>\n<p>Da qui, ora possiamo impostare un metodo che creer\u00e0 un componente e restituir\u00e0 il risultato che ci consentir\u00e0 di aggiungerlo al DOM.<\/p>\n<h3>Mettere tutto insieme<\/h3>\n<p>Sulla base del codice sopra, dovrebbe essere relativamente chiaro cosa devi fare per creare il componente.<\/p>\n<p>Tuttavia, mettere tutto insieme \u00e8 un processo che richiede quanto segue:<\/p>\n<ol>\n<li>facendo la richiesta,<\/li>\n<li>leggendo la risposta,<\/li>\n<li>costruire un componente in base alla risposta<\/li>\n<\/ol>\n<pre><code>\/**\n * Creates a component to be added from the DOM based on the incoming data.\n *\n * For the purposes of this function, we're assuming there are several properties\n * on data of which we're already aware.\n *\n * @param data  The object containing the properties we need for the component.\n *\n * @return      The component created from the incoming data.\n *\/\nfunction _createComponent(data) {\n\n  var title       = data.title,\n      imageUrl    = data.imageUrl,\n      description = data.description,\n      $component  = $('&lt;div &gt;&lt;\/div&gt;');\n\n  $component\n    .append(\n      $('&lt;p &gt;&lt;\/p&gt;').text(title)) .append(\n      $('&lt;img \/&gt;').attr('src', imageUrl)) .append(\n      $('&lt;p &gt;&lt;\/p&gt;').text(description)\n    );\n\n  return $component;\n}<\/code><\/pre>\n<p>Il codice sopra dovrebbe essere autoesplicativo, ma in caso contrario sta facendo <a href=\"https:\/\/gist.github.com\/tommcfarlin\/3d708d486ef8cbcbdb5c6cf932b6e9c7#file-02-create-component-js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">quanto segue<\/a> :<\/p>\n<ol>\n<li>Prendendo informazioni dalla risposta come il titolo, l&#8217;URL dell&#8217;immagine e la descrizione,<\/li>\n<li>creando elementi di ciascuno di essi,<\/li>\n<li>aggiungendoli a un elemento <strong>div<\/strong><\/li>\n<li>restituendo l&#8217;\u00a0 elemento <strong>div<\/strong> dopo che i vari pezzi sono stati aggiunti ad esso.<\/li>\n<\/ol>\n<p>Da l\u00ec, puoi quindi prendere l&#8217;elemento &#8211; il componente &#8211; e aggiungerlo a un contenitore (come mostrato in precedenza nel codice) e quindi continuare a farlo con il resto delle informazioni dalla risposta.<\/p>\n<h2>Utilizzi altre tecnologie JavaScript?<\/h2>\n<p>Come accennato all&#8217;inizio del post, questo \u00e8 molto lavoro per quanto riguarda jQuery per creare un componente da aggiungere al DOM.<\/p>\n<p>Combina questo con la natura reattiva (non reattiva in termini di design mobile ma in termini di parti di un display che rispondono ai cambiamenti nel livello di presentazione) e hai un buon motivo per utilizzare una tecnologia diversa per fare qualcosa del genere.<\/p>\n<p>Tuttavia, ci sono quei progetti che richiederanno un determinato stack e se jQuery fa parte di quello stack, allora questo \u00e8 un modo per andare avanti e fare proprio questo.<\/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>Sebbene altre tecnologie possano essere pi\u00f9 adatte a questo, ecco come creare componenti jQuery in WordPress da utilizzare quando si lavora con Ajax.<\/p>\n","protected":false},"author":1,"featured_media":224394,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[918,731,720,844],"tags":[1168],"class_list":["post-230303","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-altro","category-javascript-6","category-sviluppatore","category-tutorial","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230303","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=230303"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230303\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/224394"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=230303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=230303"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=230303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}