Se avete più di 1000 articoli o 1000 commenti (nel mio caso 2689 commenti), nella bacheca del vostro pannello di amministrazione avrete un errore simile al seguente (sul fondo della colonna di destra)

Parse error: syntax error, unexpected ‘,’ in /percorso_del_vostro_blog/wp-includes/gettext.php(313) : eval()’d code on line 1

Questo è il bug relativo, la soluzione è modificare il file wp-admin/index.php utilizzando questo diff; per i più pigri è possibile scaricare un file index.php già modificato (rinominare il file indexphp.txt in index.php), se siete disposti a sopportare la visione quotidiana di questo errore potrete aspettare la 2.1.1 ;-)

Tag Technorati:

Wordpress 2.1

27 Gennaio 2007

Da queste parti si è appena aggiornato a Wordpress 2.1: si ringrazia Wordpress Italy per la localizzazione in italiano, DreamHost per l’accesso ssh (mi ha fatto risparmiare una mezz’ora buona in backup e ravanamenti vari), MAMP per le verifiche in locale.

wp21.png

Tutto sembra funzionare al meglio (bello il nuovo editor!), l’unico plugin non funzionante è AJAX Comment Preview (al momento disattivato).

Diario del capitano, data astrale 2*1o^4

P.S. ovviamente qualcuno è riuscito ad infilarmi un commento subito dopo il backup del db: tempismo perfetto, considerando che tra l’ultimo backup e il passaggio alla 2.1 sono passati 30 secondi :P

Tag Technorati:

Ho approfittato dell’aggiornamento alla versione 2.0.6 di WordPress per aggiornare i (pochi) plugin che utilizzo e, purtroppo, mi sono appena accorto che la versione 2.0.20 di WP-Cache presenta dei problemi: quando viene inserito un commento la pagina non viene marcata come expired.
Di conseguenza l’utente non vede il proprio commento dopo averlo inserito; il commento non sarà visibile né sulla home page né sulla pagina del singolo articolo fino a quanto le pagine in questione non saranno scadute “naturalmente” (come impostazione predefinita questo avviene dopo un’ora).

Per il momento ho risolto installando la versione 2.0.19; l’autore è già a conoscenza del problema e sicuramente rilascerà a breve un aggiornamento per questo utilissimo plugin.

Tag Technorati:

A poche ore dal rilascio della versione inglese di WordPress, su Wordpress-it è già disponibile il download del pacchetto contenente la localizzazione in lingua italiana.
Buon aggiornamento;-)

Piccola premessa: esiste già un apposito widget da utilizzare nella sidebar per visualizzare il numero di messaggi bloccati da Akismet (potete vederlo all’opera direttamente nel blog di Akismet).
L’idea è quella di realizzare la stessa cosa direttamente nel codice php della sidebar e, cosa fondamentale, creare un codice valido W3C.

Questo è il codice da inserire (disponibile anche come file di testo), realizzato prendendo spunto dal plugin Akismet Spam Count:

<?php
$count = number_format(get_option('akismet_spam_count'));
if (($count) || (function_exists('akismet_stats'))) {
?>
<div id="akismetwrap">
<div id="akismetstats">
<a id="aka" href="http://akismet.com" title="">
<span id="akismet1">
<span id="akismetcount"><?php echo $count; ?></span>
<span id="akismetsc">commenti spam</span>
</span>
<span id="akismet2">
<span id="akismetbb">bloccati da</span><br />
<span id="akismeta">Akismet</span>
</span>
</a>
</div>
</div>
<?php
}
?>

Il codice è molto semplice:

  • inserisce nella variabile $count il numero di messaggi spam bloccati
  • se Akismet risulta installato visualizza il div con tutti i dati, in caso contrario non visualizza nulla

Il codice html è identico a quello generato dal widget, con la differenza che vengono utilizzati due tag span al posto dei div.

Questo è il css da associare al banner; già che c’ero ho allargato un po’ l’immagine del widget originale.

