
Uno dei plugin che la maggior parte dei blog usa per l’ottimizzazione delle pagine sui motori di ricerca è il famoso All in One SEO Pack.
Sicuramente un ottimo plugin, nulla da dire, ma se vi trovaste nella situazione di dover alleggerire il vostro sito in quanto utilizza troppa RAM e CPU, dovreste iniziare a disabilitare un bel po’ di plugin.
Una volta eliminati i plugin più inutili e superflui, il passo successivo sarà quello di sostituire i plugin assolutamente necessari con linee di codice più leggere, ma ugualmente efficaci.
Ecco perchè oggi vi propongo due piccoli tip che sostituiscono qualsiasi plugin SEO e lo riducono a poche righe di codice, veloci ed efficienti.
Come prima cosa, dobbiamo ottimizzare il tag title del nostro template. Aprite allora il file header.php e sostituite l’attuale <title>...</title> con il codice seguente:
wp_title('');
if (function_exists('is_tag') and is_tag()) { ?>
Tag per <?php echo $tag;
}
if (is_archive()) { ?>
Archivio <?php
} elseif (is_search()) { ?>
Ricerca per <?php echo wp_specialchars($s,1);
}
if ( !(is_404()) && (is_search()) or (is_single()) or (is_page()) or (function_exists('is_tag') and is_tag()) or (is_archive()) ) { ?>
| <?php
} ?>
<?php bloginfo('name');
if(is_home()){ ?>
- <?php bloginfo('description');
}
?></title>
L’altro elemento essenziale, come sapete, sono i meta tag. Prendendo in prestito alcune funzioni del plugin All in One SEO Pack e rielaborandole, ecco una semplice e leggera funzione che svolge egregiamente il suo lavoro:
global $wp_query;
$post = $wp_query->get_queried_object();
$desc = get_bloginfo('description');
$keys = "LE KEYWORDS DI DEFAULT";
if(is_single() || is_page()){
$desc = cut($post->post_content, 25);
}
if(is_single()){
$keywords = array();
$tags = get_the_tags($post->ID);
$categories = get_the_category($post->ID);
if(is_array($tags)){
foreach ($tags as $tag)
$keywords[] = $tag->name;
}
if(is_array($categories)){
foreach ($categories as $category)
$keywords[] = $category->cat_name;
}
$keys = implode(", ", $keywords);
}
if(is_category()){
$desc = strip_tags(category_description());
}
$desc = str_replace(array("\n","\r","\t"), " ", $desc);
$desc = str_replace('"', "'", $desc);
echo '<meta name="description" content="' . $desc . '" />' . "\n";
echo '<meta name="keywords" content="'. $keys . '" />' . "\n";
}
add_action('wp_head', 'add_meta_tag');
function cut($content, $cut = 0, $encode_html = 0) {
if ( $cut && !$encode_html )
$encode_html = 2;
if ( 1== $encode_html ) {
$content = wp_specialchars($content);
$cut = 0;
} elseif ( 0 == $encode_html ) {
$content = make_url_footnote($content);
} elseif ( 2 == $encode_html ) {
$content = strip_tags($content);
}
if ( $cut ) {
$blah = explode(' ', $content);
if ( count($blah) > $cut ) {
$k = $cut;
$use_dotdotdot = 1;
} else {
$k = count($blah);
$use_dotdotdot = 0;
}
for ( $i=0; $i<$k; $i++ )
$excerpt .= $blah[$i].' ';
$excerpt .= ($use_dotdotdot) ? '...' : '';
$content = $excerpt;
}
$content = str_replace(']]>', ']]>', $content);
return $content;
}
Ovviamente dovete copiare e incollare tutto questo popò di codice nel file functions.php del vostro template.
Cosa fa? Crea dei meta tag dinamici nel modo seguente:
- Nella home inserisce la descrizione del blog e le parole chiave da voi scelte (sostituite
LE KEYWORDS DI DEFAULTcon le vostre keywords). - Negli articoli e nelle pagine inserisce le prime 25 parole del testo come descrizione e i tag e le categorie come parole chiave.
- Nelle pagine delle categorie inserisce come descrizione la descrizione specificata per quella categoria.
La funzione cut è accessoria ed è quella che si occupa di accorciare il testo per la descrizione.
Fatto ciò, potete disabilitare tutti quei pesanti plugin per la SEO e godervi il vostro blog alleggerito da molto codice inutile.




