<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
> <channel><title>.::  Maurizio Pelizzone ::. &#187; featured</title> <atom:link href="http://maurizio.mavida.com/categorie/featured/feed/" rel="self" type="application/rss+xml" /><link>http://maurizio.mavida.com</link> <description># yet another WordPress Specialist</description> <lastBuildDate>Sat, 17 Dec 2011 11:14:16 +0000</lastBuildDate> <language>it</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /> <item><title>WordPress e qualità: sistemi di cache manuali</title><link>http://maurizio.mavida.com/2010/12/28/wordpress-e-qualita-sistemi-di-cache-manuali/</link> <comments>http://maurizio.mavida.com/2010/12/28/wordpress-e-qualita-sistemi-di-cache-manuali/#comments</comments> <pubDate>Tue, 28 Dec 2010 14:50:39 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[featured]]></category> <category><![CDATA[sviluppo]]></category> <category><![CDATA[tutorial]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[cache]]></category> <category><![CDATA[cache_template_part]]></category> <category><![CDATA[nginx]]></category> <category><![CDATA[qualità]]></category> <category><![CDATA[Transients API]]></category> <category><![CDATA[wordpress plugin]]></category> <category><![CDATA[wp_cache_set]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=2660</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comPer parlare di qualità, tra le tante cose, si devono definire requisiti ed obiettivi e poi trovare degli indicatori per poterli misurare. Io sto cercando di intrudurre una serie di linee quida nel mio modo di sviluppare ad una di queste si riferisce alla velocità ed al numero di query con cui [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p>Per parlare di <strong>qualità</strong>, tra le tante cose, si devono definire <strong>requisiti</strong> ed <strong>obiettivi</strong> e poi trovare degli <strong>indicatori</strong> per poterli <em>misurare</em>.<br
/> Io sto cercando di intrudurre una serie di <strong>linee quida</strong> nel mio modo di sviluppare ad una di queste si riferisce alla velocità ed al numero di <em>query</em> con cui vengono generate le pagine.</p><p><img
src="http://maurizio.mavida.com/wp-content/uploads/2010/12/cache_template_part.jpg" alt="" /></p><p>Gli indicatori che mi danno la misura e mi permettono di capire se sto rispettando i miei requisiti sono di tre tipi:</p><ol><li><strong>Lato browser</strong>: <a
href="http://developer.yahoo.com/yslow/">YSlow</a>, <a
href="http://code.google.com/intl/it-IT/speed/page-speed/">Page Speed</a> ma anche il pannello &#8220;Net &#8221; di <a
href="http://getfirebug.com/">Firebug</a>. Con questi verifico i tempi di caricamento dei singoli componenti della pagina ed eventuali colli di bottiglia nel caricamento di js.</li><li><strong>Lato server</strong>: <strong><a
href="http://mirror.facebook.net/facebook/xhprof/doc.html">XHProf</a></strong> . Si tratta di un profiler gerarchico per verificare i tempi di esecuzione di ogni singola funzione.</li><li><strong>Lato WordPress</strong>: <a
href="http://wordpress.org/extend/plugins/debug-queries/">Debug Query</a> e <a
href="http://wordpress.org/extend/plugins/debug-objects/">Debug Object</a>. Tramite questi plugin ho sotto controllo il numero di query ed un dettaglio dei singoli oggetti interni a <strong><a
href="http://maurizio.mavida.com/categorie/wordpress/">WordPress</a></strong>.</li></ol><p>E&#8217; ovvio che uno dei primi livelli di ottimizzazione sia l&#8217;intruduzione dei sistemi di <strong><a
href="http://it.wikipedia.org/wiki/Cache">cache</a></strong>.<br
/> Un uso appropriato può farci risparmiare diverse <em>query</em> e parecchi ciclo di CPU ma dato che in molti hanno <a
href="http://wordpress.org/extend/plugins/wp-widget-cache/">già</a> <a
href="http://wordpress.org/extend/plugins/w3-total-cache/">parlato</a> dei plugin che possono aiutarci nella gestione &#8220;semiautomatica&#8221; della <strong>cache</strong> vado oltre e vi segnalo solo un <a
href="http://supersoju.com/articles/wordpress-caching-comparision-w3-total-cache-vs-wp-super-cache-vs-wp-cache/">articolo</a> fatto da qualcuno che si è anche preoccupato di andare un po&#8217; più a fondo preparando qualche test.</p><p><span
id="more-2660"></span></p><p>Dalla versione 2.0 nel core di <strong>WordPress</strong> è presente un sistema di <a
href="http://codex.wordpress.org/Function_Reference/WP_Cache">caching non permanente</a> (nel senso che i dati sono residenti in memoria e solo per la durata della singola sessione).</p><p>Qui un breve esempio:</p><div
class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table
cellspacing="0" cellpadding="0"><tbody><tr><td
style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br
/>2<br
/>3<br
/>4<br
/>5<br
/>6<br
/></div></td><td><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$last5 = wp_cache_get( 'elenco_ultimi_5_post' );<br
/> if ( false == $last5 ) {<br
/> $sql_last5 = &quot;select ID from $wpdb-&amp;gt;posts where post_type = 'post' and post_status = 'publish' order by post_date desc limit 5&quot;;<br
/> $last5 = $wpdb-&amp;gt;get_results( $sql_last5 );<br
/> wp_cache_set( 'elenco_ultimi_5_post', $last5 );<br
/> }</div></td></tr></tbody></table></div><p>Io spesso lo uso anche per salvarmi anche pezzi di html</p><div
class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table
cellspacing="0" cellpadding="0"><tbody><tr><td
style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br
/>2<br
/>3<br
/>4<br
/>5<br
/>6<br
/>7<br
/></div></td><td><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$last5 = wp_cache_get( 'elenco_ultimi_5_post' );<br
/> if ( false == $last5 ) {<br
/> $sql_last5 = &quot;select ID, post_title &nbsp;from $wpdb-&amp;gt;posts where post_type = 'post' and post_status = 'publish' order by post_date desc limit 5&quot;;<br
/> $last5_data = $wpdb-&amp;gt;get_results( $sql_last5 );<br
/> if ($last5) :<br
/> foreach ($fivesdrafts as $post) :<br
/> $last5 .= &quot;</div></td></tr></tbody></table></div><li><a
href="&quot; . get_permalink( $post-&gt;ID) . &quot;">&#8221; . $post-&gt;post_title. &#8220;</a></li><p>&#8220;;<br
/> endforeach;<br
/> wp_cache_set( &#8216;elenco_ultimi_5_post&#8217;, $last5 );<br
/> endif;<br
/> }</p><p>Usando un sistema di questo tipo se volessi visualizzare l&#8217;elenco degli ultimi 5 post pubblicati nella mia sidebar eviterei di chiedere al database la stessa informazione per ogni pagina visualizzata ma dopo la prima richiesta verrebbe messo in memoria il risultato e reso subito pronto e disponibile per la volte successive.</p><p>Dal rilascio della 2.8 le cose sono anche migliorate con l&#8217;introduzione delle <a
href="http://codex.wordpress.org/Transients_API"><strong>Transients API</strong></a> che offrono sistema &#8220;<em>standardizzato</em>&#8221; per il salvataggio della <strong>cache</strong> su database.<br
/> Questo ci permette di salvare le informazioni &#8220;<em>cross-sessione</em>&#8221; rendendo riutilizzabile la <strong>cache</strong> anche per utenti diversi.</p><p>Questo è il codice con l&#8217;esempio di prima riadattato con le <strong>Transients API</strong></p><div
class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table
cellspacing="0" cellpadding="0"><tbody><tr><td
style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br
/>2<br
/>3<br
/>4<br
/>5<br
/>6<br
/>7<br
/></div></td><td><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$last5 = get_transient( 'elenco_ultimi_5_post' );<br
/> if ( !$last5 ) {<br
/> $sql_last5 = &quot;select ID, post_title &nbsp;from $wpdb-&amp;gt;posts where post_type = 'post' and post_status = 'publish' order by post_date desc limit 5&quot;;<br
/> $last5_data = $wpdb-&amp;gt;get_results( $sql_last5 );<br
/> if ($last5) :<br
/> foreach ($fivesdrafts as $post) :<br
/> $last5 .= &quot;</div></td></tr></tbody></table></div><li><a
href="&quot; . get_permalink( $post-&gt;ID) . &quot;">&#8221; . $post-&gt;post_title. &#8220;</a></li><p>&#8220;;<br
/> endforeach;<br
/> set_transient( &#8216;elenco_ultimi_5_post&#8217;, $last5,3600 );<br
/> endif;<br
/> }</p><p>Questo piccolo cambiamento rende persistente la mia cache per un ora (3600 secondi) ed accessibile per ogni visitatore.</p><p>Il sistema potrebbe però avere ancora un limite in quanto nel caso venisse modificato o pubblicato un nuovo post questo non verrebbe visualizzato nell&#8217;elenco sino al momento in cui la <strong>cache</strong> non risultasse <em>invalidata</em> e quindi ricreata.<br
/> Tramite un semplice <strong>hook</strong> possiamo pero risolvere il problema&#8230;</p><p>add_action(&#8216;save_post&#8217;, &#8216;delete_last5_cache&#8217;);<br
/> function delete_last5_cache( $post_id  ) {<br
/> global $post;<br
/> if ( $post-&gt;post_status == &#8220;publish&#8221;) {<br
/> // cancello la cache<br
/> delete_transient(&#8216;elenco_ultimi_5_post&#8217;);<br
/> }<br
/> }</p><p>In alcune situazioni però questo non mi bastava ancora in quanto avrei voluto rendere persistente una porzione ancora più grossa (es. tutta la sidebar e/o tutto il footer). Quello che cercavo era qualcosa di simile a <a
href="http://codex.wordpress.org/Function_Reference/get_template_part">get_template_part</a> ma con un salvataggio su <strong>cache</strong>.</p><p>Ho quindi scritto io una funzione che ho chiamato <strong>cache_template_part</strong>.<br
/> Questo il sorgente:</p><p>/*<br
/> * 2010 | maurizio | http:maurizio.mavida.com<br
/> * versione 1.2<br
/> * viene effettuata una cache su disco di una porzione di codice<br
/> *  @param string $file &#8211; nome del template da caricare<br
/> *  @param bool always &#8211; visualizza sempre la cache (anche all&#8217;amministratore)<br
/> *  @param bool rewrite &#8211; ricrea sempre la cache anche se ancora valida<br
/> *  @param int cachetime &#8211; numero di secondi dopo il quale viene invalidata<br
/> *  @param string cachepath &#8211; percorso per il salvataggio della cache<br
/> *<br
/> * es. cache_template_parts(&#8220;sidebar.php&#8221;);<br
/> * es. cache_template_parts(&#8220;sidebar.php&#8221; , array( &#8216;cachetime &#8216; =&gt; 14400 )  );<br
/> */<br
/> function cache_template_part( $file , $args = null  ) {</p><p>$defaults = array(<br
/> &#8216;always&#8217; =&gt; false,<br
/> &#8216;rewrite&#8217; =&gt; false,<br
/> &#8216;cachetime&#8217; =&gt; 3600,<br
/> &#8216;cachepath&#8217; =&gt; &#8216;wp-content/cache/&#8217;,</p><p>);</p><p>$args = wp_parse_args( $args, $defaults );<br
/> extract( $args, EXTR_SKIP );</p><p>$cachefile = $cachepath . str_replace( &#8220;/&#8221;, &#8220;-&#8221;, $file);<br
/> $cachefile_created = ((@file_exists($cachefile))  ) ? @filemtime($cachefile) : 0;</p><p>if ( !$rewrite and ( time() &#8211; $cachetime &lt; $cachefile_created ) and ( $always || !is_user_logged_in())  ) {<br
/> echo  file_get_contents( $cachefile );<br
/> } else {<br
/> //ob_start(ob_gzhandler);<br
/> ob_start();</p><p>include($file);</p><p>if ( $always || !is_user_logged_in() ) {<br
/> // in caso di utente loggato manda subito l&#8217;output<br
/> $b = ob_get_clean();<br
/> //$b = trim(preg_replace(&#8216;/\s+/&#8217;, &#8216; &#8216;, $b));<br
/> $b = preg_replace(&#8216;/[ ]+/&#8217;, &#8216; &#8216;, $b);<br
/> $b = str_replace( array(&#8220;\r\n&#8221;, &#8220;\r&#8221;, &#8220;\n&#8221;, &#8220;\t&#8221; ), &#8221;, $b);</p><p>if ( strlen($b) &gt; 1 ) {<br
/> // controllo che il buffer sia valorizzato<br
/> $b = &#8220;&#8221; . $b;<br
/> file_put_contents( $cachefile , $b);<br
/> }</p><p>echo $b;</p><p>}<br
/> ob_end_flush(); //<br
/> }<br
/> }</p><p>L&#8217;unico argomento obbligatorio è il nome della file da caricare con una serie di argomenti opzionali (che devono essere passati come array).</p><p>Al momento, a differenza delle <strong>Transients API</strong>, ho deciso di salvare la cache su disco sequendo l&#8217;appoccio suggerito anche da altri plugin che in caso di problemi permette un debug più semplice e veloce (una semplice eliminazione dei file forze la rigenerazione della cache )</p><p>Se qualcuno volesse usarla, <strong>debuggarla</strong> e/o suggerirmi come migliorarla la può scaricare da qui sotto.</p> <a
href="http://maurizio.mavida.com/download/cache_template_part.txt"><img
src="http://maurizio.mavida.com/wp-content/plugins/download-monitor/img/download.gif" alt="cache_template_part" /></a><p>Questo vuole essere un&#8217;esempio di quello che intendo per qualità che può essere riassunto in un uso consapevole delle funzionalità core di <strong>WordPress</strong> e la realizzazione di &#8220;utility&#8221; che possano aiutare al raggiungimento dei requisiti.</p><p><strong>Ultima nota finale</strong>:<br
/> Il fatto di usare sistemi di cache manuale non vuol dire che si debbano usare solo quelli.<br
/> Un bella spinta la può dare l&#8217;utilizzo dell&#8217;<strong><a
href="http://wordpress.org/extend/plugins/apc/">APC Object Cache Backend</a></strong> (se il server lo supporta).<br
/> Se siete tra i fortunati ad avere <strong><a
href="http://nginx.org/en/">nginx</a></strong> come web server vi suggerisco <strong><a
href="http://wordpress.org/extend/plugins/nginx-proxy-cache-integrator/">Nginx proxy cache integrator</a></strong>.<br
/> E poi per tutti il forse poco conosciuto <strong><a
href="http://wordpress.org/extend/plugins/wp-widget-cache/">Widget Cache</a></strong></p><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2010/12/28/wordpress-e-qualita-sistemi-di-cache-manuali/">WordPress e qualità: sistemi di cache manuali</a> was first posted on dicembre 28, 2010 at 3:50 pm.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2010/12/28/wordpress-e-qualita-sistemi-di-cache-manuali/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Usare trackPageview asicrono su due account</title><link>http://maurizio.mavida.com/2010/11/13/usare-trackpageview-asicrono-su-due-account/</link> <comments>http://maurizio.mavida.com/2010/11/13/usare-trackpageview-asicrono-su-due-account/#comments</comments> <pubDate>Sat, 13 Nov 2010 10:24:34 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[featured]]></category> <category><![CDATA[google analytics]]></category> <category><![CDATA[async]]></category> <category><![CDATA[MultipleCommands]]></category> <category><![CDATA[setAccount]]></category> <category><![CDATA[trackPageview]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=3466</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comUno sei suggerimenti che mi sono portato a casa dal corso di Google Analytics Avanzato è relativo alla gestione del tracciamento delle pagine su account multipli. Lo scenario in cui può servire una cosa del genere è quando risulta necessario rendere disponibile ad un account esterno i dati provenienti di un sottoinsieme [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p>Uno sei suggerimenti che mi sono portato a casa dal corso di <strong><a
href="http://www.yoyoformazione.it/2010/07/corso-google-analytics-novembre-2010.php">Google Analytics Avanzato</a></strong> è relativo alla gestione del tracciamento delle pagine su account multipli.</p><p><img
src="http://maurizio.mavida.com/wp-content/uploads/2010/11/multiple-trackpageview.jpg" alt="" title="multiple-trackpageview" width="480" height="220" class="alignnone size-full wp-image-3482" /></p><p>Lo scenario in cui può servire una cosa del genere è quando risulta necessario rendere disponibile ad un account esterno i dati provenienti di un <em>sottoinsieme di pagine</em> senza gonfiare le statistiche dell&#8217;account principale con delle &#8220;<strong>pagine virtuali</strong>&#8221; (vedi <a
href="http://code.google.com/intl/it-IT/apis/analytics/docs/gaJS/gaJSApiBasicConfiguration.html#_gat.GA_Tracker_._trackPageview">_trackPageview</a>)</p><p>Anche se sulla <a
href="http://code.google.com/intl/it-IT/apis/analytics/docs/tracking/asyncUsageGuide.html#MultipleCommands">documentazione ufficiale</a> c&#8217;è scritto tutto preferisco appuntarmelo su queste pagine&#8230;</p><p>Questo è il codice da usare per tracciare la stessa pagina su due account diversi:</p><div
class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table
cellspacing="0" cellpadding="0"><tbody><tr><td
style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br
/>2<br
/>3<br
/>4<br
/>5<br
/>6<br
/></div></td><td><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">_gaq.push(<br
/> &nbsp; ['_setAccount', 'UA-XXXXX-1'],<br
/> &nbsp; ['_trackPageview'],<br
/> &nbsp; ['b._setAccount', 'UA-XXXXX-2'],<br
/> &nbsp; ['b._trackPageview']<br
/> );</div></td></tr></tbody></table></div><p>Se poi siamo in una situazione in cui su questi account vengono tracciati più <em>domini di primo livello</em> (['_setDomainName', 'none']) e magari ci sono di mezzo anche <strong>variabili custom</strong> lo script diventa una roba del genere:</p><div
class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table
cellspacing="0" cellpadding="0"><tbody><tr><td
style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br
/>2<br
/>3<br
/>4<br
/>5<br
/>6<br
/>7<br
/>8<br
/>9<br
/>10<br
/>11<br
/>12<br
/>13<br
/>14<br
/>15<br
/>16<br
/>17<br
/>18<br
/>19<br
/>20<br
/>21<br
/></div></td><td><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; var _gaq = _gaq || [];<br
/> &nbsp; _gaq.push(['_setAccount', 'UA-XXXXX-25']);<br
/> &nbsp; _gaq.push(['_setDomainName', 'none']);<br
/> &nbsp; _gaq.push(['_setAllowLinker', true]);<br
/> &nbsp; _gaq.push(['_setAllowHash', false]);<br
/> &nbsp; _gaq.push(['_setCustomVar',1,'customers', 'CustomerName',3]);<br
/> &nbsp; _gaq.push(['_trackPageview']);<br
/> <br
/> &nbsp; /* inzio tracciamento su account cliente */<br
/> &nbsp; _gaq.push(['ca._setAccount', 'UA-XXXXX-34']);<br
/> &nbsp; _gaq.push(['ca._setDomainName', 'none']);<br
/> &nbsp; _gaq.push(['ca._setAllowLinker', true]);<br
/> &nbsp; _gaq.push(['ca._setAllowHash', false]);<br
/> &nbsp; _gaq.push(['ca._trackPageview']);<br
/> <br
/> <br
/> &nbsp; (function() {<br
/> &nbsp; &nbsp; var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;<br
/> &nbsp; &nbsp; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';<br
/> &nbsp; &nbsp; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);<br
/> &nbsp; })();</div></td></tr></tbody></table></div><p>In questo modo ottengo delle statistiche <strong>pulite</strong> sull&#8217;account principale e dove serve traccio la visite sulle pagine anche sul quello esterno.<br
/> Morale della storia: <em>ogni account ha le sue statistiche e tutti vivono felici e contenti&#8230;</em></p><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2010/11/13/usare-trackpageview-asicrono-su-due-account/">Usare trackPageview asicrono su due account</a> was first posted on novembre 13, 2010 at 11:24 am.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2010/11/13/usare-trackpageview-asicrono-su-due-account/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>WordPress: Alterare il layout durante un loop</title><link>http://maurizio.mavida.com/2010/10/22/wordpress-alterare-il-layout-durante-un-loop/</link> <comments>http://maurizio.mavida.com/2010/10/22/wordpress-alterare-il-layout-durante-un-loop/#comments</comments> <pubDate>Fri, 22 Oct 2010 12:46:03 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[featured]]></category> <category><![CDATA[tutorial]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[custom post type]]></category> <category><![CDATA[get_post_type]]></category> <category><![CDATA[post_class]]></category> <category><![CDATA[pre_get_posts]]></category> <category><![CDATA[the_terms]]></category> <category><![CDATA[wordpress taxonomies]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=2524</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comLo so. Il titolo è un po&#8217; criptico ma provo a descrivervi lo scenario: Installazione di WordPress. Siamo in homepage. Durante il listing dei contenuti devo gestire, a seconda del tipo e della posizione, il modo con cui i posts vengono visualizzati (es. immagini, allineamento, tassonomie ). Mi spiego meglio. Ho registrato [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p>Lo so. Il titolo è un po&#8217; criptico ma provo a descrivervi lo scenario:</p><p>Installazione di <strong><a
href="http://maurizio.mavida.com/categorie/wordpress/">WordPress</a></strong>. Siamo in homepage. Durante il listing dei contenuti devo gestire, a seconda del tipo e della posizione, il modo con cui i posts vengono visualizzati (es. immagini, allineamento, tassonomie ).</p><p>Mi spiego meglio. Ho registrato due nuovi tipi (ex. video e libri) ai quali ho associato delle <strong>tassonomie personalizzate</strong> (es. i video hanno i registi mentre i libri gli autori).</p><p><img
src="http://maurizio.mavida.com/wp-content/uploads/2010/10/loop-layout.gif" alt="" title="loop-layout" width="480" height="220" class="alignnone size-full wp-image-2561" /></p><p>Nel mio loop voglio visualizzare film e libri con uno stile che indichi chiarmanete di che tipo è questo contenuto ed inoltre voglio aggiungere le informazioni reletive alla tassonomie proprietarie.</p><p>La cosa si complica ancora perchè i primi <em>n</em> contenuti (nel nostro caso 3) sono considerati &#8220;<em>featured</em>&#8221; e vanno visualizzati con <strong>thumbnail</strong> ed <strong>excerpt</strong> mentre gli altri sono con il titolo.</p><p><span
id="more-2524"></span></p><p>Partiamo dall&#8217;inizio ed iniziamo ad aggiungere i &#8220;<strong><a
href="http://maurizio.mavida.com/2010/08/25/wordpress-usare-meglio-i-custom-post-types/">custom type</a></strong>&#8221; in home:<br
/> (io questo snippet l&#8217;ho aggiunto in functions.php ed è importante farlo in quanto di default vengono visualizzati solo i tipo &#8220;post&#8221;)</p><div
class="codecolorer-container php twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table
cellspacing="0" cellpadding="0"><tbody><tr><td
style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br
/>2<br
/>3<br
/>4<br
/>5<br
/>6<br
/>7<br
/>8<br
/>9<br
/>10<br
/></div></td><td><div
class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">add_filter<span
style="color: #66cc66;">&#40;</span> <span
style="color: #ff0000;">'pre_get_posts'</span>, <span
style="color: #ff0000;">'get_home_posts'</span> <span
style="color: #66cc66;">&#41;</span>;<br
/> <br
/> <span
style="color: #000000; font-weight: bold;">function</span> get_home_posts<span
style="color: #66cc66;">&#40;</span> <span
style="color: #0000ff;">$query</span> <span
style="color: #66cc66;">&#41;</span> <span
style="color: #66cc66;">&#123;</span><br
/> <br
/> &nbsp; <span
style="color: #b1b100;">if</span> <span
style="color: #66cc66;">&#40;</span> is_home<span
style="color: #66cc66;">&#40;</span><span
style="color: #66cc66;">&#41;</span> <span
style="color: #66cc66;">&amp;&amp;</span> <span
style="color: #66cc66;">!</span><span
style="color: #0000ff;">$query</span>-<span
style="color: #66cc66;">&gt;</span><span
style="color: #006600;">query_vars</span><span
style="color: #66cc66;">&#91;</span><span
style="color: #ff0000;">'suppress_filters'</span><span
style="color: #66cc66;">&#93;</span> <span
style="color: #66cc66;">&#41;</span><span
style="color: #66cc66;">&#123;</span><br
/> &nbsp; &nbsp; <span
style="color: #0000ff;">$query</span>-<span
style="color: #66cc66;">&gt;</span><span
style="color: #006600;">set</span><span
style="color: #66cc66;">&#40;</span> <span
style="color: #ff0000;">'post_type'</span>, <span
style="color: #000066;">array</span><span
style="color: #66cc66;">&#40;</span> <span
style="color: #ff0000;">'post'</span>, <span
style="color: #ff0000;">'video'</span>, <span
style="color: #ff0000;">'libri'</span> <span
style="color: #66cc66;">&#41;</span> <span
style="color: #66cc66;">&#41;</span>;<br
/> &nbsp; &nbsp; <span
style="color: #66cc66;">&#125;</span><br
/> &nbsp; &nbsp; <br
/> &nbsp; &nbsp; <span
style="color: #b1b100;">return</span> <span
style="color: #0000ff;">$query</span>;<br
/> &nbsp;<span
style="color: #66cc66;">&#125;</span></div></td></tr></tbody></table></div><p>Ora vediamo il codice del loop nel quale ho usato <a
href="http://codex.wordpress.org/Function_Reference/get_template_part">get_template_part</a> per la gestione in base al tipo.</p><div
class="codecolorer-container php twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table
cellspacing="0" cellpadding="0"><tbody><tr><td
style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br
/>2<br
/>3<br
/>4<br
/>5<br
/>6<br
/>7<br
/>8<br
/>9<br
/>10<br
/>11<br
/></div></td><td><div
class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; <span
style="color: #b1b100;">if</span> <span
style="color: #66cc66;">&#40;</span>have_posts<span
style="color: #66cc66;">&#40;</span><span
style="color: #66cc66;">&#41;</span><span
style="color: #66cc66;">&#41;</span> : <span
style="color: #b1b100;">while</span> <span
style="color: #66cc66;">&#40;</span>have_posts<span
style="color: #66cc66;">&#40;</span><span
style="color: #66cc66;">&#41;</span><span
style="color: #66cc66;">&#41;</span> : the_post<span
style="color: #66cc66;">&#40;</span><span
style="color: #66cc66;">&#41;</span>; <br
/> <br
/> &nbsp; &nbsp; <span
style="color: #0000ff;">$post_index</span> ++;<br
/> <br
/> &nbsp; &nbsp; <span
style="color: #808080; font-style: italic;">// controllo se l'articolo è tra i primi 3 e dichiaro una classe &quot;featured&quot;</span><br
/> &nbsp; &nbsp; <span
style="color: #0000ff;">$post_class_position</span> = <span
style="color: #ff0000;">&quot;&quot;</span>;<br
/> &nbsp; &nbsp; <span
style="color: #b1b100;">if</span> <span
style="color: #66cc66;">&#40;</span> <span
style="color: #0000ff;">$post_index</span> <span
style="color: #66cc66;">&lt;</span> <span
style="color: #cc66cc;">3</span> <span
style="color: #66cc66;">&#41;</span> <span
style="color: #0000ff;">$post_class_position</span> = <span
style="color: #ff0000;">&quot;featured&quot;</span>;<br
/> <br
/> &nbsp; &nbsp; get_template_part<span
style="color: #66cc66;">&#40;</span> <span
style="color: #ff0000;">'post-layout'</span>, &nbsp;get_post_type<span
style="color: #66cc66;">&#40;</span> <span
style="color: #0000ff;">$post</span> <span
style="color: #66cc66;">&#41;</span> <span
style="color: #66cc66;">&#41;</span>;<br
/> <br
/> &nbsp; &nbsp; <span
style="color: #b1b100;">endwhile</span>; <span
style="color: #b1b100;">endif</span>;</div></td></tr></tbody></table></div><p>In questo modo a seconda del &#8220;<strong>post type</strong>&#8221; viene cercato e poi incluso un file con questo nome &#8220;post-layout-tipo.php&#8221;.<br
/> Mi sono quindi creato tre file (<em>post-layout-libri.php</em>, <em>post-layout-video.php</em>, <em>post-layout.php</em>) nei quali sono andato a preparare del <strong>markup</strong> specifico.</p><p>Prendiamo adesso come esempio quello dei libri: (post-layout-libri.php)</p><p></code></p><div
class="codecolorer-container php twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table
cellspacing="0" cellpadding="0"><tbody><tr><td
style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br
/>2<br
/>3<br
/>4<br
/>5<br
/>6<br
/>7<br
/>8<br
/>9<br
/>10<br
/>11<br
/>12<br
/>13<br
/>14<br
/>15<br
/>16<br
/>17<br
/>18<br
/>19<br
/>20<br
/>21<br
/>22<br
/>23<br
/>24<br
/>25<br
/>26<br
/>27<br
/>28<br
/>29<br
/>30<br
/>31<br
/>32<br
/>33<br
/>34<br
/>35<br
/>36<br
/>37<br
/>38<br
/></div></td><td><div
class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;div id=&quot;post-<span
style="color: #000000; font-weight: bold;">&lt;?php</span> the_ID<span
style="color: #66cc66;">&#40;</span><span
style="color: #66cc66;">&#41;</span>; <span
style="color: #000000; font-weight: bold;">?&gt;</span>&quot; <span
style="color: #000000; font-weight: bold;">&lt;?php</span> post_class<span
style="color: #66cc66;">&#40;</span> <span
style="color: #ff0000;">&quot;tipo_libro &quot;</span> . <span
style="color: #0000ff;">$post_class_position</span> <span
style="color: #66cc66;">&#41;</span>; <span
style="color: #000000; font-weight: bold;">?&gt;</span> &gt;<br
/> <br
/> &nbsp; &lt;h2 class=&quot;entry-title&quot;&gt;&lt;a href=&quot;<span
style="color: #000000; font-weight: bold;">&lt;?php</span> the_permalink<span
style="color: #66cc66;">&#40;</span><span
style="color: #66cc66;">&#41;</span>; <span
style="color: #000000; font-weight: bold;">?&gt;</span>&quot; title=&quot;<span
style="color: #000000; font-weight: bold;">&lt;?php</span> the_title_attribute<span
style="color: #66cc66;">&#40;</span> <span
style="color: #66cc66;">&#41;</span> &nbsp;<span
style="color: #000000; font-weight: bold;">?&gt;</span>&quot; rel=&quot;bookmark&quot;&gt;<br
/> &nbsp; <span
style="color: #000000; font-weight: bold;">&lt;?php</span> the_title<span
style="color: #66cc66;">&#40;</span><span
style="color: #66cc66;">&#41;</span>; <span
style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/a&gt;<br
/> &nbsp; &lt;/h2&gt;<br
/> <br
/> &nbsp; &lt;div class=&quot;entry-meta&quot;&gt;<br
/> &nbsp; &nbsp; <span
style="color: #000000; font-weight: bold;">&lt;?php</span> <br
/> &nbsp; &nbsp; custom_posted_on<span
style="color: #66cc66;">&#40;</span><span
style="color: #66cc66;">&#41;</span>; <span
style="color: #808080; font-style: italic;">// meta information (post—date/time and author)</span><br
/> &nbsp; &nbsp; <span
style="color: #000000; font-weight: bold;">?&gt;</span><br
/> &nbsp; &lt;/div&gt;&lt;!-- .entry-meta --&gt;<br
/> <br
/> &nbsp; <span
style="color: #000000; font-weight: bold;">&lt;?php</span> <br
/> &nbsp; <span
style="color: #808080; font-style: italic;">//funzione custom per le gestione della thumbnails </span><br
/> &nbsp; <span
style="color: #b1b100;">if</span> <span
style="color: #66cc66;">&#40;</span> <span
style="color: #0000ff;">$post_class_position</span> == <span
style="color: #ff0000;">&quot;featured&quot;</span><span
style="color: #66cc66;">&#41;</span> <span
style="color: #66cc66;">&#123;</span><br
/> &nbsp; &nbsp; <span
style="color: #0000ff;">$args</span> = <span
style="color: #000066;">array</span><span
style="color: #66cc66;">&#40;</span><span
style="color: #ff0000;">&quot;class&quot;</span> =<span
style="color: #66cc66;">&gt;</span> <span
style="color: #ff0000;">&quot;alignleft&quot;</span>, <span
style="color: #ff0000;">&quot;link&quot;</span> =<span
style="color: #66cc66;">&gt;</span> get_the_permalink<span
style="color: #66cc66;">&#40;</span><span
style="color: #66cc66;">&#41;</span> <span
style="color: #66cc66;">&#41;</span>;<br
/> &nbsp; &nbsp; the_thumb<span
style="color: #66cc66;">&#40;</span> <span
style="color: #0000ff;">$args</span> <span
style="color: #66cc66;">&#41;</span>; <br
/> &nbsp; &nbsp; <span
style="color: #66cc66;">&#125;</span><br
/> &nbsp;<span
style="color: #000000; font-weight: bold;">?&gt;</span><br
/> <br
/> &nbsp; &lt;div class=&quot;entry-content&quot;&gt;<br
/> &nbsp; &nbsp; <span
style="color: #000000; font-weight: bold;">&lt;?php</span> <br
/> &nbsp; &nbsp; <span
style="color: #b1b100;">if</span> <span
style="color: #66cc66;">&#40;</span>is_single<span
style="color: #66cc66;">&#40;</span><span
style="color: #66cc66;">&#41;</span> <span
style="color: #66cc66;">&#41;</span> <span
style="color: #66cc66;">&#123;</span><br
/> &nbsp; &nbsp; &nbsp;the_content<span
style="color: #66cc66;">&#40;</span><span
style="color: #66cc66;">&#41;</span>; <span
style="color: #808080; font-style: italic;">// visualizzazione su pagina di dettaglio (single.php)</span><br
/> &nbsp; &nbsp; &nbsp;<span
style="color: #66cc66;">&#125;</span> &nbsp; <span
style="color: #b1b100;">else</span> <span
style="color: #b1b100;">if</span> <span
style="color: #66cc66;">&#40;</span> <span
style="color: #0000ff;">$post_class_position</span> == <span
style="color: #ff0000;">&quot;featured&quot;</span><span
style="color: #66cc66;">&#41;</span> <span
style="color: #66cc66;">&#123;</span><br
/> &nbsp; &nbsp; &nbsp;the_excerpt<span
style="color: #66cc66;">&#40;</span><span
style="color: #66cc66;">&#41;</span>; <span
style="color: #808080; font-style: italic;">// visualizzo il riassunto solo se è presente la classe &quot;featured&quot;</span><br
/> &nbsp; &nbsp; &nbsp;<span
style="color: #66cc66;">&#125;</span><br
/> &nbsp; &nbsp; <span
style="color: #000000; font-weight: bold;">?&gt;</span><br
/> &nbsp; &lt;/div&gt;<br
/> <br
/> &nbsp; &lt;div class=&quot;entry-info&quot;&gt;<br
/> &nbsp; &nbsp; <span
style="color: #000000; font-weight: bold;">&lt;?php</span> <br
/> &nbsp; &nbsp; &nbsp; the_terms<span
style="color: #66cc66;">&#40;</span> <span
style="color: #0000ff;">$post</span>-<span
style="color: #66cc66;">&gt;</span><span
style="color: #006600;">ID</span>, <span
style="color: #ff0000;">'autore'</span>, <span
style="color: #ff0000;">&quot;Autore: &quot;</span> <span
style="color: #66cc66;">&#41;</span>; <span
style="color: #808080; font-style: italic;">//tassonomia personalizzata</span><br
/> &nbsp; &nbsp; &nbsp; custom_posted_in<span
style="color: #66cc66;">&#40;</span><span
style="color: #66cc66;">&#41;</span>; &nbsp;<span
style="color: #808080; font-style: italic;">//meta information (category, tags and permalink) </span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #000000; font-weight: bold;">?&gt;</span><br
/> &nbsp; &lt;/div&gt;&lt;!-- .entry-info --&gt;<br
/> <br
/> &lt;/div&gt;</div></td></tr></tbody></table></div><p>La funzione principale che mi permette di gestire il layout a livello di css è <a
href="http://codex.wordpress.org/Template_Tags/post_class"><strong>post_class</strong></a> che aggiunge "<em>dinamicamente</em>" due classi le quali definiscono il "<strong>post type</strong>" e visualizzazione dei "featured"</p><p>Per la visualizzazione delle tassonomie personalizzate mi affido ad un semplice <a
href="http://codex.wordpress.org/Function_Reference/the_terms"><strong>the_terms</strong></a> alla quale indico l'ID del post ed il nome della tassonomia.</p><p>Arrivati qui basta lavorare un po' con i fogli di stile per avere il pieno controllo di cosa e come visualizzare i nostri contenuti.</p><p>Il codice scritto è ovviamente perfettibile e la prima cosa da fare sarebbe quella di ridurre la ridondanza di codice e fare cache dei contentuti.</p><p>Se qualcosa non fosse chiaro.... chiedete.</p><p>Nota: Al momento in questo codice non viene gestita la paginazione. Forse, magari, può darsi che sia argomento di un futuro post.</p><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2010/10/22/wordpress-alterare-il-layout-durante-un-loop/">WordPress: Alterare il layout durante un loop</a> was first posted on ottobre 22, 2010 at 1:46 pm.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2010/10/22/wordpress-alterare-il-layout-durante-un-loop/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>WordPress è meglio di Drupal</title><link>http://maurizio.mavida.com/2010/10/04/wordpress-e-meglio-di-drupal/</link> <comments>http://maurizio.mavida.com/2010/10/04/wordpress-e-meglio-di-drupal/#comments</comments> <pubDate>Mon, 04 Oct 2010 08:41:24 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[featured]]></category> <category><![CDATA[sviluppo]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[barcamp]]></category> <category><![CDATA[drupal]]></category> <category><![CDATA[slide]]></category> <category><![CDATA[torino]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=1983</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comA dirlo non sono io ma Jennifer Lea Lampton durante la DrupalCon di Copenaghen lo scorso 23 Agosto. Ma andiamo con ordine: Sabato scorso sono stato al DrupalCamp di Torino (spendida location) e durante il talk di Jeffrey McGuire è stato segnalato un intervento molto &#8220;provocatorio&#8221; preparato da questa Jennifer che come [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p>A dirlo non sono io ma <a
href="http://www.jenlampton.com/">Jennifer Lea Lampton</a> durante la <a
href="http://cph2010.drupal.org/sessions/wordpress-better-drupal-developers-take-note">DrupalCon</a> di Copenaghen lo scorso 23 Agosto.</p><p><a
href="http://cph2010.drupal.org/sessions/wordpress-better-drupal-developers-take-note"><img
src="http://maurizio.mavida.com/wp-content/uploads/2010/10/wordpress-is-better-than-drupal.jpg" alt="" title="wordpress-is-better-than-drupal" width="480" height="220" class="alignnone size-full wp-image-1990" /><br
/> </a></p><p>Ma andiamo con ordine:<br
/> Sabato scorso sono stato al <a
href="http://torino2010.drupalcamp.it/">DrupalCamp di Torino</a> (<a
href="http://www.cascinaroccafranca.it/">spendida location</a>) e durante  il <a
href="http://torino2010.drupalcamp.it/sessions/welcome-drupalcamp">talk</a> di <a
href="http://horncologne.com/">Jeffrey McGuire</a> è stato segnalato un intervento molto &#8220;provocatorio&#8221; preparato da questa <a
href="http://www.slideshare.net/jenlampton">Jennifer</a> che come potete vedere dalle sue esperienze non credo possa considerarsi una &#8220;<a
href="http://en.wikipedia.org/wiki/Fan_%28person%29">fanboy</a>&#8221; di <a
href="http://maurizio.mavida.com/categorie/wordpress/">WordPress</a>.</p><p>Qui sotto le slide che danno una chiara idea del suo talk:</p><p><object
id="__sse4830309" width="425" height="355"><param
name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=wordpress-100724163221-phpapp02&#038;stripped_title=wordpress-is-better-than-drupal-developers-take-note-4830309&#038;userName=jenlampton" /><param
name="allowFullScreen" value="true"/><param
name="allowScriptAccess" value="always"/><embed
name="__sse4830309" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=wordpress-100724163221-phpapp02&#038;stripped_title=wordpress-is-better-than-drupal-developers-take-note-4830309&#038;userName=jenlampton" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></p><p>Sono convito che il tutto vada letto con spirito critico e come diceva anche Mizi in un <a
href="http://friendfeed.com/miziomon/ab5173b5/di-wordpress-e-professionalita">commento su FriendFeed</a> sono prodotti diversi con target diversi.</p><p><strong>WordPress</strong> è una piattaforma che ha sicuramente molti margini di miglioramento sopratutto nell&#8217;implementazione del suo <em>core</em> e nell&#8217;<strong>ottimizzazione delle performance</strong> ma penso che a questo punto non sia più giusto considerarlo come un giocattolo ad uso esclusivo dei <strong>webdesigner</strong>.</p><p><strong>update</strong>:<br
/> per chi vuole partecipare è partita un&#8217;interessante <a
href="http://friendfeed.com/miziomon/088ea2ee/wordpress-e-meglio-di-drupal">discussione</a> su <strong>FriendFeed</strong></p><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2010/10/04/wordpress-e-meglio-di-drupal/">WordPress è meglio di Drupal</a> was first posted on ottobre 4, 2010 at 9:41 am.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2010/10/04/wordpress-e-meglio-di-drupal/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>WordPress: XML Sitemap e Custom Post type</title><link>http://maurizio.mavida.com/2010/09/29/wordpress-generazione-sitemap-custom-post-type/</link> <comments>http://maurizio.mavida.com/2010/09/29/wordpress-generazione-sitemap-custom-post-type/#comments</comments> <pubDate>Wed, 29 Sep 2010 11:40:28 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[featured]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[Arne Brachhold]]></category> <category><![CDATA[custom post type]]></category> <category><![CDATA[Google XML Sitemaps]]></category> <category><![CDATA[sitemap]]></category> <category><![CDATA[wordpress plugin]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=1952</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comSu quasi tutte le installazioni WordPress di cui seguo lo sviluppo è mia abitudine installare e configurare la generazione della sitemap attraverso questo plugin: Google XML Sitemaps. Poi, come già vi dicevo quando parlavamo di checklist, vado a segnalare la presenza della sitemap sui webmaster tools. Succede però che per un sito [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p>Su quasi tutte le installazioni <strong><a
href="http://maurizio.mavida.com/categorie/wordpress/">WordPress</a></strong> di cui seguo lo sviluppo è mia abitudine installare e configurare la generazione della sitemap attraverso questo plugin: <a
href="http://wordpress.org/extend/plugins/google-sitemap-generator/">Google XML Sitemaps</a>.</p><p>Poi, come già vi dicevo quando parlavamo di <strong><a
href="http://maurizio.mavida.com/2010/09/20/la-mia-checklist-prima-di-andare-online/">checklist</a></strong>, vado a segnalare la presenza della sitemap sui <strong><a
href="https://www.google.com/webmasters/tools/">webmaster tools</a></strong>.</p><p>Succede però che per un sito in cui i contenuti sono stati pensati facendo un largo uso dei <a
href="http://maurizio.mavida.com/2010/08/25/wordpress-usare-meglio-i-custom-post-types/">Custom Post Type</a> mi accorga che il crawler legga solo una piccola porzione delle pagine preparate.</p><p>Penso ad un errore nella configurazione dei <em>permalink</em> e cerco tra gli <strong>errori si scansione</strong> ma non trovo nulla. Poi leggo meglio il numero di &#8220;<strong>URL inviati</strong>&#8221; e trovo 4 (<em>quattro</em>).</p><p>Essendo le pagine sul sito oltre 50 decido di dare un&#8217;occhiata alla sitemap (in genere http://nomesito.it/sitemap.xml) e mi accorgo che dentro questo file xml mancano tutti i riferimenti alla pagine di tipo <strong>Custom Post Type</strong>.</p><p><img
src="http://maurizio.mavida.com/wp-content/uploads/2010/09/custom-type-xml-sitemap.jpg" alt="" title="custom-type-xml-sitemap" width="480" height="221" class="alignnone size-full wp-image-1957" /></p><p>Dopo qualche tentativo tra cui, riconfigurazione del plugin e rigenerazione della <strong>sitemap</strong>, vedo che la situazione non cambia e decido di dare un&#8217;occhiata al codice: (file: sitemap-core.php, riga 1747)</p><div
class="code">(post_status=&#8217;publish&#8217; AND (post_type=&#8217;post&#8217; OR post_type=&#8221;))</div><p>Bene, per lo meno adesso sappiamo il perchè: i <strong>Custom Post Type</strong> non vengono neppure presi in considerazione.<br
/> La cosa più veloce che mi è venuta in mente per risolvere il problema è stata una piccola aggiunta a quel pezzo di codice:</p><div
class="code">(post_status=&#8217;publish&#8217; AND (post_type=&#8217;post&#8217; OR post_type=&#8217;xxx&#8217; OR post_type=&#8221;))</div><p><em>(dove &#8220;xxx&#8221; è il nome del mio Custom Post Type)</em></p><p>Modifico, salvo, carico in in ftp, rigenero la sitemap e faccio un controllo: molto bene adesso le pagine ci sono tutte&#8230;</p><p>Mentre aspetto che il <strong>crawler</strong> ripassi ne approfitto e faccio un ricerca per capire se sono l&#8217;unico ad aver riscontrato questo &#8220;difetto&#8221; ed ovviamente ho <a
href="http://wordpress.org/support/topic/plugin-google-xml-sitemaps-custom-post-type">trovato</a> chi ha risolto meglio di me creando un plugin che estende l&#8217;originale di <a
href="http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/">Arne Brachhold</a> ed aggiunge <em>automaticamente</em> tutti i <strong>Custom Post Type</strong> pubblici. (escude quindi attachment, revision, ecc&#8230;).</p><p>Questo il link: <a
href="http://www.getupandrunning.net/2010/06/adding-custom-content-types-to-the-sitemap/">GUAR Sitemap</a></p><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2010/09/29/wordpress-generazione-sitemap-custom-post-type/">WordPress: XML Sitemap e Custom Post type</a> was first posted on settembre 29, 2010 at 12:40 pm.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2010/09/29/wordpress-generazione-sitemap-custom-post-type/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>La mia Checklist prima di andare online</title><link>http://maurizio.mavida.com/2010/09/20/la-mia-checklist-prima-di-andare-online/</link> <comments>http://maurizio.mavida.com/2010/09/20/la-mia-checklist-prima-di-andare-online/#comments</comments> <pubDate>Mon, 20 Sep 2010 11:27:45 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[featured]]></category> <category><![CDATA[sviluppo]]></category> <category><![CDATA[tutorial]]></category> <category><![CDATA[checklist]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=1549</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comPrima di andare &#8220;definitiviamente&#8221; online con un sito, indipendentemente dallo strumento usato (sia questo WordPress o codice &#8220;from scratch&#8221;),  è mia abitudine fare una serie di operazioni che in genere mi aiutano ad evitare problemi. Con il tempo ho preparato questa Checklist in cui potrete trovare attività che vanno da quelle di [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p>Prima di andare &#8220;definitiviamente&#8221; online con un sito, indipendentemente dallo strumento usato (sia questo <a
href="../categorie/wordpress/"><strong>WordPress</strong></a> o codice &#8220;from scratch&#8221;),  è mia abitudine fare una serie di operazioni che in genere mi aiutano ad evitare problemi.</p><p><img
class="alignnone size-full wp-image-1828" title="checklist-prima-di-andare-online" src="http://maurizio.mavida.com/wp-content/uploads/2010/09/checklist-prima-di-andare-online.jpg" alt="" width="480" height="220" /></p><p>Con il tempo ho preparato questa <strong>Checklist</strong> in cui potrete trovare attività che vanno da quelle di competenze più  &#8220;<em>seo</em>&#8221; a quelle che sono operazioni puramente <em>sistemistiche</em>.</p><p>Come qualsiasi altra <strong>Checklist</strong> non va applicata &#8220;bovinamente&#8221;, ma adattata in base ella proprie competente ed agli accordi presi con il cliente.</p><ol><li>Preparazione profilo <a
href="http://maurizio.mavida.com/2010/09/14/strumenti-e-risorse-per-google-analytics/"><strong>Google Analytics</strong></a> e condivisione accesso con email cliente</li><li>Configurazione script tracciamento sul sito e configurazione custom_var (<a
href="http://wordpress.org/extend/plugins/google-analytics-for-wordpress/">Google Analytics for WordPress</a>)</li><li>Preparazione sitemap (<a
href="http://wordpress.org/extend/plugins/google-sitemap-generator/">Google XML Sitemaps</a>)</li><li>Registrazione <a
href="http://www.google.com/webmasters/tools?hl=it">Google WebMaster Tools</a> e segnalazione sitemap</li><li>Registrazione <a
href="http://www.bing.com/toolbox/webmasters/">Bing WebMaster</a> Tools e segnalazione sitemap</li><li>Verifica file Robots.txt con escusione aree riserate (<a
href="http://wordpress.org/extend/plugins/irobotstxt-seo/">iRobots.txt</a>)</li><li>Configurazione servizio di monitoraggio con segnalazione mail in caso di down (es <a
href="http://www.montastic.com/">Monastic</a>)</li><li>Configurazione backup <a
href="http://maurizio.mavida.com/2005/08/09/backup-con-rsync-e-crontab/">file</a> e <a
href="http://maurizio.mavida.com/2007/03/19/mysql-backup-via-mail/">database</a> (<a
href="http://wordpress.org/extend/plugins/wordpress-backup/">WordPress Backup</a> / <a
href="http://wordpress.org/extend/plugins/wp-db-backup/">WordPress database backup</a>)</li><li>Controllo funzionamento Form contatti</li><li>Preparazione .htaccess per compressione gzip, configurazione cache ecc&#8230; (vedi <a
href="http://oreilly.com/catalog/9780596529307">High Performance Web Sites</a>)</li></ol><p>Qui sotto il <strong>download</strong> con il pdf della <strong>Checklist</strong>&#8230;</p> <a
href="http://maurizio.mavida.com/download/Checklist-cosa-fare-prima-della-pubblicazione-di-un-sito.pdf"><img
src="http://maurizio.mavida.com/wp-content/plugins/download-monitor/img/download.gif" alt="Checklist cosa fare prima della pubblicazione di unsito" /></a><p>Se pensate ci siano altre cose da aggiungere fatemelo sapere&#8230;</p><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2010/09/20/la-mia-checklist-prima-di-andare-online/">La mia Checklist prima di andare online</a> was first posted on settembre 20, 2010 at 12:27 pm.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2010/09/20/la-mia-checklist-prima-di-andare-online/feed/</wfw:commentRss> <slash:comments>10</slash:comments> </item> <item><title>Strumenti e risorse per Google Analytics</title><link>http://maurizio.mavida.com/2010/09/14/strumenti-e-risorse-per-google-analytics/</link> <comments>http://maurizio.mavida.com/2010/09/14/strumenti-e-risorse-per-google-analytics/#comments</comments> <pubDate>Tue, 14 Sep 2010 17:19:06 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[featured]]></category> <category><![CDATA[google analytics]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[analytics]]></category> <category><![CDATA[chrome]]></category> <category><![CDATA[firefox]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=1800</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comDato che non si vive si solo WordPress per il sottoscritto è iniziato un periodo di studio e approfondimento su Google Analytics che con il tempo spero porterà alla certificazione. Il motivo di questa decisione parte da questo assunto: &#8220;imparare a misurare ti porta a migliorare&#8220;. In pratica mi sono convinto che [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p>Dato che non si vive si solo <strong>WordPress</strong> per il sottoscritto è iniziato un periodo di studio e approfondimento su <strong>Google Analytics</strong> che con il tempo spero porterà alla <a
href="http://analytics.blogspot.com/2009/03/what-is-your-google-analytics-iq.html">certificazione</a>.</p><p>Il motivo di questa decisione parte da questo assunto: &#8220;<strong>imparare a misurare ti porta a migliorare</strong>&#8220;. In pratica mi sono convinto che imparando a tracciare e poi a leggere il comportamento degli utenti è più facile migliorare le perfomance di un sito&#8230;.</p><p><img
src="http://maurizio.mavida.com/wp-content/uploads/2010/09/strumenti-google-analytics.jpg" alt="" title="strumenti-google-analytics" width="480" height="220" class="alignnone size-full wp-image-1807" /></p><p>Nei prossimi giorni spero di riuscire a condividere i miei progressi ed i miei esperimenti; per il momento lascio una selezione di link presa dai miei segnalibri e che so già mi tornerà molto utile.</p><ul><li><a
href="http://www.google.com/intl/it/analytics/">Sito ufficiale italiano</a>: Punto di partenza per notizie, approfondimenti, video presentazioni, assistenza e formazione</li><li><a
href="http://www.youtube.com/googleanalytics?hl=it">Canale ufficiale su YouTube</a>: Ci potete trovare molti video (in inglese) in cui vengono approfondite specifiche tematiche.</li><li><a
href="http://analytics.blogspot.com/">Blog ufficiale inglese</a>: Io l&#8217;ho messo direttamente tra i miei feed. A volte pubblicato anche interessante howto</li><li><a
href="http://code.google.com/intl/it-IT/apis/analytics/docs/">Documentazione per gli sviluppatori</a>: Risorsa fondamentale ricca di esempi per capire il comportamento dello script di tracciamento e/o le api per l&#8217;esportazione dei dati.</li><li><a
href="http://www.google.com/support/conversionuniversity/bin/static.py?hl=en&#038;page=iq_learning_center.cs&#038;rd=1">Corso online per Individual Qualification (IQ)</a>: Materiale ed informazioni varie per prepararsi alla certificazione con &#8220;video &#8211; presentazioni&#8221; molto interessanti</li><li><a
href="https://chrome.google.com/extensions/detail/jnkmfdileelhofjcijamephohjechhna">Estensione Chrome</a>: Utile per fare debug e capire cosa e come viene tracciata la pagina.</li><li><a
href="http://wordpress.org/extend/plugins/google-analytics-for-wordpress/">Plugin per WordPress</a>: Potrei quasi dire &#8220;IL plugin per le statistiche&#8221;. Un Plugin veramente ben fatto che permette di usare le custom_variables per tracciare tag e categorie. Se poi ci server maggiore controllo mette a disposizione dei filtri per modificare al volo lo script</li><li><a
href="https://addons.mozilla.org/en-US/firefox/addon/11492/">Snip-n-Tag &#8211; Plugin per Firefox</a>: Un aiuto per creare url &#8220;corti&#8221; (vedi bit.ly e/o tinyurl) con il codice ga per tracciare le compagne</li><li><a
href="http://www.goanalytics.info/">Goanalytics.info</a>: il blog italiano verticale su Analitycs gestito da Marco Cilia</li><li><a
href="http://www.webanalyticsexperience.com/">Web Analytics Experience</a>: altra risorsa italiana che ho scoperto da poco ma che sembra interessante.</li></ul><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2010/09/14/strumenti-e-risorse-per-google-analytics/">Strumenti e risorse per Google Analytics</a> was first posted on settembre 14, 2010 at 6:19 pm.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2010/09/14/strumenti-e-risorse-per-google-analytics/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>WordPress 3.0 @ Go!WebDesign Roma 2010</title><link>http://maurizio.mavida.com/2010/06/14/wordpress-3-0-gowebdesign-roma-2010/</link> <comments>http://maurizio.mavida.com/2010/06/14/wordpress-3-0-gowebdesign-roma-2010/#comments</comments> <pubDate>Mon, 14 Jun 2010 10:04:40 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[featured]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[custom post type]]></category> <category><![CDATA[Go!WebDesign]]></category> <category><![CDATA[slide]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=1705</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comEcco che è passata più di una settimana ed io non ho neanche pubblicato le slide del mio speech. Riassunto breve: Sabato 5 Giugno ero a Roma a presentare le novità di WordPress 3.0 al Go!WebDesign, il workshop organizzato da Julius. A parte il viaggio con un treno notturno che è stato [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p>Ecco che è passata più di una settimana ed io non ho neanche pubblicato<a
href="http://www.slideshare.net/miziomon/wordpress-30-gowebdesign"> le slide del mio speech</a>.</p><p>Riassunto breve:</p><p>Sabato 5 Giugno ero a Roma a presentare le novità di <strong>WordPress 3.0</strong> al <a
href="http://gowebdesign.it/"><strong>Go!WebDesign</strong></a>, il workshop organizzato da <a
href="http://www.juliusdesign.net/"><em>Julius</em></a>.</p><p>A parte il viaggio con un treno notturno che è stato un po&#8217; devastante è stato tutto molto bello.</p><p>Roma alle 6.30 del mattino e Bellissima e fare colazione davanti all&#8217;altare della Patria illuminato dalle prime luci del sole è una cosa che penso mi ricorderò a lungo&#8230;</p><p><img
class="alignnone  size-full wp-image-1710" title="wordpress-gowebdesign-roma-2010" src="http://maurizio.mavida.com/wp-content/uploads/2010/06/wordpress-gowebdesign-roma-2010.jpg" alt="" width="480" height="220" /></p><p><span
id="more-1705"></span>Tornando al <strong>workshop</strong> merita segnalazione il <a
href="http://www.slideshare.net/nicolabortignon/back-to-the-future-gowebdesign-2-rome-05062010">talk</a> di <a
href="http://www.nicolabortignon.com/"><strong>Nicola</strong></a> (date un occhio almeno alle slide) e sicuramente di rilievo anche anche quelli di <a
href="http://www.slideshare.net/fedeweb/creare-un-sito-web-accessibile">Federico</a> e <a
href="http://www.slideshare.net/RobinGood/jeet-design-do-ita"><em>Robin</em></a></p><p>Per quanto mi riguarda, come vi dicevo, ho prepareto un intervendo su <strong>WordPress</strong>, facendo una panoramica delle sua prinicipali funzionalità (che ogni volta vedo che non tutti conoscono) e sulle nuovità della prossima 3.0.</p><p>E&#8217; curioso vedere come ogni volta che si parla di <a
href="http://codex.wordpress.org/Embeds"><strong>oEmbed</strong></a>, <a
href="http://www.wpbeginner.com/beginners-guide/how-to-make-sticky-posts-in-wordpress/"><strong>Sticky Post</strong></a> (<a
href="http://codex.wordpress.org/Function_Reference/query_posts#Sticky_Post_Parameters">codex</a>),  <a
href="http://codex.wordpress.org/Template_Tags/the_post_thumbnail"><strong>Thumbnails image</strong></a> o <a
href="http://codex.wordpress.org/Child_Themes"><strong>Child Theme</strong></a> c&#8217;è chi mi chiede: &#8220;Ma queste cose sono delle novità della nuova versione?&#8221; (no, le abbiamo gratis da almeno 6 mesi&#8230;)</p><p>Poi si è parlato un po&#8217; delle <a
href="http://codex.wordpress.org/Version_3.0"><em>solite novità</em></a>: il nuovo templare, il menu, <strong>custom post type</strong>, ecc&#8230;</p><p>Per il momento qui sotto trovate le mie slide (se avete domande usate i commenti) e forse nei prossimi giorni avremo anche il video&#8230;.</p><p><object
id="__sse4420617" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param
name="allowFullScreen" value="true" /><param
name="allowScriptAccess" value="always" /><param
name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=gowebdesignroma-2010-100606000650-phpapp01&amp;stripped_title=wordpress-30-gowebdesign" /><param
name="name" value="__sse4420617" /><param
name="allowfullscreen" value="true" /><embed
id="__sse4420617" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=gowebdesignroma-2010-100606000650-phpapp01&amp;stripped_title=wordpress-30-gowebdesign" name="__sse4420617" allowscriptaccess="always" allowfullscreen="true"></embed></object></p><p>Chiudo rigraziando <a
href="http://www.blographik.it/">Mirko</a> per lo sbattone che si è fatto per intervistare un po&#8217; tutti&#8230;</p><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2010/06/14/wordpress-3-0-gowebdesign-roma-2010/">WordPress 3.0 @ Go!WebDesign Roma 2010</a> was first posted on giugno 14, 2010 at 11:04 am.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2010/06/14/wordpress-3-0-gowebdesign-roma-2010/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>12 Plugin per sviluppatori</title><link>http://maurizio.mavida.com/2010/06/08/12-plugin-per-sviluppatori/</link> <comments>http://maurizio.mavida.com/2010/06/08/12-plugin-per-sviluppatori/#comments</comments> <pubDate>Tue, 08 Jun 2010 21:22:51 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[featured]]></category> <category><![CDATA[sviluppo]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[develop]]></category> <category><![CDATA[wordpress plugin]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=1678</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comPer chi sviluppa template e plugin per wordpress a volte mancano gli strumenti per capire dove sono i problemi o dove poter lavorare per miglioare le perfomace. Io per risolvere questi dilemmi, con il tempo, ho trovato alcuni plugin che a seconda delle necesità mi hanno dato un mano. Giusto per fare [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p>Per chi sviluppa <em>template</em> e <em>plugin</em> per <strong>wordpress</strong> a volte mancano gli strumenti per capire dove sono i problemi o dove poter lavorare per miglioare le perfomace.</p><p>Io per risolvere questi dilemmi, con il tempo, ho trovato alcuni <strong>plugin</strong> che a seconda delle necesità mi hanno dato un mano.</p><p><a
href="http://wordpress.org/extend/plugins/"><img
class="alignnone   size-full wp-image-1684" title="wordpress-plugin-directory" src="http://maurizio.mavida.com/wp-content/uploads/2010/06/wordpress-plugin-directory.jpg" alt="" width="480" height="220" /></a></p><p>Giusto per fare un esempio vi dico che ne <a
href="http://wordpress.org/extend/plugins/debug-queries/">potete trovare uno</a> in grado di visualizzare le query eseguite dal front-end (solo se loggati come admin)  evidenziando query eccessivamente lente, oppure <a
href="http://wordpress.org/extend/plugins/debug-objects/">altri</a> <a
href="http://wordpress.org/extend/plugins/wp-developer-assistan/">che </a>danno un quadro delle informazioni della piattafoma.</p><p><span
id="more-1678"></span></p><p>Il mio consiglio è quello studiarli e di provarli un po&#8217; tutti cercando di capire cosa potrebbe essere meglio usare a seconda della situzione.</p><ol><li><a
href="http://wordpress.org/extend/plugins/debug-queries/">http://wordpress.org/extend/plugins/debug-queries/</a></li><li><a
href="http://wordpress.org/extend/plugins/debug-objects/">http://wordpress.org/extend/plugins/debug-objects/</a></li><li><a
href="http://wordpress.org/extend/plugins/core-control/">http://wordpress.org/extend/plugins/core-control/</a></li><li><a
href="http://wordpress.org/extend/plugins/wp-dbmanager/">http://wordpress.org/extend/plugins/wp-dbmanager/</a></li><li><a
href="http://wordpress.org/extend/plugins/wp-developer-assistan/">http://wordpress.org/extend/plugins/wp-developer-assistan/</a></li><li><a
href="http://wordpress.org/extend/plugins/wp-development-utilities/">http://wordpress.org/extend/plugins/wp-development-utilities/</a></li><li><a
href="http://wordpress.org/extend/plugins/wp-debug/">http://wordpress.org/extend/plugins/wp-debug/</a></li><li><a
href="http://wordpress.org/extend/plugins/query-debug-info/">http://wordpress.org/extend/plugins/query-debug-info/</a></li><li><a
href="http://wordpress.org/extend/plugins/wordpress-hook-sniffe/">http://wordpress.org/extend/plugins/wordpress-hook-sniffe/</a></li><li><a
href="http://wordpress.org/extend/plugins/sqlmon/">http://wordpress.org/extend/plugins/sqlmon/</a></li><li><a
href="http://wordpress.org/extend/plugins/wp-migrate-db/">http://wordpress.org/extend/plugins/wp-migrate-db/</a></li><li><a
href="http://wordpress.org/extend/plugins/wp-crontrol/">http://wordpress.org/extend/plugins/wp-crontrol/</a></li></ol><p>Ovviamente prima di andare in produzione ricordatevi di eliminarli&#8230;</p><p>Se ne avete altri da aggiungere alla lista ringrazio anticipatamente chi vorra segnalarlo nei commenti.</p><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2010/06/08/12-plugin-per-sviluppatori/">12 Plugin per sviluppatori</a> was first posted on giugno 8, 2010 at 10:22 pm.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2010/06/08/12-plugin-per-sviluppatori/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>imapsync: trasferire una casella imap</title><link>http://maurizio.mavida.com/2010/05/01/imapsync-trasferire-una-casella-imap/</link> <comments>http://maurizio.mavida.com/2010/05/01/imapsync-trasferire-una-casella-imap/#comments</comments> <pubDate>Sat, 01 May 2010 20:18:56 +0000</pubDate> <dc:creator>Maurizio Pelizzone</dc:creator> <category><![CDATA[featured]]></category> <category><![CDATA[software]]></category> <category><![CDATA[tutorial]]></category> <category><![CDATA[email. linux]]></category> <category><![CDATA[imap]]></category> <category><![CDATA[imapsync]]></category> <guid
isPermaLink="false">http://maurizio.mavida.com/?p=1651</guid> <description><![CDATA[Leggi l'orginale su http://maurizio.mavida.comImap è una gran bella comodità e quando ti abitui finisci per non poterne fare più a meno. Se poi sei anche il sysadmin del server che ospita la tua casella e per ovvie ragioni non hai problemi di spazio è come avere una &#8220;gmail&#8221; ancora più comoda. L&#8217;unico problema è quando [...]]]></description> <content:encoded><![CDATA[<p>Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><p><br
/><p><a
href="http://it.wikipedia.org/wiki/Internet_Message_Access_Protocol">Imap</a> è una gran bella comodità e quando ti abitui finisci per non poterne fare più a meno.<br
/> Se poi sei anche il <strong>sysadmin</strong> del server che ospita la tua casella e per ovvie ragioni non hai problemi di spazio è come avere una &#8220;gmail&#8221; ancora più comoda.</p><p>L&#8217;unico problema è quando arriva il momento di cambiare server.<br
/> Ecco che allora ti fai una domanda: &#8220;<em>ma io la posta come la sposto da un server all&#8217;altro?</em>&#8221;</p><p>Inizialmente ho pensato di fare la migrazione passando attraverso un client (vedi <a
href="http://www.mozillaitalia.org/thunderbird/">thunderbird</a>) ma la cosa, avendola sperimentata con alcuni clienti, sarebbe stata decisamente lunga&#8230;.<br
/> <span
id="more-1651"></span></p><p>La soluzione, fortunatamente, era dietro l&#8217;angolo: <strong>imapsync</strong></p><p><img
src="http://maurizio.mavida.com/wp-content/uploads/2010/05/imapsync.jpg" alt="" title="imapsync" width="480" height="280" class="alignnone size-full wp-image-1660" /></p><p>L&#8217;installazione sulla mia fidata <strong>debian</strong> (lenny) è stata una passeggiata:</p><div
class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table
cellspacing="0" cellpadding="0"><tbody><tr><td
style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br
/></div></td><td><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#apt-get install imapsync</div></td></tr></tbody></table></div><p>Il suo utilizzo è decisamente elementare: in pratica è necessario passargli i dati per collegarsi al server da cui copiare e poi quelli del server in cui vanno copiate le mail.<br
/> Questo un esempio di sintassi:</p><div
class="code">#imapsync &#8211;host1 {NomeServerUno} &#8211;user1 {NomeUtenteUno} &#8211;password1 {PasswordUno} &#8211;host2 {NomeServerDue} &#8211;user2 {NomeUtenteDue} &#8211;password {PasswordDue}</div><p>{NomeServerUno}: ip o dominio server di origine<br
/> {NomeUtenteUno}: Nome utente server di origine<br
/> {PasswordUno}: password server di origine<br
/> {NomeServerDue}: ip o dominio server di destinazione<br
/> {NomeUtenteDue}: Nome utente server di destinazione<br
/> {PasswordDue}: password server di destinazione</p><p>Tra le <a
href="http://linux.die.net/man/1/imapsync">opzioni</a> disponibili possiamo indicare se usare una connessione ssl, escudere messaggi troppo grossi o troppo vecchi e/o escudere intere directory.<br
/> La sincronizzazione è un&#8217;operazione relativamente lunga e nel mio caso dove avevo oltre un giga di posta è durata più di 20 minuti.</p><p>Ne hanno parlato anche <a
href="http://www.howtoforge.com/how-to-migrate-mailboxes-between-imap-servers-with-imapsync">qui</a>, <a
href="http://moosesoom.blogspot.com/2009/11/sincronizzare-server-imap-imapsync.html">qui</a> e <a
href="http://www.chemlab.org/2010/01/26/imapsync-to-gmail-script">qui</a>.</p><hr
style="border-top:black solid 1px" />Leggi l'orginale su <a
href="http://maurizio.mavida.com">http://maurizio.mavida.com</a><br
/><a
href="http://maurizio.mavida.com/2010/05/01/imapsync-trasferire-una-casella-imap/">imapsync: trasferire una casella imap</a> was first posted on maggio 1, 2010 at 9:18 pm.<br
/>]]></content:encoded> <wfw:commentRss>http://maurizio.mavida.com/2010/05/01/imapsync-trasferire-una-casella-imap/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
