Ritorno sull’argomento tag cloud per le categorie di WordPress: oggi ho provato ad installare in locale la versione 2.3 di WordPress e, come previsto, lo script non è più compatibile.

La spiegazione è semplice: la tabella wp_categories è stata rimossa e i dati necessari per lo script sono stati distribuiti in due tabelle distinte:

  • nella tabella wp_terms troviamo i term_id e i nomi associati a questi term_id
  • nella tabella wp_term_taxonomy riusciamo ad associare una tipologia ai vari term_id (campo taxonomy) e recuperare il numero di post collegati (campo count)

A questo punto, per recuperare tutti i valori che prima erano disponibili in un’unica tabella è necessario selezionare i termini di tipo category e fare un join delle due tabelle.

Ecco il nuovo codice (file in formato txt), compatibile SOLO con WordPress 2.3

< ?php

// Recupero le informazioni sulle categorie dal database
$qrystr = "SELECT $wpdb->term_taxonomy.term_id AS id_categoria, count, name, taxonomy FROM $wpdb->term_taxonomy LEFT JOIN $wpdb->terms ON $wpdb->term_taxonomy.term_id=$wpdb->terms.term_id WHERE taxonomy='category' ORDER BY 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->count) {
	$max_value = $cat->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 '
'; foreach ($cats as $cat) { if ($cat->count>0) { $catname = $cat->name; $catlink = get_category_link($cat->id_categoria); $postcnt = $cat->count; $percentuale_fontsize = $percentuale_minima+(Round($postcnt/$post_per_scalino)*$percentuale_scalino); echo ''; } else { echo ' style="font-size: ', $percentuale_fontsize,'%" title="',$postcnt,' post">'; } echo $catname,"\r"; } } echo "
"; ?>

10 commenti/trackback a “WordPress 2.3 e tag cloud per le categorie”

  1. Ivo Silvestro scrive:

    Scusa, ma non è più semplice convertire le categorie in tag e usare la funzione wp_tag_cloud già presente in wordpress?

  2. flod scrive:

    Beh, non è detto che i tag coincidano con le categorie e mi pare di capire che la funzione wp_tag_cloud (che non avevo ancora visto) non permetta di filtrare il campo taxonomy: nel mio caso le categorie sono molte meno dei tag, usando anche i tag farei un tag world più che una tag cloud 😛

    Altra cosa: con questa tag cloud artigianale posso evidenziare il numero di post come tooltip, distinguere la categoria più utilizzata e, non da ultimo, gestire il codice generato come preferisco (ma non ho ancora guardato quello generato dalla funzione).

  3. Ivo Silvestro scrive:

    L’idea dovrebbe essere: lascia perdere le categorie e usa i tag 😉

    Già che ci sono, ne approfitto (puoi anche mandarmi a quel paese):
    Ajax Comment Preview funziona con wordpress 2.3? (io non riesco a farla funzionare, ma non ho capito se è un problema del tema o di altri plugin).
    Ultimi commenti nella sidebar: immagino usi Get Recent Comments. Come fai a mettere la virgola tra un autore e l’altro, togliendola in fondo?

  4. flod scrive:

    Ajax Comment Preview

    Da una prova veloce mi sembrava funzionare, però sto utilizzando una vecchia versione (1.1) modificata e tradotta brutalmente dal sottoscritto.

    Se vuoi posso provare a passartela via mail 😉

    Per il discorso ultimi commenti uso Brian’s Latest Comments, versione 1.5.10, non ricordo di aver fatto modifiche particolari. Anche in questo caso posso mandarti il file via e-mail.

    Sul discorso TAG: pensa che passando alla 2.3 (non a breve) ho una mezza intenzione di restare con SimpleTags e non usare i tag integrati 😛

  5. Ivo Silvestro scrive:

    Ajax Comment Preview: mi sa che il problema sta nel mio template / altri plugin 🙁 Farò delle prove in locale

    Proverò a usare Brian’s Latest Comments: nella tua sidebar che codice c’è? (mi piace come sono raccolti i commenti per post)

  6. lorenzone92 scrive:

    Interessante!
    Apro un piccolo OT… quale plugin usi per rendere il codice colorato in base ai linguaggi?

    Ciao! 🙂

  7. lorenzone92 scrive:

    P.S.: Ehm… scusa l’ignoranza ma come dovrei fare per utilizzare questo codice? Dove lo devo mettere?

  8. flod scrive:

    @Ivo Silvestro

      < ?php blc_latest_comments('5','5','false'); ?>

    Tutto il codice è generato in questo modo: nel codice del plugin puoi modificare il colore dei commenti più vecchi e più recenti 😉

    @lorenzone 92

    WP-Syntax
    http://wordpress.org/extend/plugins/wp-syntax/

    Il codice devi inserirlo nella sidebar del tuo tema 😉

  9. lorenzone92 scrive:

    @pseudotecnico: l’ho fatto ma viene visualizzato il codice così com’è…

Trackback e pingback

  1. ...time is what you make of it...
    Sono passato a Wordpress 2.3: ma che tag e tag!... Aggiornamento completato… fortunatamente sembra funzionare tutto correttamente. Ho dovuto modificare…

Non è possibile inserire nuovi commenti. I commenti vengono disattivati automaticamente dopo 60 giorni.