5 Regole SEO da tenere a mente nello sviluppo di temi e plugin Wordpress                     di ANDREA CARDINALI          ...
SI DICE CHE LA SEO E’ MORTA…WORDCAMP BOLOGNA - 9 FEBBRAIO 2013   @WORDCAMPBOLOGNA # WPCAMPBO13
#1: LA SEO NON MORIRA’ MAIWORDCAMP BOLOGNA - 9 FEBBRAIO 2013   @WORDCAMPBOLOGNA # WPCAMPBO13
#2 LINKING INTERNO E INDICIZZAZIONE                                                    LINKING INTERNO FONTE: http://www.l...
#2 LINKING INTERNO E INDICIZZAZIONE                                     LINKING INTERNO In generale evitare di avere tropp...
#2 LINKING INTERNO E INDICIZZAZIONE – ROBOTS.TXT                                     ROBOTS.TXT File virtuale gestito in a...
#2 LINKING INTERNO E INDICIZZAZIONE – META ROBOTS                    GESTIONE meta name=‘robots’ Se non specificato lo spi...
#2 LINKING INTERNO E INDICIZZAZIONE – META ROBOTS                    GESTIONE meta name=‘robots’Aggiungere il <meta name=‘...
#2 LINKING INTERNO E INDICIZZAZIONE – META ROBOTS                    GESTIONE meta name=‘robots’ Bloccare indicizzazione t...
#2 LINKING INTERNO E INDICIZZAZIONE – STATUS CODERISPOSTE HTTP (STATUS CODE) CORRETTE  200 - OK  302 – Found  301 – Moved ...
#2 LINKING INTERNO E INDICIZZAZIONE – STATUS CODE                                STATUS CODE 200: OKWORDCAMP BOLOGNA - 9 F...
#2 LINKING INTERNO E INDICIZZAZIONE – STATUS CODE                   STATUS CODE 302 (TEMPORANEO)           • Da utilizzare...
#2 LINKING INTERNO E INDICIZZAZIONE – STATUS CODE        STATUS CODE 301: MOVED PERMANENTLY         •    Da utilizzare qua...
#2 LINKING INTERNO E INDICIZZAZIONE – STATUS CODE        STATUS CODE 301: MOVED PERMANENTLY           Come inserire un red...
#2 LINKING INTERNO E INDICIZZAZIONE – STATUS CODE                    STATUS CODE 404: NOT FOUND • Restituito ogni volta ch...
#2 LINKING INTERNO E INDICIZZAZIONE – STATUS CODE      STATUS CODE 404: COME TRACCIARLO (1)  Tracciamento tramite file di ...
#2 LINKING INTERNO E INDICIZZAZIONE – STATUS CODE      STATUS CODE 404: COME TRACCIARLO (2) Tracciamento tramite Google An...
#2 LINKING INTERNO E INDICIZZAZIONE – STATUS CODE          STATUS CODE 404: COME RESTITUIRLO Impostare manualmente un 404:...
#2: MASSIMIZZARE L’INDICIZZAZIONE – STATUS CODE                    STATUS CODE 404: NOT FOUND Personalizzate il template 4...
#2: MASSIMIZZARE L’INDICIZZAZIONE      STATUS CODE 503: SERVICE UNAVAILABLE           • Da utilizzare durante le operazion...
#3: EVITARE CONTENUTI DUPLICATI                   NO AI CONTENUTI DUPLICATIWORDCAMP BOLOGNA - 9 FEBBRAIO 2013       @WORDC...
#3: EVITARE CONTENUTI DUPLICATI           36 + 15 + 17= 68WORDCAMP BOLOGNA - 9 FEBBRAIO 2013   @WORDCAMPBOLOGNA # WPCAMPBO13
#3: EVITARE CONTENUTI DUPLICATI COME EVITARE I CONTENUTI DUPLICATI -1 Nelle pagine archivio e categoria non inserire il po...
#3: EVITARE CONTENUTI DUPLICATI COME EVITARE I CONTENUTI DUPLICATI - 2 • Aggiungere testo unico nella pagina archivio (sol...
#4: CANONICALIZZAZIONE DEI CONTENUTI                              UTILIZZO rel=‘canonical’ Es. ordinamento risultati trami...
#5: UTILIZZARE I MICROFORMATI                                     MICROFORMATIWORDCAMP BOLOGNA - 9 FEBBRAIO 2013          ...
#5: UTILIZZARE I MICROFORMATI HCALENDARWORDCAMP BOLOGNA - 9 FEBBRAIO 2013   @WORDCAMPBOLOGNA # WPCAMPBO13
#5: UTILIZZARE I MICROFORMATI HREVIEW-AGGREGATE (VOTES)WORDCAMP BOLOGNA - 9 FEBBRAIO 2013   @WORDCAMPBOLOGNA # WPCAMPBO13
#5: UTILIZZARE I MICROFORMATI HREVIEW-AGGREGATE (COUNT)WORDCAMP BOLOGNA - 9 FEBBRAIO 2013   @WORDCAMPBOLOGNA # WPCAMPBO13
#5: UTILIZZARE I MICROFORMATI HRECIPEWORDCAMP BOLOGNA - 9 FEBBRAIO 2013   @WORDCAMPBOLOGNA # WPCAMPBO13
#5: UTILIZZARE I MICROFORMATI IMPLEMENTARE rel=‘author’ 3 STEP 1. Link dall’articolo alla pagina autore interna al sito 2....
#4: EVITARE CONTENUTI DUPLICATI IMPLEMENTARE rel=‘author’ In single.php Altri articoli di<a href="<?php echo get_author_po...
#4: EVITARE CONTENUTI DUPLICATI                                     APPROFONDIMENTI SCHEMA.ORG http://www.schema.org GOOGL...
WEB PERFORMANCE OPTIMIZATION                                     DOMANDE?WORDCAMP BOLOGNA - 9 FEBBRAIO 2013              @...
RELATORE                              GRAZIE!                              Andrea Cardinali                              W...
Upcoming SlideShare
Loading in …5
×

