<

Moduli

Nel wordpress Gpci framework esistono i moduli: sono componenti aggiuntivi equivalenti ai plugins di wordpress ma sono integrati nel tema, in quanto per funzionare si interfacciano con la struttura del framework e ne estendono le funzionalità. Va comunque chiarito che i moduli sono sempre indipendenti gli uni dagli altri. Per abilitare uno o più moduli è sufficiente utilizzare lo switch visivo nel backend in Gpci/componenti aggiuntivi, ma ci sono altri metodi che seguono un certo ordine per rispettare le priorità:

  1. settare una costante php per l'abilitazione di default
  2. abilitare tramite switch visivo
  3. settare una costante php per l'abilitazione forzata

Menzione a parte invece per settare direttamente una costante di inclusione in quanto avrà sempre priorità sul resto(vedi dopo).

Abilitare i moduli tramite switch

Il modo più semplice per attivare o disattivare un modulo è andare nel backend in Gpci/componenti aggiuntivi e utilizzare lo switch corrispondente. Appena salvate le modifiche appariranno opzioni aggiuntive relative al modulo, come i post types a cui applicarlo o sotto moduli da abilitare o disabilitare. Questo dovrebbe essere già sufficiente per la maggior parte dei siti, comunque per opzioni avanzate e condizioni è possibile usare le costanti php come descritto sotto.

wordpress gpci framework schermata componenti aggiuntivi
schermata componenti aggiuntivi

Struttura delle costanti

la struttura delle costanti php per l'abilitazione/disabilitazione dei moduli è: gpci\modules\tipo di abilitazione\nome modulo e il valore può essere 0 oppure 1. Vanno definite nel file options nel tema figlio in /private/php/options.php dove è già presente una struttura che rispecchia i moduli esistenti al momento.

Tipo di abilitazione

Il tipo di abilitazione può essere uno o più tra i seguenti(lo switch non è una costante ma l'ho inserito qui solo per dare un'idea delle priorità):

  • default: questo stato serve ad abilitare/disabilitare il modulo come condizione default che può ancora essere abilitato o disabilitato dallo switch e dallo stato forced
  • switch: ha la priorità sullo stato default ma il modulo può ancora essere abilitato o disabilitato dallo stato forced
  • forced: ha la priorità su default e sullo switch, quando utilizzato forced lo switch diventerà rosso per segnalare all'utente che non è possibile modificarne lo stato
  • included: è il tipo di abilitazione più importante in quanto il modulo sarà abilitato o disabilitato solo in base al valore di questa costante(che sarà calcolata, se non specificata, automaticamente in base ai punti precedenti)

Utilizzando le costanti è possibile ad esempio:

  • dare un'impostazione di default per tipo di sito
  • non consentire all'utente di abilitare o disabilitare un modulo
  • specificare delle condizioni per cui il modulo sarà abilitato o escluso

Esempi di abilitazioni dei moduli con php

//Disabilita il modulo "aggiunte di codice" di default
define( 'gpci\modules\default\additions', 0 );
//Abilita il "modulo aggiunte di codice" di default
define( 'gpci\modules\default\additions', 1 );
//Disabilita il modulo permessi e impedisce all'utente di abilitarlo tramite switch
define( 'gpci\modules\forced\permissions', 0 );
//Disabilita il modulo icone se l'id del post è 2(sia backend che frontend)
if( gpci\currentPostId == 2 ){ define( 'gpci\modules\included\icons', 0 ); }
//Disabilita il modulo icone se l'id del post è 2(solo backend)
if( gpci\currentPostId == 2 AND gpci\isGutenbergBackend ){ define( 'gpci\modules\included\icons', 0 ); }

Post types dei moduli

Alcuni moduli, ossia quelli che hanno componenti a livello di pagina singola(come il modulo aggiunte di codice), possono essere abilitati e disabilitati anche soltanto in certi post types. Questo segue la stessa logica vista sopra con l'unica differenza che nel caso di abilitazione con php la costante è un array di stringhe invece di un numero. Esempio:

//Abilita il modulo aggiunte di codice soltanto per le pagine
define( 'gpci\modules\included\additions\additions-posttypes', ['page' ] );

Abilitare i singoli componenti dei moduli

Vari moduli sono composti da più componenti; per esempio il modulo di aggiunte di codice permette di aggiungere alle singole pagine:

  • css
  • javascript nella head
  • javascript nel footer
  • jquery
  • gsap

Dato che potrebbero essere utilizzate soltanto una parte delle funzioni(ad esempio nel modulo aggiunte di codice la maggior parte delle volte verranno usati solo css e javascript) è possibile abilitare e disabilitare anche i singoli componenti dei moduli esattamente come visto prima. Ovviamente il modulo deve essere abilitato per fare questo. Esempio:

//Abilita il modulo gsap solo se l'id del post è 2
if( gpci\currentPostId == 2 ){ define( 'gpci\modules\included\additions\single-gsap', 1 ); }

Va detto che il controllo dei post types viene fatto prima del controllo dei singoli componenti quindi:
Supponiamo di essere in una pagina singola(post type: page)

define( 'gpci\modules\included\additions\additions-posttypes', [ 'page' ] );
define( 'gpci\modules\included\additions\single-css', 1 );
//Funzionerà
define( 'gpci\modules\included\additions\additions-posttypes', [ 'post' ] );
define( 'gpci\modules\included\additions\single-css', 1 );
//NON funzionerà