WordPress Tricks #3

, WordPress Tricks #3, Shambix

Ecco un altro po’ di codice che può far comodo in situazioni dove la banalità non è mai troppa e WordPress si dimentica qualche pezzo…

Ma passiamo subito al sodo, cominciamo con un trick e mezzo: come visualizzare le categorie di WordPress una accanto all’altra e aggiungere un separatore tra le categorie chiamate con wp_list_categories senza farlo apparire anche dopo l’ultima categoria.

<?php
$listacat = explode( '<br />', wp_list_categories( '&title_li=&style=none&echo=0' ) ); // aggiungete i parametri che vi pare, ma quelli presenti lasciateli sennò non funziona
array_pop($listacat);
echo implode(' / ',$listacat); // in questo caso ho scelto il separatore " / ", mettete quello che preferite
?>

Se invece volete che il separatore sia visibile anche dopo l’ultima categoria, usate:

<?php
$listacat = wp_list_categories('echo=0&style=none'); // come sopra, aggiungete quello che volete ma non cambiate questi parametri
$listacat = str_replace('<br />','|',$listacat); // qui il separatore che ho scelto è " | ", usate quello che preferite
echo $listacat;
?>

Continuiamo quindi con una funzione che ho creato tempo fa per Vivanotte.it, per velocizzare e semplificare la visualizzazione delle immagini dei post, in varie parti del sito (home, sidebar .. etc).

Questa funzione necessita di timthumb, che sarà messo in una cartella scripts dentro al vostro template (metteteci timthumbs.php e create dentro una cartella vuota e con permessi di scrittura cache).
Inserite quindi il codice sottostante dentro il functions.php del vostro template (se non lo avete createlo).

Grazie a timthumb inoltre, possiamo sia fare un ottimo resize custom dell’immagine, assegnando poi nel template le misure che vogliamo, sia avere una comoda funzione di caching di ogni immagina visualizzata, diminuendo così il carico del server che non dovrà rigenerare ogni volta l’immagine con quel resize.

La funzione quindi cerca, in ordine di priorità: Immagine in evidenza del post, link immagine inserito tramite campo personalizzato thumb nel post, immagine a caso tra quelle del post.
La prima delle tre che trova, viene quindi visualizzata dove decidiamo noi, nel template.

<?php 
// Assicuriamoci che il template sia abilitato alle immagini in evidenza
if (function_exists('add_theme_support')) {
add_theme_support('post-thumbnails');
}
// Mostra la Thumb
function shambix_thumb($width,$height) {
global $post;
$key1 = "thumb";
$thumb = get_post_meta($post->ID, $key1, true);
$thumbnail = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'full');
$attachments = get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'rand', 'numberposts' => 1) );
if (function_exists('has_post_thumbnail') && has_post_thumbnail($post->ID)) {
// l'immagine in evidenza
echo the_post_thumbnail(array($width,$height)); 
} elseif ($thumb == true) {
// il link immagine inserito come valore per il campo personalizzato "thumb"
echo '<img src="'.get_bloginfo('template_url').'/scripts/timthumb.php?src='.$thumb.'&w='.$width.'&h='.$height.'&zc=1&q=100" alt="'.$post->post_title.'" />';
} else if ($attachments == true) {
// un'immagine a caso nel post
foreach($attachments as $id => $attachment) {
$img = wp_get_attachment_image_src($id, 'full');
$img_url = parse_url($img[0], PHP_URL_PATH);
print '<img src="'.get_bloginfo('template_url').'/scripts/timthumb.php?src='.$img_url.'&w='.$width.'&h='.$height.'&zc=1&q=100" alt="'.$post->post_title.'" />'; 
break;
}
}  else { 
// nel caso in cui non trovi nessuna immagine, non visualizza niente, altrimenti potete far visualizzare voi un'immagine standard che volete, scrivendo qui un'altra riga di codice
}
}

Ho già ottimizzato il tutto per essere SEO friendly, quindi ogni immagine è sia validabile sia comprensiva di attributo alt con titolo del post.
Banale far notare che, se servisse, potete anche fare in modo di linkare queste immagini al post relativo, così:

// aggiungete questa stringa nella funzione sopra, subito dopo i vari echo' o print' ma prima di <img src=...
<a href="'.get_permalink($post).'" title="'.$post->post_title.'">
// e questa alla fine dell'immagine, dopo /> ma prima di ';
</a>

Quindi, per poter utilizzare la funzione dove volete nel template, ma sempre dentro ad un loop, usate semplicemente:

<?php
shambix_thumb(larghezza,altezza); // dove altezza e larghezza sono la misura che volete, ma senza px alla fine
?>

Enjoy!