Evidentemente è tempo di modifica di plugin, non voluto e non cercato, ma necessario per mettere a punto alcune funzioni che gli sviluppatori non hanno nativamente previsto. È successo una manciata di giorni fa con il plugin Lightweight Social Icons, oggi tocca a Quick and Easy FAQs, quello che permette di pubblicare facilmente delle FAQ all’interno di una qualsivoglia installazione di WordPress.
Il plugin è leggero e permette di arrivare al traguardo con la minima fatica, peccato solo che non abbia mai previsto la possibilità di limitare il numero di FAQ mostrate per argomento, fino a ora.
Perché?
Perché dato che avevo davvero bisogno di questa possibilità su un’installazione WordPress che uso per lavoro, ho deciso di sbirciare sotto al cofano e capire come modificare quel motore affinché mi permettesse la libera scelta del numero di contenuti da mostrare al pubblico per specifica categoria.
La teoria mi martellava in testa facendomi pensare “semplice, sarà tutta questione di loop“, la pratica non si è discostata di molto. Ho pubblicato il codice modificato del plugin (basato sull’attuale versione 1.3.5) su GitHub, all’indirizzo github.com/gioxx/quick-and-easy-faqs-mod. Puoi scaricare il file zip e caricare il suo contenuto sul tuo spazio FTP sovrascrivendo il plugin già presente, non perderai alcuna configurazione / salvataggio / storico FAQ ma attenzione, non farlo se non stai usando la versione 1.3.5.
File coinvolti
Ho ritoccato i file quick-and-easy-faqs.php
(ma solo per agganciare il fatto che si tratta di una modifica “.1” rispetto alla 1.3.5, quindi non fondamentale per il funzionamento della Mod), class-faqs-query.php
dentro la cartella include
e class-shortcode.php
dentro la cartella frontend
. Ti mostro rapidamente cosa in particolare.
class-faqs-query.php
Ho previsto una nuova variabile int che permette di specificare il limite massimo di contenuti da caricare, sono quindi intervenuto a partire da riga 47 e – dopo aver specificato la variabile – l’ho portata all’interno della funzione (public function __construct
) mettendo a default “-1” il limite, togliendo così il tetto massimo di FAQ da mostrare se non diversamente specificato:
/** * How many faqs show (limit). * * @var int $limit */ protected $limit; /** * Initialize the class and set its properties. * * @param string $display Display type of plugin. * @param bool | array $filters The filters of this plugin. * @param string $orderby FAQs posts order by. * @param string $order FAQs posts order. * @param int $limit FAQs to show (quantity). */ public function __construct( $display = '', $filters = false || array(), $orderby = 'date', $order = 'DESC', $limit = -1 ) { $this->display = $display; $this->filters = $filters; $this->orderby = $orderby; $this->order = $order; $this->limit = $limit;
Stessa cosa qualche riga più tardi (89), per permettere alla query di tenere conto del limite specificato:
protected function query_build() { $query = array( 'post_type' => 'faq', 'posts_per_page' => $this->limit, 'orderby' => $this->orderby, 'order' => $this->order, );
class-shortcode.php
A questo punto è stato necessario prevedere che la variabile “limit” potesse essere specificata all’interno dello shortcode che usi già abitualmente per richiamare le FAQ in una qualsiasi pagina / post di WordPress. Il ritocco comincia a partire dalla riga 89, all’interno della public function display_faqs_list
:
public function display_faqs_list( $attributes ) { $attributes = $this->old_shortcode_fallback( $attributes ); extract( shortcode_atts( array( 'style' => '', // Possible Values: toggle, accordion, toggle-grouped, accordion-grouped 'filter' => false, 'orderby' => 'date', 'order' => 'DESC', 'limit' => -1, ), $attributes, 'faqs' ) );
e prosegue nella riga 103, dove dovrai tenere conto della medesima variabile:
$faqs_query = new FAQs_Query( $style, $filter, $orderby, $order, $limit );
La modifica dei file è terminata, potrai ora utilizzare il solito shortcode per inserire le FAQ ovunque tu voglia, ma potrai inoltre andare a specificare il limite massimo di FAQ da mostrare, semplicemente utilizzando limit="5"
dove 5 equivale al numero di FAQ mostrate. Un esempio più completo? Eccolo:
[ faqs style="accordion" order="DESC" filter="notizie-importanti" limit="3" ]
Fammi sapere se ci sono dubbi in merito o se cambieresti qualcosa all’interno del codice, ogni contributo è sempre ben accetto.
Io nel frattempo ho disabilitato la funzione di aggiornamento automatico del plugin sull’installazione WordPress modificata, mi accorgerò così dei nuovi rilasci del plugin e potrò andare a ritoccare nuovamente il codice per integrare la variabile di limite.
Anticipo l’eventuale domanda / dubbio: sono pienamente consapevole di non aver dato retta alcuna ai file di aiuto e ai blocchi Gutenberg di WordPress, si tratta di una finezza alla quale ho rinunciato.
Inizialmente non volevo neanche proporre questa modifica in maniera ufficiale sul repository GitHub del plugin (github.com/InspiryThemes/quick-and-easy-faqs) perché l’ho visto particolarmente inattivo (c’è una Pull Request ferma lì da ottobre 2020, e una richiesta di modifica al codice proprio per avere una variabile di limite nel forum di supporto dall’aprile del 2020), ma alla fine mi sono convinto e l’ho lasciata appoggiata qui: github.com/InspiryThemes/quick-and-easy-faqs/pull/27, vediamo che fine fa.
#StaySafe
Immagine di copertina: Mark König on Unsplash
L'articolo potrebbe non essere aggiornato
Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)