scusate l’ignoranza, una volta aggiunto questo codice, dove inserisco le mie parole chiavi?
Grazie, BigThing,
ottimo articolo. Però l’ho modificato per permettere l’inserimento per ogni post di una meta-description e delle keywords personalizzate, attraverso la funzione “campi personalizzati”. Un po’ come accadeva con ALL-IN-SEO, però senza ALL-IN-SEO, sfruttando solo le funzioni di WordPress.
Dategli un’occhiata a fatemi sapere:
http://web.iljester.it/2011/wordpress-liberarsi-di-all-in-seo-con-un-po-di-codice-su-function-php.html
Saluti
Ciao ghido, volevo solo farti una domanda oltre che i miei complimenti. Quindi utilizzando questo metodo, posso eliminare il meta tag description e keywords dal mio header.php e aggiungere la funzione al file functions.php, giusto ?
Volevo chiedere, oltre a fare i complimenti per l’articolo e il blog, se la seconda parte, quella da copiare e incollare nelle functions.php, va modificata in alcune righe. Cioè, se oltre alle KEYWORDS va cambiata qualche altra parter o no…grazie
ottimo articolo, soprattutto per i mega tag
Ecco quello che si dice un’articolo interessante. L’abuso di risorse anche nel computer è pur sempre uno spreco… quindi… lo provo e vi faccio sapere
Non mi fa inserire il contenuto della pagina, forse l’anti-spam lo ha bloccato
Ciao Ghido grazie; una domanda: io ho caricato sul host il file “wp-blog-header.php”, è lo stesso? O devo creare una pagina denominata header.php. Ti riporto il contenuto della pagina wp-blog-header.php:
Devo inserirlo in questa pagina la riga di codice, e se si in che parte? Grazie!!
Grazie per l’articolo, provo a effettuare le modifiche sul mio sito.
Ciao Teo,
forse è meglio che ci scambiamo i contatti msn così parliamo più in tempo reale ^_^
Google mi da problemi di reindirizzamento. Ho analizzato le pagine e mi viene fuori un 301.
Ho modificato l’.htaccess per inserire un plugin, mi sembra supercache.
Fatto sta che il problema me lo da in quanto
sito.bla / 2009 / titolo-articolo
viene reindirizzato a
sito.bla / 2009 / titolo-articolo /
io ho messo come permalink quest’ultima versione, ma non ho mai impostato altri tipi di versioni.
Contattami direttamente sul mio blog se vuoi ^_^
Eilà
Pino (ti chiamo cosi ma non so nemmeno se è corretto)
Il mio più grande problema è il lavoro ufficiale che faccio, pizzaiolo, e quindi il tempo che ho a disposizione durante la giornata (al mattino inizio alle 10.30 fino alle 14.30 ed al pomeriggio dalle 18 alle 24…) salvo imprevisti.
Per questo non so quando mi troveresti
Tornando a noi:
Evidentemente c’è qualcosa che non và nel file htaccess e in come hai “istruito” il redirect 301.
Soprattutto: perchè un redirect 301?
Hai forse spostato vecchie risorse?
Dove sono queste adesso allocate?
ese: www,nomedominio.xyz/nomerisorsa
www,nomedominio.xyz/directory/nomerisorsa
??
Altrimenti non mi è molto chiaro a cosa hai fatto il redirect e come lo hai “istruito” nel file htaccess
Se non ti rispondo subito sai il perchè
Ps: andrò a fare un giro sul tuo blog e provo poi a vedere come vengono indicizzati igli articoli
potrebbe darsi che qualcosa capisco ehheheh
Ciau
Ciao teo,
sisi perfettissimo, pino va bene
Cmq, questi sono i fatti.
Il mio blog, vecchia versione, si trovava hostato su altervista, poi, vedendo che cmq stava diventando molto visitato e pieno di utenti, e i domini di 2o livello non servono a niente in quei casi, ho creato un nuovo blog e l’ho fatto .it . Ovviamente ho spostato tutti gli articoli del vecchio blog nel nuovo blog e ho fatto un bel 301 degli articoli vecchi su quello nuovo per evitare di perdere visite e indicizzazione. Anche se il PR l’ho perso del tutto.
Tutto andava bene, ma dopo 15 giorni di ottima attività, ecco che perdo il 70% delle visite da google, fino ad arrivare anche al 85-90%. non ti so spiegare il perchè. Ovviamente, da webmaster, giro e rigiro tutte le possibili cause. Ho risolto un po di problemi, ma quello che mi rimane da risolvere sono questi 2 problemini: eliminare questi errori di reindirizzamento e tutti i duplicati creati da questa modifica al template per ovviare all’all-in-one.
questo è il contenuto del mio htaccess:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
purtroppo, dai controlli effettuati, non viene messo in risalto alcun problema riguardante questo file.
Il problema è che google vede delle pagine che hanno dei redirect. Io ho sempre utilizzato la stessa sintassi di link, sia nel vecchio che nel nuovo blog.
Secondo me quello che si dovrebbe fare è aggiungere una istruzione al robots per evitare che lui mi vada a vedere ste pagine affette da redirect.
Di seguito ti scrivo il contenuto del mio robots:
# Per tutti i motori di ricerca:
User-agent: *
# disabilitare l’indicizzazione delle directory seguenti:
Disallow: /cgi-bin
Disallow: /wp-admin
Disallow: /wp-includes
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Disallow: /wp-content/themes
Disallow: /trackback
Disallow: /feed
Disallow: /comments
Disallow: /category/*/*
Disallow: */trackback
Disallow: */feed
Disallow: */comments
Disallow: /*?*
Disallow: /*?
Disallow: /tag/*/*
# Per far scandire la cartella dei file uploadati
Allow: /wp-content/uploads
# BEGIN XML-SITEMAP-PLUGIN
Sitemap: EVITOSPAM.it/sitemap.xml.gz
# END XML-SITEMAP-PLUGIN
penso che anche in questo file non ci siano problemi, però, secondo il mio parere, dovrei aggiungere una istruzione Disallow per evitare che il clawler mi andasse a vedere questi altri link. Pensavo a:
Disallow: /*/*
ma in questo modo non mi troverà nemmeno i link scritti in forma normale senza redirect.
Ho bisogno di una soluzione…se puoi helpami!
Smentisco subito il fatto che l’errore possa essere causato dalla sitemap perchè all’interso di essa i link sono scritti in forma corretta.
Uhmm, per errore di reindirizzamento vuoi dire 301 o 303?
Nel caso affermativo dovrei capire meglio se e quali modifiche hai fatto all’.htaccess
Gli articoli sono presenti fisicamente e con quale path?
Se posso aiutarti più che volentieri Pinosiciliano!
Ciau
Teo
Ciao Ghido,
ho una domanda da farti, hai idea se questa modifica non crei delle penalizzazioni su google? Ovvero, partendo dal fatto che questa, anche se molto comoda in quanto non devi riscrivere titoli e altro, crea decine e decine di duplicati, pensi che cmq potrebbe portare qualche problema?
Te lo dico perchè sono circa 6 giorni che sono in fase di penalizzazione da google. Portando su un forum di SEO, un esperto mi ha detto che è dato da un problema riguardanti duplicati, e per risolvere il problema si deve utilizzare All in One SEO Pack.
Ciao
Credo che una soluzione possa essere facilmente applicabile al robot.txt
Inserisci queste linee nel tuo file robot.txt e fammi sapere se hai risolto per la penalizzazione
Disallow: /wp-
Disallow: /*/trackback/$
Disallow: /*/*/trackback/$
Disallow: /*/*/*/trackback/$
Cosa fanno?
Come forse saprai il comando disallow indica nel file robot.txt che non bisogna permettere agli spider di considerare quello che viene menzionato.
In questo caso la soluzione è per i tracback, e quindi dovrebbe funzionare perchè evita di considerare separatamente l’anteprima, il testo esteso ed il richiamo sia di un plugins come AIO che la modifica di Daniele..
Non resta che provare insomma
Ciauuu
Teo
Ciao Teo,
già fatto, all’origine avevo creato la sitemap già in questo modo..ci sono troppi title duplicati e troppi errori di reindirizzamento che non capisco da dove saltino fuori.
Uhm…reindirizzamento?
Forse (se usi WP) ciò si genera per i tag/keywords
Mi spiego: Google a quanto pare indicizza le tue pagine del Blog andando a “pescare” da diverse fonti, tra queste ci sono i tag, le categorie, ecc ecc
Poi, come se non bastasse se utilizzi siti di editoria sociale (diggita e simili) questi inseriscono il tuo URL dopo l’anteprima, e poi ci sono aggregatori (alla liquida).
Ecco che comprendere tutti questi fattori ti può fare capire una delle penalizzazioni di Google che è (paradossalmente) la sovraottimizzazione e altro
Sono poco lucido a quest’ora, spero di essermi espresso comprensibilmente ehehheheh
Controlla (non hai nullla da perderci) quanto sopra detto su editoria sociale, aggregatori, tag, categorie ecc ecc
Guarda come vengono indicizzati i tuoi articoli e se ve ne sono di doppiati
Ciao Teodoro, forse mi sono espresso male.
Si quello che dici tu è perfettamente reale. Molti dei miei articoli si trovano in social bookmarking, ma io non parlavo di questo, stavo parlando del fatto che molti dei miei indirizzi sono stati segnalati da google come errori di reindirizzamento. Non sono pochi, sono circa 170. A quanto pare questo è un grosso potenziale di perdita visite in quanto sono eliminati dall’indicizzazione almeno 120 articoli…
Ciao Ghido,
sei una cassa piena d’oro! Mi sei davvero utilissimo in ogni tua cosa
sono davvero stupito
E’ una grandissima idea eliminare l’uso di All-in-One; nel mio caso è molto importante ovviare l’uso di quel plugin in quanto ho molti collaboratori che scrivono e che ovviamente ne capiscono poco e niente di tutto questo; infatti nella vecchia versione dovevo passarmi ore a modificare gli articoli degli altri inserendo tutto quello che mancava, compreso la compilazione di all’-in-one.
Piccola domandina domanduccia: posso mettere questa funzione dovunque all’interno del functions.php?
Metto il codice del mio functions.php:
[...]
la sua posizione è giusta?
ps: mi sa che il tag <code> qui non funziona tanto bene…perdonami
se puoi modifica il mio commento…
Sono contento che ti piacciano i miei articoli, grazie!
Ti ho tolto tutto il codice che avevi scritto, perchè tanto non serve agli altri lettori. Comunqe sì, è corretto: puoi inserirlo in qualsiasi punto del file functions.php.
P.S.
se devi postare codice sul mio blog, ti consiglio di usare il tag <pre lang="php">, che così ti colora anche la sintassi
diciamo che i tuoi plugin e le tue moddature sono perfette per me e per il nuovo blog! Ne mastico abbastanza di linguaggi di programmazione, ma sinceramente non saprei programmare in php
magari si potesse programmare in c 
cmq grazie ancora per la tua assistenza! Finalmente ho finito di realizzare il nuovo blog!
ps: ahahah ok! ecco un’altra cosa che non sapevo di wordpress
Bè, in realtà vale solo per il mio blog (merito di un plugin che uso).
Splendida idea, personalmente ritengo fra l’altro un pò una perdita di tempo il dover riscrivere titoli, tag e descrizioni nel plugin All in One o similari… Meglio avere qualcosa che vada in automatico! Buon lavoro!
Ottima tools, sicuramente da salvare..
sai che ti dico? Ora la testo su un sito che sto avviando per un cliente!
Ottimo, fammi sapere se ci sono problemi!
più che altro si mette mano al file functions.php ..io di sicuro all’upgrade successivo mi dimentico di aver fatto questa modifica e sovrascrivo tutto!
Il file functions.php fa parte del template, quindi non viene sovrascritto all’aggiornamento di WordPress.
Ho letto con curiosità questo articolo. Sarebbe bello togliere il plugin e sostituirlo con un po’di codice, sicuramente il blog sarebbe più leggero. Però mi pare che, così facendo, non avrei la medesima libertà di persolizzazione che mi dà il plugin… Ad esempio, magari non voglio inserire i tag e le categorie come keywords, ma altre parole scelte da me. Uhm… Peccato che bisogna sempre scegliere tra la botte piena e la moglie ubriaca!
Comunque il suggerimento che hai dato è molto istruttivo, in ogni caso. Grazie!
Hai ragione, dimenticavo quella funzionalità del plugin, che in questo caso non è contemplata (personalmente non la uso, per questo me la sono dimenticata).
Una possibile soluzione è quella di usare i campi personalizzati e richiamarli tramite la funzione
get_post_meta(), quando va a creare le keywords per gli articoli.Ecco qua il codice modificato:
global $wp_query;
$post = $wp_query->get_queried_object();
$desc = get_bloginfo('description');
$keys = "LE KEYWORDS DI DEFAULT";
if(is_single() || is_page()){
$desc = cut($post->post_content, 25);
}
if(is_single()){
$custom = get_post_meta($post->ID, 'keywords', true);
if($custom != ''){
$keys = $custom;
}else{
$keywords = array();
$tags = get_the_tags($post->ID);
$categories = get_the_category($post->ID);
if(is_array($tags)){
foreach ($tags as $tag)
$keywords[] = $tag->name;
}
if(is_array($categories)){
foreach ($categories as $category)
$keywords[] = $category->cat_name;
}
$keys = implode(", ", $keywords);
}
}
if(is_category()){
$desc = strip_tags(category_description());
}
$desc = str_replace(array("\n","\r","\t"), " ", $desc);
$desc = str_replace('"', "'", $desc);
echo '<meta name="description" content="' . $desc . '" />' . "\n";
echo '<meta name="keywords" content="'. $keys . '" />' . "\n";
}
Basterà creare un campo personalizzato chiamato “keywords” ed inserirvi l’elenco di parole chiave.
Non l’ho testato, fatemi sapere se funziona.
Bella questa soluzione ottimizzata, può tornare utili ai poltroni che non hanno voglia di compilare i dati dei plugin SEO. Me la salvo x alcuni dei miei clienti XD
Ed è sicuramente più leggera di qualsiasi plugin