Nessuna immagine attaccata al post.
Stiamo riscontrando un problema con wordpress 3.3.1 riguardante le immagini attaccate al post.
Utilizzando le funzioni native di wordpress, se volessimo prendere tutte le immagini attaccate al post utilizzeremo la seguente funzione:
$files = get_children('post_parent='.$post->ID.'&post_type=attachment&post_mime_type=image');
print_r($files);
L’output di questa funzione dovrebbe tornare un array con tutte le immagini che sono state inserite all’interno del post come il codice seguente:
Array ( [194] => stdClass Object ( [ID] => 194 [post_author] => 1 [post_date] => 2012-04-10 10:16:29 [post_date_gmt] => 2012-04-10 10:16:29 [post_content] => [post_title] => Immagine del post [post_excerpt] => [post_status] => inherit [comment_status] => closed [ping_status] => closed [post_password] => [post_name] => a-19727 [to_ping] => [pinged] => [post_modified] => 2012-04-10 10:16:29 [post_modified_gmt] => 2012-04-10 10:16:29 [post_content_filtered] => [post_parent] => 131 [guid] => http://domain.ext/wp-content/uploads/2012/04/immagine-del-post.jpg [menu_order] => 0 [post_type] => attachment [post_mime_type] => image/jpeg [comment_count] => 0 [filter] => raw ) )
Il problema che abbiamo riscontrato è che utilizzando la funzione get_children o get_posts non abbiamo sempre lo stesso risultato cioè, potremmo trovarci nella situazione che l’array ritornato risulterà vuoto.
Primo caso [funzionante]:
Se creiamo un nuovo post e attacchiamo l’immagine caricandola direttamente dal nostro computer
la inseriamo nell’articolo tramite il bottone inserisci nell’articolo,
questa la ritroveremo nell’elenco dei file all’interno della sezione media e qui potremo vedere che l’immagine appena caricata sarà collegata al post creato.
In questo modo, richiamando la funzione sopra descritta get_children o get_post tramite l’id del post avremo come risultato l’array completo di tutte le informazioni riguardanti l’immagine da poter utilizzare all’interno del nostro loop o per customizzare il template della pagina a nostro piacimento.
Secondo caso [non funzionante]:
Nel caso in cui andiamo a creare un nuovo post e, invece di caricare l’immagine direttamente dal nostro computer la andiamo a cercare tra quelle caricate in precedenza all’interno della libreria media, quando andiamo ad inserirla nel post tramite il bottone inserisci nell’articolo questa non verrà collegata al post che stiamo scrivendo.
Richiamando quindi la funzione sopra descritta get_children o get_post tramite l’id del post avremo come risultato un array vuoto che non possiamo utilizzare all’interno del nostro loop per customizzare il template a nostro piacimento.
Immagino che questo sia un bug di wordpress e che verrà risolto nella prossima versione.
Escamotage al problema:
Questa non è una soluzione che risolve il bug di worpdress ma, se avessimo bisogno di creare una pagina personalizzata visualizzando tutte le immagini collegate al post utilizzando le funzioni native di wordpress come get_the_post_thumbnail ad esempio , potremmo usare alcuni escamotage dato che get_children o get_posts non ci ritornano l’id dell’immagine.
Potremmo usare ad esempio la funzione per prendere la prima immagine del post e una volta ottenuto l’id passarlo alla funzione get_the_post_thumbnail.
Nel frattempo, attendiamo che venga risolto il bug.