5 consigli SEO da tenere a mente durante lo sviluppo di temi e plugin @ WpCamp Bologna 2013

2,915 views

Published on

Concentrato di best practices relative alla seo “on site”. Si parla di indicizzazione, linking interno,status code e microformati e di tanti piccoli accorgimenti che possono portare grandi risultati. Ogni consiglio è accompagnato da diversi snippet di codice

Published in: Self Improvement
4 Comments
9 Likes
Statistics
Notes
No Downloads
Views
Total views
2,915
On SlideShare
0
From Embeds
0
Number of Embeds
1,055
Actions
Shares
0
Downloads
63
Comments
4
Likes
9
Embeds 0
No embeds

No notes for slide

5 consigli SEO da tenere a mente durante lo sviluppo di temi e plugin @ WpCamp Bologna 2013

  1. 1. 5 Regole SEO da tenere a mente nello sviluppo di temi e plugin Wordpress di ANDREA CARDINALI WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  2. 2. SI DICE CHE LA SEO E’ MORTA…WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  3. 3. #1: LA SEO NON MORIRA’ MAIWORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  4. 4. #2 LINKING INTERNO E INDICIZZAZIONE LINKING INTERNO FONTE: http://www.linkdex.com/blog/page-rank-and-link-juice-explained/WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  5. 5. #2 LINKING INTERNO E INDICIZZAZIONE LINKING INTERNO In generale evitare di avere troppi link su una pagina. Cosa evitare: • Tag cloud nel footer (effettuare una selezione dei tag) • Paginazione elevata Cercate di distribuire al meglio il link juice. Cosa fare: • Utilizzare i breadcrumbs • Link sitewide alla mappa del sito • Linkare le pagine con ancor text differenti • Se nella pagina sono presenti più link alla stessa risorsa, verificare che il link che si trova più in alto nella pagina (nel codice sorgente) abbia un anchor text ottimizzato (es. Titolo post + leggi tutto) • Noindex, follow nelle pagine superiori alla primaWORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  6. 6. #2 LINKING INTERNO E INDICIZZAZIONE – ROBOTS.TXT ROBOTS.TXT File virtuale gestito in automatico da WP (Non inserirlo nella web root) Aggiungere regole al robots.txt add_filter(‘robots_txt’,’crd_blocca_file’,999,1); function crd_blocca_cartella_plugin($output) { $site_url = parse_url( site_url() ); $path = ( !empty( $site_url[path] ) ) ? $site_url[path] : ; $output .= "Disallow: $path/filedabloccare.phpn"; return $output; } User-agent: * Disallow: /filedabloccare.phpWORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  7. 7. #2 LINKING INTERNO E INDICIZZAZIONE – META ROBOTS GESTIONE meta name=‘robots’ Se non specificato lo spider considera la pagine come INDEX, FOLLOW NOINDEX, NOFOLLOW • i link presenti all’interno della pagina non vengono seguiti • tutto ciò che non vogliamo compaia nei risultati di ricerca NOINDEX, FOLLOW • la pagina non compare nei risultati di ricerca ma i risultati sì*WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  8. 8. #2 LINKING INTERNO E INDICIZZAZIONE – META ROBOTS GESTIONE meta name=‘robots’Aggiungere il <meta name=‘robots’> nell’ <head> add_action( wp_head,crd_custom_meta,999 ); function crd_custom_meta() { echo "<meta name=robots content=noindex,follow />n"; } <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name=robots content=noindex,follow /> http://support.google.com/webmasters/bin/answer.py?hl=it&answer=93710WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  9. 9. #2 LINKING INTERNO E INDICIZZAZIONE – META ROBOTS GESTIONE meta name=‘robots’ Bloccare indicizzazione tramite Header X-Robots-Tag <?php @header( Content-Type: text/html; charset= . get_option( blog_charset ) ); @header( X-Robots-Tag: noindex );WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  10. 10. #2 LINKING INTERNO E INDICIZZAZIONE – STATUS CODERISPOSTE HTTP (STATUS CODE) CORRETTE 200 - OK 302 – Found 301 – Moved Permanently 404 – Not Found 503 - Unavailable TOOLS: • Firebug • Network Inspector • FiddlerWORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  11. 11. #2 LINKING INTERNO E INDICIZZAZIONE – STATUS CODE STATUS CODE 200: OKWORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  12. 12. #2 LINKING INTERNO E INDICIZZAZIONE – STATUS CODE STATUS CODE 302 (TEMPORANEO) • Da utilizzare quando si cambia provvisoriamente url a una risorsa. (es. voglio dirottare i visitatori dalla homepage a una landing page) • Lo spider non aggiorna l’url della risorsa • Non trasferisce Link juice • ATTENZIONE: wp_redirect($url) utilizza il 302 • Utilizzato anche per _wp_old_slugWORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  13. 13. #2 LINKING INTERNO E INDICIZZAZIONE – STATUS CODE STATUS CODE 301: MOVED PERMANENTLY • Da utilizzare quando si cambia url a una risorsa. • Trasferisce Link juice • Utile soprattutto quando si cambia permalink ad un url dopo la pubblicazione • Attenzione a _wp_old_slug (function wp_old_slug_redirect ) • Attenzione a quando si cambia la struttura dei permalink Wordpress di default utilizza lo status code 302 (Non passa link juice). Per modificare questo comportamento: add_filter(‘wp_redirect_status’,’crd_redirect_corretto’,10,2); function crd_redirect_corretto ($location,$status) { //aggiungere eventuale condizione aggiuntiva x 301 if(302==$status) $status=301; return $status; }WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  14. 14. #2 LINKING INTERNO E INDICIZZAZIONE – STATUS CODE STATUS CODE 301: MOVED PERMANENTLY Come inserire un redirect (o qualsiasi altra regola) nel .htaccess //utilizzare solo nell’admin es. add_action(admin_init, crd_htaccess); function crd_htaccess() { $htaccess_file = ABSPATH..htaccess; $rules=array(); $rules[]=Redirect 301 /vecchio-url/ http://www.example.com/nuovo- url/; insert_with_markers( $htaccess_file, Marker personalizzato Redirect, $rules ); } Redirect 301 /vecchio-url/ http://www.example.com/nuovo-url/WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  15. 15. #2 LINKING INTERNO E INDICIZZAZIONE – STATUS CODE STATUS CODE 404: NOT FOUND • Restituito ogni volta che si richiede una risorsa inesistente • Importante monitorarli ( è possibile farlo in almeno 4 modi diversi) • E’ possibile personalizzare la pagina d’errore (404.php)WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  16. 16. #2 LINKING INTERNO E INDICIZZAZIONE – STATUS CODE STATUS CODE 404: COME TRACCIARLO (1) Tracciamento tramite file di testo e/o email di alert: add_action (‘template_redirect’,’crd_log_404’); function crd_log_404() { if(is_404()) { //consigliato solo per siti nuovi e/o con pochi errori wp_mail(‘webmaster@example.com’,’errore 404’, $_SERVER[‘REQUEST_URI’]); //il file error.log deve essere scrivibile file_put_contents(‘error.log’,sprintf(‘%s - %s ’,date(‘d-m-Y h:i:s’), ’, $_SERVER[‘REQUEST_URI’]) } }WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  17. 17. #2 LINKING INTERNO E INDICIZZAZIONE – STATUS CODE STATUS CODE 404: COME TRACCIARLO (2) Tracciamento tramite Google Analytics (inserire in 404.php) <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push([_setAccount, UA-XXXXX-X]); _gaq.push([_trackEvent, Error, 404, ‘pagina’+ document.location.pathname + document.location.search + &from= + document.referrer]); (function() { var ga = document.createElement(script); ga.type = text/javascript; ga.async = true; ga.src = (https: == document.location.protocol ? https://ssl : http://www) + .google-analytics.com/ga.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(ga, s); })(); </script>WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  18. 18. #2 LINKING INTERNO E INDICIZZAZIONE – STATUS CODE STATUS CODE 404: COME RESTITUIRLO Impostare manualmente un 404: <?php global $wp_query; $wp_query->set_404(); status_header( 404 ); ?>WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  19. 19. #2: MASSIMIZZARE L’INDICIZZAZIONE – STATUS CODE STATUS CODE 404: NOT FOUND Personalizzate il template 404.php • [Internet Explorer will only show your custom 404 page if it’s larger than 512 bytes (hard to get smaller than that with WordPress).] Proponete alternative: • Ricerca • Sitemap • Link all’homepage • Miglior alternativa http://yoast.com/404-error-pages-wordpress/WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  20. 20. #2: MASSIMIZZARE L’INDICIZZAZIONE STATUS CODE 503: SERVICE UNAVAILABLE • Da utilizzare durante le operazioni di manutenzione • Specificare anche l’header Retry-After Per personalizzare la pagina, creare il file maintance.php dentro wp-content (non utilizzare funzioni di WP ) <?php $protocol = $_SERVER["SERVER_PROTOCOL"]; if ( HTTP/1.1 != $protocol && HTTP/1.0 != $protocol ) $protocol = HTTP/1.0; header( "$protocol 503 Service Unavailable", true, 503 ); header( Content-Type: text/html; charset=utf-8 ); header( Retry-After: 3600 ); // 3600 secondi = 1ora ?> <!DOCTYPE html> <html> <head> <title>Sorry, Were Getting Tuned Up</title> <!– […] -->WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  21. 21. #3: EVITARE CONTENUTI DUPLICATI NO AI CONTENUTI DUPLICATIWORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  22. 22. #3: EVITARE CONTENUTI DUPLICATI 36 + 15 + 17= 68WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  23. 23. #3: EVITARE CONTENUTI DUPLICATI COME EVITARE I CONTENUTI DUPLICATI -1 Nelle pagine archivio e categoria non inserire il post completo if(have_posts()):while(have_posts()):the_post();?> <div class=‘post’> <h3><a href="<?php the_permalink()?>"> <?php the_title()?></a></h3> <?php the_excerpt()?> <p><a class="btn" href="<?php the_permalink()?>">Leggi&raquo;</a> </p> </div><!--/.post--> <?php endwhile; endif;?> • Evitare d’inserire l’excerpt nella pagina in cui è presente il post (è un riassunto) • Scegliere se far indicizzare categorie o tag (non entrambi)WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  24. 24. #3: EVITARE CONTENUTI DUPLICATI COME EVITARE I CONTENUTI DUPLICATI - 2 • Aggiungere testo unico nella pagina archivio (solo nella prima e non nelle successive) DESCRIZIONE UNICA IN ARCHIVE.PHP <h1><?php echo single_cat_title(,false)?></h1> <?php if(!is_paged()): <p><?php category_description()?></p> <?php endif;?>WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  25. 25. #4: CANONICALIZZAZIONE DEI CONTENUTI UTILIZZO rel=‘canonical’ Es. ordinamento risultati tramite query string http://www.example.com/prodotti/plugin/?sort=alpha http://www.example.com/prodotti/plugin/?sort=price COME AGGIUNGERE IL CANONICAL IN UNA PAGINA: remove_action(‘wp_head’,’rel_canonical’); add_action(‘wp_head’, crd_manage_canonical’); function crd_manage_canonical() { $link=‘http://www.example.com/prodotti/plugin/’; echo "<link rel=canonical href=$link />n"; } <link rel=‘canonical’ href=‘http://www.example.com/prodotti/plugin/’ />WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  26. 26. #5: UTILIZZARE I MICROFORMATI MICROFORMATIWORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  27. 27. #5: UTILIZZARE I MICROFORMATI HCALENDARWORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  28. 28. #5: UTILIZZARE I MICROFORMATI HREVIEW-AGGREGATE (VOTES)WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  29. 29. #5: UTILIZZARE I MICROFORMATI HREVIEW-AGGREGATE (COUNT)WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  30. 30. #5: UTILIZZARE I MICROFORMATI HRECIPEWORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  31. 31. #5: UTILIZZARE I MICROFORMATI IMPLEMENTARE rel=‘author’ 3 STEP 1. Link dall’articolo alla pagina autore interna al sito 2. Link dalla pagina autore al profilo G+ con rel=‘author’ 3. Link dalla pagina profilo G+ alla pagina autore con rel=‘me’ APPROFONDIMENTO: http://seoblog.giorgiotave.it/implementare-rel-author/2108WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  32. 32. #4: EVITARE CONTENUTI DUPLICATI IMPLEMENTARE rel=‘author’ In single.php Altri articoli di<a href="<?php echo get_author_posts_url(get_the_author_meta(ID));?>“ rel=“author”> <?php the_author()?></a> In author.php <a href="<?php echo get_the_author_meta(‘gplus);?>" rel=“me" target="_blank">Google plus</a> gplus è un custom user meta.WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  33. 33. #4: EVITARE CONTENUTI DUPLICATI APPROFONDIMENTI SCHEMA.ORG http://www.schema.org GOOGLE RICH SNIPPET TESTING TOOL: http://www.google.com/webmasters/tools/richsnippets GENERATORE SCHEMA.ORG: http://www.microdatagenerator.com/ ALTRO GENERATORE SCHEMA.ORG http://schema-creator.orgWORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  34. 34. WEB PERFORMANCE OPTIMIZATION DOMANDE?WORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13
  35. 35. RELATORE GRAZIE! Andrea Cardinali Web: www.andreacardinali.it Twitter: @andreacardinali Google + : Andrea CardinaliWORDCAMP BOLOGNA - 9 FEBBRAIO 2013 @WORDCAMPBOLOGNA # WPCAMPBO13

×