<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Aldolat.it &#8212; Post con tag Permalink</title>
        <link>https://www.aldolat.it/tags/permalink/</link>
        <description>Ultimi post pubblicati nel tag Permalink &#8212; aldolat.it</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>it</language>
        <managingEditor>aldolat@gmail.com (Aldo Latino)</managingEditor>
        <webMaster>aldolat@gmail.com (Aldo Latino)</webMaster>
        <copyright>Creative Commons BY-SA 4.0</copyright>
        <lastBuildDate>Sat, 21 Oct 2023 22:17:17 +0200</lastBuildDate>
        <atom:link href="https://www.aldolat.it/tags/permalink/index.xml" rel="self" type="application/rss+xml" />
        <item>
            <title>Cambiare la guid dei post</title>
            <link>https://www.aldolat.it/posts/2010/cambiare-la-guid-dei-post/</link>
            <pubDate>Wed, 19 May 2010 10:37:34 +0000</pubDate>
            <author>aldolat@gmail.com (Aldo Latino)</author>
            <guid>https://www.aldolat.it/posts/2010/cambiare-la-guid-dei-post/</guid>
            <description>In uno dei siti che gestisco e realizzati con WordPress, avevo l&amp;rsquo;esigenza di cambiare la GUID di ogni post in modo che combaciasse con il suo ID o, per essere più chiari, con il permalink di default (tipo http://miosito.it/?p=123). Il motivo per cui non combaciava era dovuto all&amp;rsquo;importazione da un file XML estraneo a WordPress. L&amp;rsquo;operazione di sostituzione può essere effettuata con gli strumenti che il CMS ci fornisce e, visto che magari vi può tornare utile, questo è lo script che ho usato:</description>
            <content:encoded>&lt;p&gt;In uno dei siti che gestisco e realizzati con WordPress, avevo l&amp;rsquo;esigenza di cambiare la GUID di ogni post in modo che combaciasse con il suo ID o, per essere più chiari, con il &lt;em&gt;permalink&lt;/em&gt; di default (tipo &lt;code&gt;http://miosito.it/?p=123&lt;/code&gt;). Il motivo per cui non combaciava era dovuto all&amp;rsquo;importazione da un file XML estraneo a WordPress. L&amp;rsquo;operazione di sostituzione può essere effettuata con gli strumenti che il CMS ci fornisce e, visto che magari vi può tornare utile, questo è lo script che ho usato:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;php&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;global&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$wpdb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$post&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$myposts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;get_posts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;numberposts=-1&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$updated&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$not_updated&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;foreach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$myposts&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$post&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;setup_postdata&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$post&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$current_guid&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;get_post_field&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;guid&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$post&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;ID&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$correct_guid&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;get_permalink&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$post&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;ID&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$current_guid&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$correct_guid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;$where&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;ID&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$post&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;ID&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;14&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;$wpdb&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;update&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$wpdb&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;posts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;guid&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$correct_guid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$where&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;. GUID del post &amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$post&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;ID&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39; aggiornato da &amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$current_guid&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39; a &amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$correct_guid&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;lt;br /&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;$updated&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;. GUID del post &amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$post&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;ID&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39; OK&amp;lt;br /&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;$not_updated&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;21&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;endforeach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;22&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;23&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Risultato:&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Righe aggiornate: &amp;lt;strong&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$updated&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;25&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Righe non aggiornate: &amp;lt;strong&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$not_updated&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;26&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Totale righe controllate: &amp;lt;strong&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$updated&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$not_updated&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;27&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;?&amp;gt;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In poche parole, lo script confronta il campo &lt;code&gt;guid&lt;/code&gt; della riga del post con il permalink (che, anche temporaneamente, va impostato come &amp;ldquo;Default&amp;rdquo;) e, se è diverso, lo adegua. Alla fine dell&amp;rsquo;operazione, lo script stampa tutte le operazioni eseguite, sia che abbia modificato la riga del database sia che non lo abbia fatto.&lt;/p&gt;&#xA;&lt;p&gt;Ho utilizzato lo script incollandolo nell&amp;rsquo;&lt;code&gt;index.php&lt;/code&gt;, subito dopo la chiamata all&amp;rsquo;header. In pochi secondi tutte le migliaia di post avevano la GUID corretta. Per averne anche un riscontro visivo, si può aggiungere all&amp;rsquo;interno del loop, magari proprio prima del titolo del post, questa riga:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;get_post_field&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;guid&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$post&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;ID&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;lt;br /&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;get_permalink&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$post&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;ID&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Nel &lt;em&gt;Codex&lt;/em&gt;, alla pagina &lt;a href=&#34;http://codex.wordpress.org/Function_Reference/wpdb_Class&#34;&gt;Interfacing With the Database&lt;/a&gt; ci sono tutte le informazioni necessarie, in particolare il paragrafo &amp;ldquo;UPDATE rows&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;L&#39;articolo &lt;a href=&#34;https://www.aldolat.it/posts/2010/cambiare-la-guid-dei-post/&#34;&gt;Cambiare la guid dei post&lt;/a&gt; è uno scritto di &lt;a href=&#34;https://www.aldolat.it/&#34;&gt;aldolat.it&lt;/a&gt;. Rispettane le &lt;a href=&#34;https://www.aldolat.it/info/#licenza&#34;&gt;condizioni di licenza&lt;/a&gt;.&lt;/p&gt;</content:encoded>
        </item>
        <item>
            <title>Occhio al costrutto per i Canonical URLs</title>
            <link>https://www.aldolat.it/posts/2009/occhio-al-costrutto-per-i-canonical-urls/</link>
            <pubDate>Wed, 25 Mar 2009 13:55:58 +0000</pubDate>
            <author>aldolat@gmail.com (Aldo Latino)</author>
            <guid>https://www.aldolat.it/posts/2009/occhio-al-costrutto-per-i-canonical-urls/</guid>
            <description>Nel precedente articolo sui Canonical URLs avevo commesso un errore di distrazione. Succede. 🙂 Avevo inserito questa sintassi:&#xA;&amp;lt;link rel=&amp;#34;canonical&amp;#34; content=&amp;#34;http://www.miosito.it/2006/miopost/&amp;#34; /&amp;gt; ma è sbagliata, appunto perché &amp;lt;link&amp;gt; non è un meta-tag, ma un link-tag, proprio come i link ai file CSS. Ecco, quindi, la corretta sintassi, come anche riporta la pagina di Google che vi linkavo:&#xA;&amp;lt;link rel=&amp;#34;canonical&amp;#34; href=&amp;#34;http://www.miosito.it/2006/miopost/&amp;#34; /&amp;gt; Per cui il codice PHP da inserire nell&amp;rsquo;&amp;lt;head&amp;gt; è il seguente:&#xA;&amp;lt;?php global $wp_query; if (is_single() || is_page()) { echo &amp;#39;&amp;lt;link rel=&amp;#34;canonical&amp;#34; href=&amp;#34;&amp;#39; . get_permalink($wp_query-&amp;gt;post-&amp;gt;ID) . &amp;#39;&amp;#34; /&amp;gt;&amp;#39;; } ?&amp;gt; Scusate l&amp;rsquo;errore. Me ne sono accorto grazie a un messaggio inviato su Twitter da Franz Enzenhofer.</description>
            <content:encoded>&lt;p&gt;Nel &lt;a href=&#34;https://www.aldolat.it/posts/2009/ottimizzare-i-link-per-google-i-canonical-urls/&#34;&gt;precedente articolo sui Canonical URLs&lt;/a&gt; avevo commesso un errore di distrazione. Succede. 🙂 Avevo inserito questa sintassi:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;canonical&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://www.miosito.it/2006/miopost/&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;ma è sbagliata&lt;/strong&gt;, appunto perché &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; non è un meta-tag, ma un link-tag, proprio come i link ai file CSS. Ecco, quindi, la corretta sintassi, come anche riporta &lt;a href=&#34;http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html&#34;&gt;la pagina di Google&lt;/a&gt; che vi linkavo:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;canonical&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://www.miosito.it/2006/miopost/&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Per cui il codice PHP da inserire nell&amp;rsquo;&lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; è il seguente:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;php&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;global&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$wp_query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;is_single&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;is_page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;lt;link rel=&amp;#34;canonical&amp;#34; href=&amp;#34;&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;get_permalink&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$wp_query&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;post&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;ID&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#34; /&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;?&amp;gt;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Scusate l&amp;rsquo;errore. Me ne sono accorto grazie a un &lt;a href=&#34;http://twitter.com/enzenhofer/status/1384075892&#34;&gt;messaggio&lt;/a&gt; inviato su Twitter da Franz Enzenhofer.&lt;/p&gt;&#xA;&lt;p&gt;L&#39;articolo &lt;a href=&#34;https://www.aldolat.it/posts/2009/occhio-al-costrutto-per-i-canonical-urls/&#34;&gt;Occhio al costrutto per i Canonical URLs&lt;/a&gt; è uno scritto di &lt;a href=&#34;https://www.aldolat.it/&#34;&gt;aldolat.it&lt;/a&gt;. Rispettane le &lt;a href=&#34;https://www.aldolat.it/info/#licenza&#34;&gt;condizioni di licenza&lt;/a&gt;.&lt;/p&gt;</content:encoded>
        </item>
        <item>
            <title>Ottimizzare i link per Google: i Canonical URLs</title>
            <link>https://www.aldolat.it/posts/2009/ottimizzare-i-link-per-google-i-canonical-urls/</link>
            <pubDate>Fri, 06 Mar 2009 14:17:31 +0000</pubDate>
            <author>aldolat@gmail.com (Aldo Latino)</author>
            <guid>https://www.aldolat.it/posts/2009/ottimizzare-i-link-per-google-i-canonical-urls/</guid>
            <description>Nota Dalla versione 2.9 di WordPress questa funzione è implementata nel core, per cui non è più necessario aggiungerla. Cosa sono i &amp;ldquo;Canonical URLs&amp;rdquo;? Una rapida occhiata alla pagina di Wikipedia e in particolare al paragrafo Normalization_process ci dovrebbe illuminare abbastanza, tanto da farci prendere le dovute precauzioni. 🙂 In poche parole si tratta di questo: una data pagina potrebbe essere raggiungibile attraverso distinti indirizzi, ad esempio:&#xA;https://www.aldolat.it/miopost/ https://www.aldolat.it/miopost/comment-page-1/ https://www.aldolat.it/miopost/comment-page-2/ ecc., e tutti con o senza trailing slash (/), con tutte le lettere maiuscole e minuscole, ecc. Tutto questo comporta che lo stesso identico articolo possa comparire nei motori di ricerca sotto diversi indirizzi. Google ci dà la possibilità di definire quale sia una volta per tutte l&amp;rsquo;indirizzo che preferiamo per ogni pagina/post creato utilizzando il tag &amp;lt;link&amp;gt; all&amp;rsquo;interno del tag &amp;lt;head&amp;gt; di ogni pagina. Lo possiamo fare in modo semplice modificando il file del nostro tema.</description>
            <content:encoded>&lt;div class=&#34;note comment&#34;&gt;&#xA;    &#xA;    &lt;div class=&#34;title-note&#34;&gt;&#xA;        Nota&#xA;    &lt;/div&gt;&#xA;    &#xA;    &lt;p class=&#34;aside&#34;&gt;&#xA;        Dalla versione 2.9 di WordPress questa funzione è implementata nel core, per cui non è più necessario aggiungerla.&#xA;    &lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;figure class=&#34;alignleft&#34;&gt;&lt;img src=&#34;https://www.aldolat.it/images/2009/03/google150.png&#34;&#xA;&#x9;&#x9;&#x9;alt=&#34;google150&#34; width=&#34;150&#34; height=&#34;54&#34;&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;Cosa sono i &amp;ldquo;Canonical URLs&amp;rdquo;? Una rapida occhiata alla &lt;a href=&#34;http://en.wikipedia.org/wiki/URL_normalization&#34;&gt;pagina di Wikipedia&lt;/a&gt; e in particolare al paragrafo &lt;em&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/URL_normalization#Normalization_process&#34;&gt;Normalization_process&lt;/a&gt;&lt;/em&gt; ci dovrebbe illuminare abbastanza, tanto da farci prendere le dovute precauzioni. 🙂 In poche parole si tratta di questo: una data pagina potrebbe essere raggiungibile attraverso distinti indirizzi, ad esempio:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;code&gt;https://www.aldolat.it/miopost/&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;https://www.aldolat.it/miopost/comment-page-1/&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;https://www.aldolat.it/miopost/comment-page-2/&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;ecc., e tutti con o senza &lt;em&gt;trailing slash&lt;/em&gt; (/), con tutte le lettere maiuscole e minuscole, ecc. Tutto questo comporta che lo stesso identico articolo possa comparire nei motori di ricerca sotto diversi indirizzi. Google &lt;a href=&#34;http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html&#34;&gt;ci dà la possibilità&lt;/a&gt; di definire quale sia una volta per tutte l&amp;rsquo;indirizzo che preferiamo per ogni pagina/post creato utilizzando il tag &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; all&amp;rsquo;interno del tag &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; di ogni pagina. Lo possiamo fare in modo semplice modificando il file del nostro tema.&lt;/p&gt;&#xA;&lt;p&gt;Dal backend di WordPress modificate il file &lt;code&gt;header.php&lt;/code&gt; del tema in uso e subito prima del tag di chiusura &lt;code&gt;&amp;lt;/head&amp;gt;&lt;/code&gt; inserite queste righe:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;php&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;global&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$wp_query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;is_single&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;is_page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;lt;link rel=&amp;#34;canonical&amp;#34; href=&amp;#34;&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;get_permalink&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$wp_query&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;post&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;ID&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#34; /&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;cp&#34;&gt;?&amp;gt;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Salvate il file, aprite una pagina statica o un post e osservate il codice generato (da Firefox &lt;code&gt;CTRL+U&lt;/code&gt;); scorrete le righe fino al tag &lt;code&gt;&amp;lt;/head&amp;gt;&lt;/code&gt; e accertatevi che vi sia l&amp;rsquo;output corretto del codice inserito prima, vale a dire una riga del tipo:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;canonical&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://www.miosito.it/2006/miopost/&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Con estrema semplicità adesso Google saprà che tutti i duplicati fanno riferimento a un link &amp;ldquo;canonico&amp;rdquo;. Nel link all&amp;rsquo;&lt;em&gt;Official Google Webmaster Central Blog&lt;/em&gt; trovate anche una serie di FAQ interessanti.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;[EDIT]&lt;/strong&gt;&lt;br&gt;&#xA;Si intende che potrete vedere il codice HTML generato dalle righe di PHP solo nelle &lt;strong&gt;pagine singole&lt;/strong&gt; degli articoli o in quelle &lt;strong&gt;statiche&lt;/strong&gt; (com&amp;rsquo;è giusto che sia: sono quelle le pagine che hanno il link &amp;ldquo;canonico&amp;rdquo; o &amp;ldquo;sorgente&amp;rdquo;). Non l&amp;rsquo;avevo fatto notare a modo nel post.&lt;/p&gt;&#xA;&lt;p&gt;L&#39;articolo &lt;a href=&#34;https://www.aldolat.it/posts/2009/ottimizzare-i-link-per-google-i-canonical-urls/&#34;&gt;Ottimizzare i link per Google: i Canonical URLs&lt;/a&gt; è uno scritto di &lt;a href=&#34;https://www.aldolat.it/&#34;&gt;aldolat.it&lt;/a&gt;. Rispettane le &lt;a href=&#34;https://www.aldolat.it/info/#licenza&#34;&gt;condizioni di licenza&lt;/a&gt;.&lt;/p&gt;</content:encoded>
        </item>
        <item>
            <title>Impostare in maniera efficiente i permalink</title>
            <link>https://www.aldolat.it/posts/2009/impostare-in-maniera-efficiente-i-permalink/</link>
            <pubDate>Fri, 06 Mar 2009 10:41:33 +0000</pubDate>
            <author>aldolat@gmail.com (Aldo Latino)</author>
            <guid>https://www.aldolat.it/posts/2009/impostare-in-maniera-efficiente-i-permalink/</guid>
            <description>Avvertenza La gestione dei permalink è stata notevolmente migliorata a partire da WordPress 3.3, per cui queste informazioni risultano obsolete. In termini assoluti, avere un valore numerico in testa al permalink dà prestazioni migliori; ma in termini pratici le differenze di performance tra l&amp;rsquo;avere un valore numerico e non averlo sono irrisorie se non addirittura inesistenti. Per informazioni dettagliate su come funzionano i permalink in WordPress 3.3 e versioni successive è utile il post di Otto.</description>
            <content:encoded>&lt;div class=&#34;note warning&#34;&gt;&#xA;    &#xA;    &lt;div class=&#34;title-note&#34;&gt;&#xA;        Avvertenza&#xA;    &lt;/div&gt;&#xA;    &#xA;    &lt;p class=&#34;aside&#34;&gt;&#xA;        La gestione dei permalink è stata notevolmente migliorata a partire da WordPress 3.3, per cui queste informazioni risultano obsolete. In termini assoluti, avere un valore numerico in testa al permalink dà prestazioni migliori; ma &lt;a href=&#34;http://lists.automattic.com/pipermail/wp-hackers/2014-January/047638.html&#34;&gt;in termini pratici&lt;/a&gt; le differenze di performance tra l&amp;rsquo;avere un valore numerico e non averlo sono irrisorie se non addirittura inesistenti. Per informazioni dettagliate su come funzionano i permalink in WordPress 3.3 e versioni successive è utile &lt;a href=&#34;http://ottopress.com/2011/how-the-postname-permalinks-in-wordpress-3-3-work/&#34;&gt;il post di Otto&lt;/a&gt;.&#xA;    &lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;figure class=&#34;alignright&#34;&gt;&lt;img src=&#34;https://www.aldolat.it/images/2009/01/wordpress-logo.png&#34;&#xA;&#x9;&#x9;&#x9;alt=&#34;wordpress-logo&#34;&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p class=&#34;dc3&#34;&gt;Circa un mese fa è nata &lt;a href=&#34;http://wordpress.org/support/topic/236199&#34;&gt;una interessante discussione&lt;/a&gt; nel forum di WordPress relativa a un elevato e insolito numero di query al database (più di 2.000) ogni volta che si apriva una pagina di un determinato sito. La discussione si è portata avanti tra &lt;a href=&#34;http://core.trac.wordpress.org/ticket/8958&#34;&gt;segnalazione nel Trac di WordPress&lt;/a&gt;, &lt;a href=&#34;http://lists.automattic.com/pipermail/wp-testers/2009-January/011097.html&#34;&gt;discussione in mailing-list&lt;/a&gt; e &lt;a href=&#34;http://codex.wordpress.org/Using_Permalinks#Structure_Tags&#34;&gt;aggiunte al Codex&lt;/a&gt;, nonché su blog importanti come quello di &lt;a href=&#34;http://dougal.gunters.org/blog/2009/02/04/efficient-wordpress-permalinks&#34;&gt;Dougal Campbell&lt;/a&gt; (da cui questo articolo trae spunto). Credo sia utile far conoscere quanto si è discusso per nostra informazione e annotazione.&lt;/p&gt;&#xA;&lt;h2 id=&#34;il-problema&#34;&gt;Il problema&lt;/h2&gt;&#xA;&lt;p&gt;Un utente di WordPress lamentava, come già detto, un elevato numero di query per ogni pagina aperta del suo sito, causando un rallentamento eccessivo; la navigazione era possibile, ma in modo molto lento e fastidioso. Su questo sito, che contava tantissime pagine e con svariati allegati, aveva tentato di tutto, disattivando qualsiasi plugin, rimettendo il tema standard e provando addirittura un hosting diverso (in locale). Il risultato fu che le query continuavano ad essere sempre le stesse. L&amp;rsquo;utente aprì quindi una discussione sul forum e, dopo qualche scambio di informazioni, si giunse alla conclusione che il problema era dovuto alla sua struttura dei permalink. Questa era del tipo &lt;code&gt;/%category%/%year%/%monthnum%/%day%/%postname%/&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;come-wordpress-preleva-gli-articoli&#34;&gt;Come WordPress preleva gli articoli&lt;/h2&gt;&#xA;&lt;p&gt;Come sapete, WordPress è molto flessibile nella gestione dei permalink: fornisce all&amp;rsquo;utente la possibilità di poterla impostare come vuole lui, secondo i suoi gusti e le sue esigenze: &lt;code&gt;%year%&lt;/code&gt;, &lt;code&gt;%monthnum%&lt;/code&gt;, &lt;code&gt;%day%&lt;/code&gt;, &lt;code&gt;%hour%&lt;/code&gt;, &lt;code&gt;%minute%&lt;/code&gt;, &lt;code&gt;%second%&lt;/code&gt;, &lt;code&gt;%postname%&lt;/code&gt;, &lt;code&gt;%post_id%&lt;/code&gt;, &lt;code&gt;%category%&lt;/code&gt;, &lt;code&gt;%tag%&lt;/code&gt;, e &lt;code&gt;%author%&lt;/code&gt;, combinandoli come meglio crede.&lt;/p&gt;&#xA;&lt;p&gt;Per blog e siti di piccole dimensioni, una impostazione non proprio efficiente dei permalink non causa alcun problema di navigazione e, per restare nel problema al centro dell&amp;rsquo;articolo, non causa alcun rallentamento. Ma quando si ha davanti un sito con moltissime pagine statiche (intendo le pagine staccate rispetto al flusso temporale degli articoli), con tantissimi allegati, tantissimi post (quindi un sito molto &amp;ldquo;grande&amp;rdquo;) &lt;em&gt;e&lt;/em&gt; una struttura dei permalink del tipo &lt;code&gt;/%category%/%postname%/&lt;/code&gt; oppure anche solo &lt;code&gt;/%postname%/&lt;/code&gt;, allora il discorso cambia radicalmente. WordPress, infatti, davanti a questo materiale e con questi permalink fatica a trovare quello che si vuole. Vediamo perché. Per spiegarlo utilizzo lo stesso esempio che &lt;a href=&#34;http://ottodestruct.com/blog/&#34;&gt;Otto&lt;/a&gt; ha usato nella &lt;a href=&#34;http://lists.automattic.com/pipermail/wp-testers/2009-January/011110.html&#34;&gt;discussione in mailing-list&lt;/a&gt; (metto in &lt;em&gt;blockquote&lt;/em&gt; il testo, ma è una mia interpretazione libera del suo testo e non una traduzione).&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Consideriamo un permalink del tipo &lt;code&gt;/%category%/%postname%/&lt;/code&gt;. Un visitatore arriva nel blog cercando la pagina &amp;ldquo;mycat/mypost/&amp;rdquo;. Per noi è immediatamente comprensibile di cosa si tratta, ma non per WordPress, il quale inizia ad analizzare queste due voci.&lt;/p&gt;&#xA;&lt;p&gt;Inizia con &amp;ldquo;mycat&amp;rdquo; e indaga su cosa sia. Dapprima si accerta se sia una pagina ed interroga il database: esiste nella tabella &amp;ldquo;wp_posts&amp;rdquo; un &amp;ldquo;post_slug&amp;rdquo; che ha &amp;ldquo;mycat&amp;rdquo; con &amp;ldquo;post_type&amp;rdquo; uguale a &amp;ldquo;page&amp;rdquo; (&lt;code&gt;select from wp_posts where post_slug = mycat and post_type = page&lt;/code&gt;)? &lt;em&gt;No, non esiste.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Quindi, tenta di vedere se &amp;ldquo;mycat&amp;rdquo; è una categoria. Esiste in &amp;ldquo;wp_terms&amp;rdquo; e (join) &amp;ldquo;wp_term_taxonomy&amp;rdquo; qualcosa in cui &amp;ldquo;term&amp;rdquo; è &amp;ldquo;mycat&amp;rdquo; e &amp;ldquo;taxonomy&amp;rdquo; è &amp;ldquo;category&amp;rdquo; (&lt;code&gt;select from wp_terms join wp_term_taxonomy on (term_id = term_id) where term = mycat and taxonomy = category&lt;/code&gt;)? &lt;em&gt;Si esiste.&lt;/em&gt; Ottimo, ma c&amp;rsquo;è un problema: è solo una categoria, non è il post che stiamo cercando. Passiamo oltre e ignoriamo la categoria.&lt;/p&gt;&#xA;&lt;p&gt;WordPress lascia perdere, quindi, &amp;ldquo;mycat&amp;rdquo; e passa a &amp;ldquo;mypost&amp;rdquo;. E ricomincia la tiritera delle interrogazioni.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;È una pagina (&lt;code&gt;select from wp_posts where post_slug = mypost and post_type = page&lt;/code&gt;)? &lt;em&gt;No.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;È una categoria &lt;code&gt;(select from wp_terms join wp_term_taxonomy on (term_id = term_id) where term = mypost and taxonomy = category&lt;/code&gt;)? &lt;em&gt;No.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;È un post (&lt;code&gt;select from wp_posts where post_slug = mypost and post_type = post&lt;/code&gt;)? &lt;em&gt;Sì.&lt;/em&gt; Bingo!&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Da questo si capisce quanto le categorie (ad inizio permalink) non aiutino a determinare la natura di ciò che si sta cercando. Sono state eseguite ben cinque query (delle quali due molto dispendiose, &lt;code&gt;join&lt;/code&gt;) solo per capire quale sia il post. &lt;em&gt;E ciò avviene ogni volta che si vuole visualizzare un post sul vostro sito.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;span class=&#34;sc&#34;&gt;Otto&lt;/span&gt;, in risposta al thread &lt;a href=&#34;https://lists.automattic.com/pipermail/wp-testers/2009-January/011110.html&#34;&gt;&lt;em&gt;Wordpress scaling problems&lt;/em&gt;&lt;/a&gt;, 29 gennaio 2009.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Immaginiamo, quindi, cosa succede quando un sito sia molto esteso e abbia tantissime visite ogni secondo. Per questo motivo WordPress, per evitare tali problemi quando rileva che la nostra struttura dei permalink non è efficiente, genera delle &lt;em&gt;regole di reindirizzamento&lt;/em&gt; (&lt;code&gt;rewrite_url&lt;/code&gt;) per ogni cosa scriviate (post, pagina, attachment), cui ricorre ogni volta che viene richiesta una pagina del sito (che sia un post o altro). Queste regole di reindirizzamento, però, &lt;em&gt;crescono a dismisura quando il sito è enorme&lt;/em&gt;, quando ci sono tantissime pagine statiche e relativi attachment (era il caso dell&amp;rsquo;utente di poco fa). Questa tabella può crescere così tanto da causare problemi alla navigazione.&lt;/p&gt;&#xA;&lt;h2 id=&#34;come-impostare-nel-modo-più-efficiente-i-permalink&#34;&gt;Come impostare nel modo più efficiente i permalink&lt;/h2&gt;&#xA;&lt;p&gt;Qual è, allora, la migliore impostazione dei permalink?&lt;/p&gt;&#xA;&lt;p&gt;Se &amp;ldquo;migliore&amp;rdquo; lo intendiamo in termini di efficienza, senza dubbio essa consiste nell&amp;rsquo;&lt;em&gt;usare come primo elemento del permalink un valore numerico&lt;/em&gt; (&lt;code&gt;%year%&lt;/code&gt;, &lt;code&gt;%monthnum%&lt;/code&gt;, &lt;code&gt;%day%&lt;/code&gt;, &lt;code&gt;%hour%&lt;/code&gt;, &lt;code&gt;%minute%&lt;/code&gt;, &lt;code&gt;%second%&lt;/code&gt; e &lt;code&gt;%post_id%&lt;/code&gt;) o addirittura la struttuta standard &lt;code&gt;miosito.com/?p=123&lt;/code&gt; (che presenta altre problematiche, ma non in termini di efficienza). &lt;em&gt;I problemi sorgono quando si mette come primo elemento un valore testuale&lt;/em&gt; come &lt;code&gt;%postname%&lt;/code&gt;, &lt;code&gt;%category%&lt;/code&gt;, &lt;code&gt;%tag%&lt;/code&gt;, e &lt;code&gt;%author%&lt;/code&gt;: in questo caso WordPress o esegue tutta quella tiritera o deve impostarsi delle regole di reindirizzamento: entrambi i sistemi sono comunque dispendiosi in termini di risorse.&lt;/p&gt;&#xA;&lt;p&gt;Se il vostro sito/blog rientra nelle caratteristiche dette prima, rivedete i vostri permalink. &lt;em&gt;Se avete un piccolo blog non preoccupatevi di nulla e usate pure la struttura che più vi piace.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Anche nel Codex è stato inserito, dopo la discussione in mailing-list, &lt;a href=&#34;http://codex.wordpress.org/Using_Permalinks#Structure_Tags&#34;&gt;questo avviso&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;em&gt;For performance reasons, it is not a good idea to start your permalink structure with the category, tag, author, or postname fields. The reason is that these are text fields, and using them at the beginning of your permalink structure it takes more time for WordPress to distinguish your Post URLs from Page URLs (which always use the text &amp;ldquo;page slug&amp;rdquo; as the URL), and to compensate, WordPress stores a lot of extra information in its database (so much that sites with lots of Pages have experienced difficulties). So, it is best to start your permalink structure with a numeric field, such as the year or post ID. See &lt;a href=&#34;http://lists.automattic.com/pipermail/wp-testers/2009-January/011097.html&#34;&gt;wp-testers discussion of this topic&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;la-situazione-di-questo-blog&#34;&gt;La situazione di questo blog&lt;/h2&gt;&#xA;&lt;p&gt;Ubuntu block notes ha adottato per molto tempo la struttura &lt;code&gt;/%category%/%postname%/&lt;/code&gt;, perché la ritengo ottima da punto di vista &amp;ldquo;umano&amp;rdquo;: si capisce subito sotto quale categoria si trova quell&amp;rsquo;articolo. Ma per i motivi su esposti ho cambiato la struttura utilizzandone una molto simile: &lt;code&gt;/%year%/%category%/%postname%/&lt;/code&gt;, inserendo quindi un valore numerico all&amp;rsquo;inizio.&lt;/p&gt;&#xA;&lt;figure class=&#34;aligncenter&#34;&gt;&lt;img src=&#34;https://www.aldolat.it/images/2009/03/table-weight.png&#34;&#xA;&#x9;&#x9;&#x9;alt=&#34;table-weight&#34;&gt;&lt;figcaption&gt;&#xA;&#x9;&#x9;&#x9;&lt;p&gt;La differenza di peso dei due file contenenti le regole, prima e dopo la &amp;ldquo;cura&amp;rdquo;.&lt;/p&gt;&#xA;&#x9;&#x9;&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;Prima di effettuare il cambio, però, ho dato un&amp;rsquo;occhiata al database per vedere cosa avessi nella tabella &lt;code&gt;wp-options&lt;/code&gt; &amp;gt; &lt;code&gt;rewrite_rules&lt;/code&gt;. Stentavo a crederci: &lt;em&gt;quasi 2.000 linee di regole!&lt;/em&gt; Dopo il cambio dei permalink, ho rivisitato la tabella e le righe &lt;em&gt;sono scese a 200, cioè un decimo!&lt;/em&gt; E pensare che questo blog è piccolo: attualmente 310 articoli, 26 pagine, 12 categorie e 361 tag (ma non so quanti attachment). È evidente che WordPress ringrazia e con lui il server su cui gira.&lt;/p&gt;&#xA;&lt;p&gt;Per approfondire date un&amp;rsquo;occhiata anche agli interessanti &lt;a href=&#34;http://dougal.gunters.org/blog/2009/02/04/efficient-wordpress-permalinks/#comments&#34;&gt;commenti all&amp;rsquo;articolo di Dougal&lt;/a&gt;, dove gli utenti pongono domande su dubbi che probabilmente potranno sorgere a chi ha letto quest&amp;rsquo;articolo.&lt;/p&gt;&#xA;&lt;h2 id=&#34;update&#34;&gt;Update&lt;/h2&gt;&#xA;&lt;p&gt;Ho preparato un diagramma di flusso per capire quando è il momento di cambiare la struttura dei permalink con una più efficiente:&lt;/p&gt;&#xA;&lt;figure class=&#34;aligncenter&#34;&gt;&lt;a href=&#34;https://www.aldolat.it/images/2009/03/wordpress-permalink.png&#34;&gt;&lt;img src=&#34;https://www.aldolat.it/images/2009/03/wordpress-permalink.png&#34;&#xA;&#x9;&#x9;&#x9;alt=&#34;wordpress-permalink&#34;&gt;&lt;/a&gt;&lt;figcaption&gt;&#xA;&#x9;&#x9;&#x9;&lt;p&gt;Fare clic per ingrandire&lt;/p&gt;&#xA;&#x9;&#x9;&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;L&#39;articolo &lt;a href=&#34;https://www.aldolat.it/posts/2009/impostare-in-maniera-efficiente-i-permalink/&#34;&gt;Impostare in maniera efficiente i permalink&lt;/a&gt; è uno scritto di &lt;a href=&#34;https://www.aldolat.it/&#34;&gt;aldolat.it&lt;/a&gt;. Rispettane le &lt;a href=&#34;https://www.aldolat.it/info/#licenza&#34;&gt;condizioni di licenza&lt;/a&gt;.&lt;/p&gt;</content:encoded>
        </item>
    </channel>
</rss>
