{"id":12206,"date":"2025-01-13T08:00:00","date_gmt":"2025-01-13T07:00:00","guid":{"rendered":"https:\/\/eugigufo.net\/it\/?page_id=12206"},"modified":"2025-12-20T23:50:01","modified_gmt":"2025-12-20T22:50:01","slug":"paragrafo38","status":"publish","type":"page","link":"https:\/\/eugigufo.net\/it\/inerario\/paragrafo38\/","title":{"rendered":"\u00a7 38. I meta tag delle pagine WordPress per il SEO"},"content":{"rendered":"<p>Ammetto subito di\u00a0non essere un\u00a0adepto della religione chiamata SEO: la\u00a0logica astratta e\u00a0l\u2019esperienza pratica mi\u00a0suggeriscono che un\u00a0sito costruito bene dal punto di\u00a0vista tecnico e\u00a0riempito di\u00a0contenuti e\/o funzionalit\u00e0 interessanti non pu\u00f2 non diventare popolare tra le\u00a0persone alle quali \u00e8\u00a0destinato (e\u00a0ognuno \u00e8\u00a0libero di\u00a0creare un\u00a0sito utile ad\u00a0appena due persone su\u00a0tutto il\u00a0pianeta). Allo stesso tempo, riconosco che spesso \u00e8\u00a0necessario mostrare al\u00a0cliente, al\u00a0capo o\u00a0al\u00a0proprio cervello pieno di\u00a0dubbi di\u00a0avere fatto tutto il\u00a0possibile per garantire al\u00a0sito costruito o\u00a0gestito una posizione alta tra i\u00a0risultati di\u00a0ricerca&#8230;<br \/>\nAlmeno in\u00a0questa sede evito di\u00a0raccontarvi dei vari riti quasi magici riguardanti il\u00a0modo di\u00a0scrivere i\u00a0testi o\u00a0di\u00a0inserire le\u00a0immagini.<br \/>\nVi\u00a0racconto, invece, quali meta tag sono da\u00a0inserire nei codici delle pagine del vostro sito per guadagnarsi\u00a0\u2013 come si\u00a0spera!\u00a0\u2013 una maggiore fiducia da\u00a0parte dei sistemi di\u00a0ricerca tipo Google\u00a0e, dunque, salire\u00a0\u2013 come si\u00a0spera! \u2013\u00a0pi\u00f9 in\u00a0alto possibile nella lista dei risultati mostrati agli utenti.<br \/>\nCome sostengono i\u00a0sacerdoti del SEO esperti, attualmente i\u00a0meta tag realmente utili non sono tanti: http-equiv, viewport, generator, title, author, copyright e\u00a0description.<\/p>\n<blockquote class=\"lyrotstup\"><p>Attenzione! Il\u00a0meta tag keywords \u00e8\u00a0al\u00a0giorno d\u2019oggi ritenuto dannoso perch\u00e9 a\u00a0partire dal\u00a02009 non viene pi\u00f9 preso in\u00a0considerazione (o\u00a0viene addirittura penalizzato) da\u00a0Google. Succede perch\u00e9 i\u00a0vari addetti al\u00a0SEO poco seri avevano esagerato con l\u2019utilizzo del keywords, assegnando alle pagine da\u00a0loro promosse delle parole-chiave popolari, ma\u00a0assolutamente estranee ai\u00a0contenuti reali delle pagine concrete.<\/p><\/blockquote>\n<p>Se\u00a0state leggendo questo paragrafo, molto probabilmente sapete gi\u00e0 cosa sono i\u00a0meta tag delle pagine web, ma\u00a0per sicurezza li\u00a0commento molto, molto brevemente. In\u00a0sostanza, sono dei tag (X)HTML &lt;meta&gt; che possono essere usati per specificare le\u00a0informazioni di\u00a0servizio su\u00a0una pagina web. Tali informazioni sono collocate all\u2019interno del contenitore &lt;head&gt;&#8230;&lt;\/head&gt; del codice della pagina e\u00a0non vengono mostrate all\u2019utente sullo schermo. Quei meta tag che ci\u00a0interessano ora sono i\u00a0seguenti:<br \/>\n\u2013\u00a0http-equiv\u00a0\u2013 il\u00a0tipo del documento inviato e\u00a0la\u00a0sua codifica;<br \/>\n\u2013\u00a0viewport\u00a0\u2013 i\u00a0dati sull\u2019impostazione del viewport (per il\u00a0corretto adattamento della pagina allo schermo sul quale viene visualizzata);<br \/>\n\u2013\u00a0generator\u00a0\u2013 il\u00a0tipo e\u00a0la\u00a0versione del CMS del sito;<br \/>\n\u2013\u00a0title\u00a0\u2013 il\u00a0titolo della pagina o\u00a0dell\u2019articolo (tecnicamente non \u00e8\u00a0un\u00a0meta tag, ma\u00a0\u00e8\u00a0un\u00a0parametro comunque molto utile dal punto di\u00a0vista del SEO);<br \/>\n\u2013\u00a0author\u00a0\u2013 l\u2019autore della pagina o\u00a0dell\u2019articolo;<br \/>\n\u2013\u00a0copyright\u00a0\u2013 il\u00a0copyright sui contenuti della pagina o\u00a0dell\u2019articolo;<br \/>\n\u2013\u00a0description\u00a0\u2013 la\u00a0descrizione della pagina web.<br \/>\nTutti i\u00a0tag appena elencati sono facilissimi da\u00a0inserire manualmente nei codici delle pagine di\u00a0un\u00a0sito fatto non con un\u00a0CMS, ma\u00a0con dei semplici file singoli: sicuramente lo\u00a0avete letto sui vari manuali di\u00a0HTML consultati all\u2019inizio della carriera. Ma\u00a0se\u00a0utilizziamo un\u00a0CMS come WordPress, non abbiamo un\u00a0codice separato per ogni pagina del sito, ma\u00a0solo i\u00a0template generici utilizzati per la\u00a0visualizzazione di\u00a0una qualsiasi quantit\u00e0 di\u00a0pagine. Di\u00a0conseguenza, ci\u00a0serve un\u00a0modo di\u00a0generare automaticamente i\u00a0meta tag in\u00a0base al\u00a0contenuto visualizzabile su\u00a0ogni singola pagina del sito.<br \/>\nPrima di\u00a0tutto aprite con il\u00a0vostro editor del codice il\u00a0file header.php del tema del vostro sito basato su\u00a0WordPress. Nel contenitore &lt;head&gt;&#8230;&lt;\/head&gt; da\u00a0qualche parte sar\u00e0 sicuramente presente questa riga:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 1; notranslate\" title=\"listing 1\">\n&amp;amp;lt;?php wp_head(); ?&amp;amp;gt;\n<\/pre>\n<p>Se\u00a0per qualche strano motivo manca, inseritela: vi\u00a0sar\u00e0 molto utile, praticamente indispensabile. La\u00a0sua presenza \u00e8\u00a0importante soprattutto perch\u00e9 si\u00a0tratta di\u00a0una funzione che automatizza la\u00a0comparsa dei meta tag viewport e\u00a0generator sempre aggiornati: non dobbiamo pi\u00f9 preoccuparci per questi due! Inoltre, tale funzione \u00abassorbe\u00bb\u00a0\u2013 come vedremo tra poco\u00a0\u2013 gli altri meta tag che creiamo noi e\u00a0li\u00a0inserisce nel codice della pagina dove e\u00a0quando serve.<br \/>\nAndiamo avanti. Sempre nel contenitore &lt;head&gt;&#8230;&lt;\/head&gt; ci\u00a0deve gi\u00e0 essere il\u00a0tag title. Nel caso di\u00a0un\u00a0sito realizzato con WordPress la\u00a0sua forma ottimale \u00e8\u00a0la\u00a0seguente, con le\u00a0variabili che assumono il\u00a0titolo della pagina (wp_title) e\u00a0il\u00a0nome del sito (bloginfo) che sicuramente sono stati creati nella admin del sito:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 2; notranslate\" title=\"listing 2\">\n&amp;amp;lt;title&amp;amp;gt;&amp;amp;lt;?php wp_title(&amp;amp;#039;&amp;amp;amp;laquo;&amp;amp;#039;, true, &amp;amp;#039;right&amp;amp;#039;); ?&amp;amp;gt; &amp;amp;lt;?php bloginfo(&amp;amp;#039;name&amp;amp;#039;); ?&amp;amp;gt;&amp;amp;lt;\/title&amp;amp;gt;\n<\/pre>\n<p>Ma\u00a0potete anche minimizzare, lasciando solo il\u00a0titolo della pagina o\u00a0dell\u2019articolo, senza il\u00a0nome del sito:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 3; notranslate\" title=\"listing 3\">\n&amp;amp;lt;title&amp;amp;gt;&amp;amp;lt;?php wp_title(&amp;amp;#039;&amp;amp;amp;laquo;&amp;amp;#039;, true, &amp;amp;#039;right&amp;amp;#039;); ?&amp;amp;gt;&amp;amp;lt;\/title&amp;amp;gt;\n<\/pre>\n<p>Molto probabilmente nel contenitore &lt;head&gt;&#8230;&lt;\/head&gt; del vostro tema \u00e8\u00a0gi\u00e0 presente anche il\u00a0meta tag http-equiv. Vi\u00a0dico, comunque, che la\u00a0sua forma ottimale \u00e8\u00a0questa:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 4; notranslate\" title=\"listing 4\">\n&amp;amp;lt;meta http-equiv=&amp;amp;quot;Content-Type&amp;amp;quot; content=&amp;amp;quot;&amp;amp;lt;?php bloginfo(&amp;amp;#039;html_type&amp;amp;#039;); ?&amp;amp;gt;; charset=&amp;amp;lt;?php bloginfo(&amp;amp;#039;charset&amp;amp;#039;); ?&amp;amp;gt;&amp;amp;quot; \/&amp;amp;gt;\n<\/pre>\n<p>Ora possiamo occuparci dei meta tag author e\u00a0copyright. Se\u00a0l\u2019autore\u00a0\/ proprietario del sito \u00e8\u00a0uno solo (e\u00a0se\u00a0siete sicuri che sar\u00e0 uno solo per sempre o\u00a0per molto tempo), possiamo non sforzarci troppo e\u00a0inserire i\u00a0rispettivi meta tag esattamente come lo\u00a0avremmo fatto su\u00a0un\u00a0sito realizzato senza alcun CMS. Quindi in\u00a0un\u00a0qualsiasi punto del contenitore &lt;head&gt;&#8230;&lt;\/head&gt; inseriamo questo codice:<\/p>\n<pre class=\"brush: xml; collapse: false; title: listing 5; notranslate\" title=\"listing 5\">\n&amp;amp;lt;meta name=&amp;amp;quot;author&amp;amp;quot; content=&amp;amp;quot;Eugi Gufo&amp;amp;quot; \/&amp;amp;gt;\n&amp;amp;lt;meta name=&amp;amp;quot;copyright&amp;amp;quot; content=&amp;amp;quot;Eugi Gufo&amp;amp;quot; \/&amp;amp;gt;\n<\/pre>\n<p>Ovviamente, non dimenticatevi di\u00a0cambiare i\u00a0valori del content&#8230;<br \/>\nSe, invece, volete una soluzione pi\u00f9 evoluta, quella che controlla il\u00a0nome dell\u2019autore di\u00a0ogni singolo articolo e\u00a0di\u00a0ogni singola pagina, dovete intervenire sul file functions.php del vostro file WordPress. In\u00a0un\u00a0qualsiasi punto di\u00a0quel file\u00a0\u2013 il\u00a0punto che vi\u00a0sembra pi\u00f9 logico o\u00a0pi\u00f9 comodo\u00a0\u2013 inserite la\u00a0seguente funzione:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 6; notranslate\" title=\"listing 6\">\nfunction meta_author_copyright() {\n    if ( is_single() || is_page() ) {\n        $author_name = get_the_author_meta( &amp;amp;#039;display_name&amp;amp;#039; ); \/\/ recuperiamo il nome dell&amp;amp;#039;autore\n        $copyright = &amp;amp;#039;&amp;amp;amp;copy; &amp;amp;#039; . date(&amp;amp;#039;Y&amp;amp;#039;) . &amp;amp;#039; &amp;amp;#039; . esc_html( $author_name ); \/\/ recuperiamo il copyright: si aggiungi anche l&amp;amp;#039;eventuale anno corrente\n        echo &amp;amp;#039;&amp;amp;lt;meta name=&amp;amp;quot;author&amp;amp;quot; content=&amp;amp;quot;&amp;amp;#039; . esc_attr( $author_name ) . &amp;amp;#039;&amp;amp;quot;&amp;amp;gt;&amp;amp;#039; . &amp;amp;quot;\\n&amp;amp;quot;; \/\/ stampiamo il metatag author\n        echo &amp;amp;#039;&amp;amp;lt;meta name=&amp;amp;quot;copyright&amp;amp;quot; content=&amp;amp;quot;&amp;amp;#039; . esc_attr( $copyright ) . &amp;amp;#039;&amp;amp;quot;&amp;amp;gt;&amp;amp;#039; . &amp;amp;quot;\\n&amp;amp;quot;; \/\/ stampiamo il metatag copyright\n    }\n}\nadd_action( &amp;amp;#039;wp_head&amp;amp;#039;, &amp;amp;#039;meta_author_copyright&amp;amp;#039;, 20 );\n<\/pre>\n<p>Tale funzione non va\u00a0richiamata nel file header.php perch\u00e9, come potete vedere alla riga\u00a09 del listing appena riportato, il\u00a0suo risultato viene automaticamente trasmesso alla funzione wp_head() gi\u00e0 menzionata poco sopra (proprio quella che deve necessariamente essere presente nel contenitore &lt;head&gt;&#8230;&lt;\/head&gt;). Volendo, potete eliminare l\u2019indicazione dell\u2019anno corrente, trasformando la\u00a0riga 4\u00a0in\u00a0questo modo:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 7; notranslate\" title=\"listing 7\">\n$copyright = &amp;amp;#039;&amp;amp;amp;copy; &amp;amp;#039; . esc_html( $author_name );\n<\/pre>\n<p>In\u00a0ogni caso, la\u00a0funzione appena mostrata sar\u00e0 particolarmente utile in\u00a0almeno una delle due situazioni: 1)\u00a0se\u00a0sul sito scrive pi\u00f9 di\u00a0una persona; 2)\u00a0se\u00a0il\u00a0nome del proprietario e\u00a0dell\u2019autore unico potrebbe cambiare col tempo per uno qualsiasi dei motivi immaginabili (per esempio: l\u2019adozione di\u00a0uno pseudonimo, il\u00a0cambio dei dati anagrafici, il\u00a0ritorno al\u00a0nome originale, la\u00a0cessione del sito etc.). \u00c8\u00a0spesso molto pi\u00f9 facile cambiare il\u00a0nome nella admin del sito che nel codice!<\/p>\n<blockquote class=\"lyrotstup\"><p>N.B.: la\u00a0funzione \u00e8\u00a0gi\u00e0 progettata in\u00a0modo da\u00a0non entrare in\u00a0conflitto con i\u00a0plugin di\u00a0SEO eventualmente utilizzati sul sito, ma, comunque, non \u00e8\u00a0mai eccessivo controllare.<\/p><\/blockquote>\n<p>E\u00a0ora, finalmente, passiamo al\u00a0meta tag description. Su\u00a0un\u00a0sito realizzato senza alcun CMS avremmo fatto in\u00a0questo modo:<\/p>\n<pre class=\"brush: xml; collapse: false; title: listing 8; notranslate\" title=\"listing 8\">\n&amp;amp;lt;meta name=&amp;amp;quot;description&amp;amp;quot; content=&amp;amp;quot;Ci va una descrizione sensata del sito. Non scrivere che si tratta del miglior sito al mondo, racconta cosa contiene la pagina concreta!&amp;amp;quot;&amp;amp;gt;\n<\/pre>\n<p>Questo modo andrebbe bene anche per un\u00a0sito costruito con un\u00a0CMS ma\u00a0costituito da\u00a0una sola pagina (in\u00a0quel caso l\u2019unica riga del codice appena mostrata nel listing\u00a08 va semplicemente inserita in\u00a0un\u00a0qualsiasi punto del contenitore &lt;head&gt;&#8230;&lt;\/head&gt;). Per tutti gli altri siti pi\u00f9 evoluti bisogna invece scrivere una funzione in\u00a0PHP.<br \/>\nSupponiamo di\u00a0voler creare il\u00a0meta tag description per tutti gli articoli e\u00a0per tutte le\u00a0pagine del nostro sito WordPress. Supponiamo anche di\u00a0non voler complicare troppo la\u00a0futura amministrazione del sito, cio\u00e8 non obbligare l\u2019autore del sito (o\u00a0noi stessi) a\u00a0inventare e\u00a0inserire nel database il\u00a0testo di\u00a0descrizione di\u00a0ogni nuova pagina. La\u00a0soluzione \u00e8\u00a0banalissima: assegniamo al\u00a0meta tag description il\u00a0valore del \u00abriassunto\u00bb dell\u2019articolo o\u00a0della pagina!<\/p>\n<blockquote class=\"lyrotstup\"><p>N.B.: per default, il\u00a0meccanismo di\u00a0WordPress non permette all\u2019utente di\u00a0creare il\u00a0\u00abriassunto\u00bb delle pagine (ma\u00a0solo degli articoli). Ma\u00a0io\u00a0ho\u00a0gi\u00e0 scritto abbastanza in\u00a0dettaglio, in\u00a0un\u00a0<a href=\"https:\/\/eugigufo.net\/it\/inerario\/paragrafo7\/\">paragrafo dedicato<\/a>, di\u00a0come aggiungere facilmente il\u00a0campo \u00abriassunto\u00bb anche alle pagine.<\/p><\/blockquote>\n<p>Prima di\u00a0tutto, nel file functions.php del nostro tema inseriamo la\u00a0funzione che permette di\u00a0creare i\u00a0\u00abriassunti\u00bb delle pagine WordPress. Pu\u00f2 essere particolarmente utile in\u00a0quelle situazioni in\u00a0cui una pagina contiene poco testo (ma\u00a0tante funzionalit\u00e0 e\/o immagini) e\u00a0non pu\u00f2 dunque fornire la\u00a0\u00abmateria prima\u00bb per la\u00a0creazione automatica di\u00a0un\u00a0buon \u00abriassunto\u00bb. Ecco il\u00a0codice:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 9; notranslate\" title=\"listing 9\">\nfunction add_excerpt_page() {\n    add_post_type_support(&amp;amp;#039;page&amp;amp;#039;, &amp;amp;#039;excerpt&amp;amp;#039;);\n}\nadd_action(&amp;amp;#039;init&amp;amp;#039;, &amp;amp;#039;add_excerpt_page&amp;amp;#039;);\n<\/pre>\n<p>Ora siamo totalmente pronti a\u00a0prendere il\u00a0contenuto del riassunto e\u00a0assegnarlo al\u00a0meta tag description. Lo\u00a0facciamo con il\u00a0seguente codice da\u00a0inserire sempre nel file functions.php del tema:<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 10; notranslate\" title=\"listing 10\">\nfunction meta_description_r() {\n    if ( is_single() || is_page() ) {\n        global $post;\n\n        $meta_description = get_the_excerpt($post); \/\/ recuperiamo il riassunto dei post e delle pagine (se presente)\n\n        if ( empty($meta_description) ) {\n            $meta_description = wp_trim_words( wp_strip_all_tags( $post-&amp;amp;gt;post_content ), 25, &amp;amp;#039;...&amp;amp;#039; ); \/\/ usiamo il contenuto della pagina se il riassunto manca\n        }\n\n        if ( !empty( $meta_description ) ) {\n            echo &amp;amp;#039;&amp;amp;lt;meta name=&amp;amp;quot;description&amp;amp;quot; content=&amp;amp;quot;&amp;amp;#039; . esc_attr( $meta_description ) . &amp;amp;#039;&amp;amp;quot;&amp;amp;gt;&amp;amp;#039; . &amp;amp;quot;\\n&amp;amp;quot;; \/\/ aggiungiamo il metatag solo se esiste una descrizione\n        }\n    }\n}\nadd_action( &amp;amp;#039;wp_head&amp;amp;#039;, &amp;amp;#039;meta_description_r&amp;amp;#039;, 20 );\n<\/pre>\n<p>Come potete vedere, se\u00a0il\u00a0riassunto dell\u2019articolo o\u00a0della pagina \u00e8\u00a0stato creato dall\u2019amministratore del sito, esso viene utilizzato anche per il\u00a0meta tag description; se, invece, non \u00e8\u00a0stato creato, viene generato automaticamente sulla base del testo dell\u2019articolo o\u00a0della pagina e\u00a0poi passato al\u00a0meta tag.<br \/>\nTale funzione non va\u00a0richiamata nel file header.php perch\u00e9 anche essa\u00a0\u2013 come potete vedere alla sua ultima riga\u00a0\u2013 trasmette automaticamente il\u00a0proprio risultato alla funzione wp_head() gi\u00e0 presente nel header.<br \/>\nE\u00a0poi&#8230; e\u00a0poi basta: abbiamo gi\u00e0 fatto tutto. Salviamo i\u00a0file modificati e\u00a0li\u00a0carichiamo sul server, nella directory del tema. Aspettiamo che il\u00a0risultato del nostro lavoro venga indicizzato da\u00a0Google e\u00a0iniziamo a\u00a0sperare in\u00a0una popolarit\u00e0 del sito aumentata, ahahaha<br \/>\nP.S.: tra gli obiettivi del presente paragrafo non c\u2019era quello di\u00a0insegnarvi a\u00a0scrivere i\u00a0testi del meta tag description funzionali dal punto di\u00a0vista del SEO. In\u00a0base alle poche cose lette sull\u2019argomento e\u00a0la\u00a0semplice logica, per\u00f2, posso dirvi che i\u00a0suddetti testi non devono essere identici a\u00a0quelli del tag title, ma, invece, devono essere unici per ogni pagina del sito, rispecchiare il\u00a0contenuto reale della pagina, essere lunghi tra\u00a070 e 200\u00a0simboli, contenere le\u00a0parole e\/o espressioni con le\u00a0quali la\u00a0pagina potrebbe essere ricercata dai potenziali visitatori interessati (rimanendo dei testi sensati e\u00a0non dei semplici elenchi). I\u00a0guru del SEO sapranno spiegarvelo molto meglio di\u00a0me. Mentre il\u00a0mio obiettivo era quello di\u00a0aggiornarvi sugli aspetti puramente tecnici, di\u00a0programmazione.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il paragrafo dell\u2019\u201cInerario\u201d che spiega come creare automaticamente i meta tag utili per il SEO nei codici delle pagine di un sito costruito con il WordPress.<br \/>\nQuesto paragrafo \u00e8 stato pensato sia per gli sviluppatori che per gli addetti al SEO non esperti in programmazione per il web.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":452,"menu_order":38,"comment_status":"open","ping_status":"closed","template":"inerarioart.php","meta":{"footnotes":""},"class_list":["post-12206","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages\/12206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/comments?post=12206"}],"version-history":[{"count":0,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages\/12206\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages\/452"}],"wp:attachment":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/media?parent=12206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}