
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!
Thank you for the wp_list_categories bit!
Ma se invece volessi escludere le miniature in tutti i miei post come devo fare? Di default, quando inserisco l’immagine in evidenza, compare una thumb che non voglio assolutamente… ho individuato (credo) la parte di codice che mi iteressa:
add_theme_support( ‘post-thumbnails’, array( ‘post’ ) );
set_post_thumbnail_size( 130, 130, true ); // Normal post thumbnails
add_image_size( ‘single-post-thumbnail’, 250, 250 ); // Permalink thumbnail size
ma non capisco un granchè! aiutatemi!
Qui si vede in piccolo l’immagine in evidenza che ho inserito (e mi sta bene)
https://www.fotobaby.it/fotografi%20catania/galleria-foto/
Qui invece la stessa immagine risulta li in alto a dx ma non la voglio! Come toglierla solo dai post?
https://www.fotobaby.it/2011/09/lorenzino-e-mamma-valentina/
Ma il “crop” dove l’hai messo esattamente?
Il “true” della stringa che ti dicevo, istruiva appunto la funzione, di fare il crop all’immagine, che è tagliata perchè il crop fa appunto quello.
L’immagine non la vedi per una questione di CSS.
Metti nel css:
.related-posts img {position:absolute;}
ol.related-posts p {position:relative; top:85px;}
Ciao, caspita che velocità, sono commosso! :-)
Il tuo escamotage purtroppo non ha funzionato. Dentro functions.php ho messo la stringa che mi hai suggerito ma non ha prodotto effetti.
Ho risolto parzialmente il problema inserendo un crop nella parentesi dell’array.
Mi taglia l’immagine ma per lo meno il thumbnail è quadrato.
Ora ho un altro problema: con IE7 non visualizzo l’immagine e il relativo link.. avete qualche idea del perchè?
Ciao Davide, metti questo nel functions.php:
set_post_thumbnail_size( 80, 80, true );
Dimmi se è quello che intendevi!
Ciao, ho implementato la tua funzione sul mio blog adattandola per un template di yarpp. E tutto perfetto se non i thumbnail estratti dalle Immagini in Evidenza dei post, che riflettono la loro dimensione.
Es: sul post l’immagine è rettangolare.
Dentro la mia funzione ho settato 80×80, mi aspettavo una immagine quadrata e invece è 80×53. Come posso risolvere la questione, se possibile evitando di distorcere l’immagine?