Premessa doverosa.
Mi sto convincendo che gli Open Graph siano ancora in fase di test. Sì infatti per un motivo o per l’altro mi è capitato che non venissero visualizzate correttamente nei social le informazioni (immagine, titolo e descrizione) di un post condiviso. Se facebook alcune volte fa muro, e nemmeno ricorrendo agli URL shortener come bit.ly o goo.gl se ne viene a capo (comunque provateci, a volte funziona), Google Plus invece si diverte a ripetere il titolo del post all’infinito. Spiegazioni plausibili? Nessuna. Solo casistiche/casualità poco affidabili. Per esperienza personale plugin di cache e post programmati cozzano con la buona riuscita della condivisione.
Detto questo esiste in WordPress un modo poco invadente per “popolare” gli open meta tags in modo corretto, senza usare plugins o ritrovarsi ad incrociare le dita ogni giorno. La strada che pare essere più efficace e funzionante, è quella di aggiungere al file functions.php il seguente codice:
function opengraph_for_posts() { if ( is_singular() ) { global $post; setup_postdata( $post ); $og_type = '<meta property="og:type" content="article" />' . "\n"; $og_title = '<meta property="og:title" content="' . esc_attr( get_the_title() ) . '" />' . "\n"; $og_url = '<meta property="og:url" content="' . get_permalink() . '" />' . "\n"; $og_description = '<meta property="og:description" content="' . esc_attr( get_the_excerpt() ) . '" />' . "\n"; if ( has_post_thumbnail() ) { $imgsrc = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'medium' ); $og_image = '<meta property="og:image" content="' . $imgsrc[0] . '" />' . "\n"; } echo $og_type . $og_title . $og_url . $og_description . $og_image; } } add_action( 'wp_head', 'opengraph_for_posts' );
In aggiunta, nel file header.php andremo a cambiare il tag html così:
<html <?php language_attributes(); ?> prefix="og: http://ogp.me/ns#">
Che cosa fa il codice riportato? Semplicemente fa si che in fase di condivisione vengano presi, dal social di turno, il titolo del post, l’immagine in evidenza (post_thumbnail) e il riassunto (excerpt). Nel caso mancasse l’immagine in evidenza andiamo a settare un’immagine di default da usare.
Tutto semplice, e il gioco è fatto. Sempre sperando che Facebook e Google si sveglino col piede giusto.