#akismetwrap #aka, #aka:link, #aka:hover, #aka:visited, #aka:active {
color:#fff;
text-decoration:none;
}
#akismetwrap {
margin: 10px 0 0;
}
#aka:hover {
border:none;
text-decoration:none
}
#akismet1, #akismet2 {
display: block;
}
#aka:hover #akismet1 {
display:none;
}
#aka:hover #akismet2, #akismet1 {
display:block;
}
#akismet2 {
display:none;
padding-top:2px;
}
#akismeta {
font-size:16px;
font-weight:bold;
line-height:18px;
text-decoration:none;
}
#akismetcount {
display:block;
font:15px Verdana,Arial,Sans-Serif;
font-weight:bold;
text-decoration:none;
}
#akismetwrap #akismetstats {
background:url(images/akismet.gif) no-repeat top left;
border:none;
color:#fff;
font:11px 'Trebuchet MS','Myriad Pro',sans-serif;
height:61px;
line-height:100%;
overflow:hidden;
padding:15px 0 0;
text-align:center;
width:141px;
}

In questa piccola guida vedremo come costruire una tag cloud artigianale per le categorie prendendo spunto dallo script presente in questa pagina.
Questo è il codice da inserire nella sidebar (è disponibile un file di testo con il codice):

<?php
// Recupero le informazioni sulle categorie dal database
$qrystr = "SELECT cat_ID, cat_name, category_count from $wpdb->categories ORDER BY cat_name";
$cats = $wpdb->get_results($qrystr);
//Recupero il numero massimo di post per una singola categoria
$max_value = 0;
foreach ($cats as $cat)
{
if ($max_value < $cat->category_count) {
$max_value = $cat->category_count;
}
}
//Considero 15 scalini , a partire da 60% a 200%
//Per modificare questi due valori basta modificare i valori delle variabili
$percentuale_minima = 100;
$percentuale_massima = 230;
$percentuale_scalino = 10;
$numero_scalini = ($percentuale_massima-$percentuale_minima)/$percentuale_scalino;
$post_per_scalino = $max_value / $numero_scalini;
// Stampo tutte le categoria all'interno di un div (id=cloud)
// assegno una classe alla categoria (o alle categorie) più grandi
echo '<div id="cloud">';
foreach ($cats as $cat)
{
$catname = $cat->cat_name;
$catlink = get_category_link($cat->cat_ID);
$postcnt = $cat->category_count;
$percentuale_fontsize = $percentuale_minima+(Round($postcnt/$post_per_scalino)*$percentuale_scalino);
echo '<a href="',$catlink,'"';
if ($percentuale_fontsize==$percentuale_massima) {
echo ' style="font-size: ', $percentuale_fontsize,'%" class="top_category" title="',$postcnt,' post">';
}
else {
echo ' style="font-size: ', $percentuale_fontsize,'%" title="',$postcnt,' post">';
}
echo $catname,"</a>\r";
}
echo "</div>";
?>

Breve spiegazione del codice:

  • effettuo una query sul database di WordPress (tabella categories); l’interrogazione restituisce l’elenco delle categorie ordinato per nome. Tutti i dati necessari sono già presenti nei risultati di questa query (grazie al campo category_count)
  • scorro tutti i risultati per ottenere il numero massimo di post per una singola categoria ($max_value)
  • stabilisco la percentuale massima e minima del font-size da utilizzare per il carattere, la distanza percentuale tra i vari livelli e il numero di post necessari per passare di livello (per calcolare questo valore mi serve stabilire il $max_value)
  • scorro le categorie e, ad ogni passo del ciclo, scrivo i dati della categoria corrente creando un link, nel tag title inserisco il numero di post (in questo modo apparirà un tooltip), se la percentuale del font-size è pari a quella massima assegno una classe speciale (top_category)

Questo è il css utilizzato per la tag cloud:
div#cloud {
border: 1px dotted #E4F0DB;
padding: 0.5em;
margin: 0.6em 0;
font-family: Tahoma, Verdana, Arial;
text-align: justify;
line-height: 1.7em;
}
div#cloud a.top_category {
color: #E87830;
}
div#cloud a.top_category:hover {
color: #C00;
}

A mio avviso questa soluzione presenta un vantaggio fondamentale rispetto al codice originale: non è necessario specificare nel css decine di classi per i vari link.

Tag Technorati: ,