Filtrare una categoria specifica sul plugin Facebook Instant WordPress

Personalizziamo il plugin Facebook Instant Wordpress

Nell’articolo di oggi vediamo come filtrare il feed generato dal plugin facebook instant di wordpress facendo apparire una sola categoria.

Vi è mai capitato di dover filtrare il feed generato dal plugin “facebook instant” di wordpress prelevando solo una categoria del vostro blog? Bhe se la risposta è sì siete nel posto giusto per trovare la soluzione al vostro problema.

LINK AL PLUGIN

Che cos’è Facebook Instant?

Instant Articles è la risposta offerta da Facebook a Google AMP.  Si tratta di pagine super-veloci e altamente performanti, generate da facebook in base al submission dell’utente. Il Submission a Facebook può avvenire essenzialmente in due modi: tramite feed o API. Il metodo piu semplice è usare il feed. Dal punto di vista prettamente tecnico il feed richiama molto la struttura standard rss ma all’interno del content viene passato il markup ad hoc generato per Instant – seguendo rigide linee guida.

Se siete alle prime armi non abbiate timori: nel caso usiate wordpress l’implementazione è davvero semplice:

  1. Attiva il plugin
  2. Collega il sito alla proprietà Facebook tramite apposito meta tag sul sito
  3. richiedi l’analisi del tuo feed all’interno di Facebook
  4. Una volta approvato il feed Facebook inizierà a “trasformare” i link condivisi sulla tua pagina in instant per i tuoi utenti.
  5. Nel caso lo volessi è possibile implementare un placement code di pubblicità che si auto-posizionerà automaticamente nell’articolo in base alla lunghezza dello stesso.

Come posso visualizzare solo una categoria del blog sul feed di instant article?

Veniamo ora al motivo di questo articolo: Il feed di instant di default permette di recuperare TUTTI gli articoli del blog senza poter filtrare per categoria. Di recente per un mio cliente mi è capitato di dover filtrare una determinata sezione del sito in modo tale da far apparire solo la categoria/tag “Calcio” nel feed. Ecco come ho risolto.

File functions.php

//Hook per filtrare per tag plugin instant articles by Riccardo Mel
function riccardomel_alter_query_instant_articles($query) {
  global $wp_query;
  $url = 'https://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
  if (strpos($url,'feed/instant-articles/') !== false ):
    	if ( !$query->is_main_query() )
    	return;
      	$query-> set('tag' ,'calcio');
  endif;
}//riccardomel_alter_query_instant_articles
add_action('pre_get_posts','riccardomel_alter_query_instant_articles');

Siccome il plugin non ha il suo interno un apposito hook per filtrare la categoria, per risolvere ho agito come segue: concettualmente non essendoci un hook nativo dovevo intercettare la query e modificarla PRIMA che venga eseguita. Il tutto deve però essere eseguito solo nella pagina del feed, onde evitare di intaccare tutti i feed del sito.

Problema 1: Riconoscere la pagina del feed.

Per fortuna il plugin genera automaticamente una sola pagina feed chiamata feed/instant-articles pertanto recupero se si è in quella specifica pagina in questo modo:

$url = 'https://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if (strpos($url,'feed/instant-articles/') !== false) {
//Siamo sulla pagina in esame

A questo punto faccio un ulteriore controllo per verificare che sia la query principale della pagina onde evitare di intaccare altri loop:

if ( !$query->is_main_query() )
return;

A questo punto uso la funzione pre_get_posts per filtrare la query:

$query-> set('tag' ,'calcio');

DOCUMENTAZIONE PRE_GET_POSTS

Nel feed a questo punto dovreste vedere solo gli articoli della categoria/tag filtrato.

Hai bisogno di un aiuto o di modifiche custom per il tuo sito? Contattami

Lascia la tua opinione

×