Diciamo la verità, creare temi WordPress è un lavoro che rende! Sono molto confidente in questa mia espressione perché altrimenti, io e te non ci troveremmo anche quest’oggi sulle pagine di questo sito e non esisterebbero marketplace dedicati a questi prodotti.
Ma vendere temi non è l’unica cosa difficile, anche perché non possiamo includere tutte le funzionalità necessarie all’interno di un tema, per questo esistono i plugin!
Ok facciamo per un attimo un passo indietro, di che cosa sto parlando?
Se hai sviluppato temi soltanto per dei clienti diretti con i quali hai avuto l’opportunità di sederti con loro a discutere delle funzionalità necessarie e ottenere i contenuti per alla creazione del tema (o meglio del sito), molto probabilmente non hai mai avuto la necessità di richiedere l’installazione di determinati plugin perché, in fin dei conti, eri tu stesso che li installavi durante lo sviluppo del progetto.
Ma cosa succede se decidi di rilasciare un tema gratuito (per scopi promozionali) o un tema premium da vendere all’interno di uno dei più famosi marketplace?
Come dicevo anche in apertura , un tema da solo non può far tutto e fin troppe volte abbiamo assistito alle discussioni riguardanti l’utilità di inserire delle funzionalità all’interno di un tema, funzionalità come un pannello per l’ottimizzazione on page dei propri articoli, i pulsanti social per la loro condivisione o l’aggiunta di altre funzionalità che hanno ben poco a che fare con il tema di per sé.
Infatti se stai usando un tema che include nativamente un portfolio, funzionalità ecommerce o altre soluzioni ingegnose, a meno che non sia tu lo sviluppatore di questo tema, il mio consiglio è quello di trovare una soluzione alternativa!
Queste sono tutte caratteristiche che non devono interessare il tema e non dovrebbero essere incluse al suo interno, senza contare che se hai intenzione di integrarle dovrai svilupparle tu stesso e in alcuni casi potrebbe essere una gran perdita di tempo.
Ma c’è un metodo migliore per fare tutto questo ed in questo articolo ti spiego proprio come fare.
Sfrutta i plugin WordPress e semplificati la vita
Se c’è una cosa che mi piace moltissimo di questa piattaforma è la possibilità di poter estendere le sue funzionalità con dei semplici plugin. Sono sicuro che sai già quanto sia semplice installare un nuovo plugin, inizialmente bastava un client FTP ma gli sviluppi di questa piattaforma l’hanno trasformata in un’esperienza talmente semplice che qualsiasi cliente che abbia mai preso in mano un mouse è in grado di installare un plugin.
Tutto quello che gli serve sono le credenziali di accesso.
Grazie ai plugin è possibile aggiungere nuove funzionalità, anzi se si parla di un plugin come Jetpack ne puoi inserire moltissime, e questo è uno degli aspetti che ha reso veramente famosa la piattaforma WordPress. Al tempo stesso dobbiamo anche essere onesti con noi stessi, sei sicuro che da solo sarai in grado di sviluppare tutte le funzionalità richieste e nel miglior modo possibile?
Personalmente non mi ritengo affatto all’altezza del compito.
Non tanto perché mi mancano le competenze tecniche, anche se forse sotto alcuni aspetti è proprio così, ma più che altro perché all’interno della directory presente su WordPress esistono dei plugin come WordPress SEO by Yoast, BackWPup, bbPress e moltissimi altri che vengono sviluppati e mantenuti da anni e che hanno raggiunto un livello di ottimizzazione e qualità che raramente sarei in grado di creare da solo.
Oltre a questo dovresti considerare una cosa, il tuo tempo è la cosa più preziosa che hai a disposizione, è quindi un bene non diluirlo per reinventare la ruota, se ci sono buone soluzioni che una volta installate ti permettono di risparmiare del tempo, usale!
Essere in grado di chiudere un lavoro nel minor tempo possibile ti permetterà di trovarne altro per lavorare su un nuovo progetto, passare più tempo con i tuoi amici e familiari oppure concederti quella passeggiata sotto al sole che desideri da tanto tempo.
Come dicevo, installare dei plugin quando si sta sviluppando un tema WordPress è un gioco da ragazzi, ma quando si rilascia un tema al pubblico e quindi non è possibile seguire tutte le fasi di configurazione del proprio tema risulta molto difficile sapere se questo viene usato nel modo corretto…
Partendo da questa base dobbiamo assicurarci che il nostro utente sia in grado di installare i plugin richiesti, esistono molte soluzioni per raggiungere questo risultato e a breve ti mostrerò quella che ritengo migliore.
Quali soluzioni hai a tua disposizione?
Se hai sviluppato un tema ottimizzato per Soliloquy, per WooCommerce o per uno delle altre migliaia di plugin presenti all’interno (e non) della directory WordPress, le soluzioni che potresti seguire sono le seguenti:
- indicare all’utente la necessità di installare plugin all’interno delle pagine che sponsorizzano il tuo tema;
- inviare una mail dopo il download/acquisto del tema al tuo cliente per avvertirlo che, se desidera sfruttare tutte le potenzialità offerte dal tuo tema, dovrà installare i plugin consigliati;
- creare una cartella `mu-plugins` che ci permette di specificare dei plugin che devono essere assolutamente utilizzati (must use) con il tema stesso, questo significa includere questa cartella e i relativi plugin all’interno del pacchetto `.zip` del tema stesso;
- utilizzare la semplice classe PHP TGM Plugin Activation che permette di integrare il sistema di installazione/aggiornamenti plugin presente in WordPress rendendo l’utente finale in grado di installarsi da solo tutto il necessario.
Si potrebbero creare infinite varianti dei punti precedenti, ma voglio mettere in luce un unico punto: semplifica la vita del tuo utente.
Permettere al proprio cliente di configurare il tema nel minor tempo possibile sarà sicuramente un vantaggio che ridurrà il tuo churn rate ed è per questo motivo che andremo a scoprire come proporre una serie di plugin grazie alla TGM Plugin Activation.
Se poi ritieni che uno degli altri metodi sia più utile o veloce, sarei curioso di conoscere meglio le tue opinioni all’interno dei commenti di questo stesso articolo.
Implementiamo la Libreria nel Tema
Diciamo, per esempio, che il nostro tema è stato creato per poter utilizzare i plugin BuddyPress e WooCommerce presenti all’interno della directory WordPress ma che, oltre a questo, abbiamo bisogno anche di un plugin esterno che non è stato pubblicato nella directory precedente.
Il link al plugin esterno che troverai all’interno del codice di esempio in questo articolo non è funzionante ma mi è servito per farti capire come sia possibile richiederne l’installazione.
I passi che dovrai seguire sono i seguenti:
- scaricare la libreria;
- importarla all’interno del tuo tema;
- configurarla per le tue necessità;
- testare se tutto funziona.
Dato che al momento non voglio farti confondere le idee utilizzando strani temi andremo a lavorare su una copia del tema _s
in modo che non ci sia troppa difficoltà nel capire la struttura del codice.
Ti consiglio di scaricare una versione del tema _s e seguire passo passo il resto dell’articolo perché presenteremo diversi screenshot che ti mostreranno come modificare questo tema specifico.
Se non lo conosci da vicino ti consiglio di dare una lettura a questo articolo che ti introdurrà al concetto di starter theme, ma andiamo intanto a scoprire come è strutturata la cartella del tema stesso:

Ora che abbiamo un tema di partenza non ci resta che includere la libreria. La prima cosa che devi fare è scaricare la libreria stessa. Successivamente non resta altro che estrarre i contenuti del pacchetto .zip
e procedere con la prossima sezione
Configuriamo la TGM Plugin Activation
AdTutto quello che devi fare è includere il file contenente la classe PHP all’interno del tuo tema. Generalmente il nome del file è class-tgm-plugin-activation.php
e per motivi di comodità, dato che stiamo lavorando all’interno di _s
, vado ad includerla all’interno della cartella inc/
in questo modo:

Adesso che il file è stato incluso nella struttura del tema dobbiamo dire a WordPress che quando verrà attivato il tema, dovrà richiedere i plugin che andremo a specificare al suo interno. Per fare questo non devi far altro che aprire il tuo file functions.php
ed inserire quanto segue:
/** * Includo la libreria TGM Plugin Activation * Nota che la libreria è stata inclusa all'interno della cartella inc/ presente nel tema */ require_once get_template_directory() . '/inc/class-tgm-plugin-activation.php';
Fatta questa operazione, qualsiasi installazione WordPress che andrà ad attivare il tuo tema sarà al corrente di questa libreria, peccato che al momento non saprà cosa farsene dato che manca tutta la configurazione! Vediamo come si può risolvere a questo problema.
L’autore di questa classe PHP consiglia di prendere il codice dal file example.php
che si trova all’interno della stessa cartella dalla quale abbiamo preso il file class-tgm-plugin-activation.php
. Dato che il file presenta molti esempi diversi preferisco spiegarti passo passo come dovrai muoverti prima di darti in pasto agli squali 😀
Quando si parla di configurare la libreria TGM devi sapere che avrai la necessità di configurare due aspetti differenti:
- la struttura che ti permetterà di richiedere i plugin essenziali al corretto funzionamento del tuo tema;
- la configurazione della libreria stessa, con questo si intende dove verrà posizionato la voce menu per la lista dei plugin, che tipo di alert vogliamo creare e altre interessanti funzionalità dedicate alla UI.
Procediamo un passo alla volta e guardiamo che cosa si intende per questo.
Come richiedere i plugin da installare
La configurazione di questo aspetto viene delegata ad un array che, con molta fantasia, viene incluso all’interno di una variabile chiamata $plugin
. Questa variabile può essere chiamata come meglio credi, basta che ti ricordi di richiamarla con la funzione tgmpa()
che è la responsabile del corretto funzionamento di questa classe.
Voglio ricordarti che tutto il codice che segue deve essere inserito all’interno del tuo file functions.php. Per migliorare la lettura inserirò soltanto i blocchi di codice che stiamo analizzando e ti presenterò tutto il codice che abbiamo realizzato in questo articolo alla fine dell’articolo.
All’interno di questo array ogni plugin viene dichiarato come un ulteriore array che ci permetterà di specificare i seguenti valori:
name
– un parametro richiesto che ci permette di specificare il nome del plugin;slug
– specifica lo slug (l’abbreviazione) usata per registrare il plugin all’interno di WordPress (nel caso in cui il plugin sia presente nel repo);required
– questo viene rappresentato con un valore booleano che permette di specificare se il plugin è richiesto (essenziale al corretto funzionamento del tema) oppure se viene semplicemente consigliato, e quindi che permette di aggiungere funzionalità;source
– questo è un parametro richiesto soltanto se il plugin che vogliamo installare non si trova all’interno della directory di WordPress, ma allo stesso modo l’esperienza dell’utente finale non verrà modificata.
Questi sono soltanto i punti essenziali che definiscono un plugin all’interno di questa libreria. Come potrai vedere tu stesso all’interno del file example.php
, i parametri per questa configurazione sono molti altri, ma per gli scopi di questo articolo quelli che ti ho presentato bastano e avanzano 😀
Quindi prima ancora di iniziare a richiedere i nostri plugin abbiamo la necessità di creare una funzione specifica che si aggancerà al corretto Hook, ecco un piccolo esempio:
//Aggiungo la funzione sam_tgm_plugin() al corretto Hook add_action( 'tgmpa_register', 'sam_tgm_plugin' ); function sam_tgm_plugin(){ //Richiesta plugin e configurazione }
Questo codice deve essere aggiunto dopo l’inclusione della classe, ovvero dopo require_once get_template_directory() . '/inc/class-tgm-plugin-activation.php';
perché altrimenti non avremo a disposizione l’Hook tgmpa_register
non sarà disponibile alla nostra installazione WordPress.
Ti senti un po’ arrigginito? Nono conosci ancora gli Hook che permettono di personalizzare WordPress in moltissimi modi? Ti ricordo che i nostri corsi dedicati allo sviluppo PHP con WordPress e alla creazione dei tuoi temi sono disponibili all’interno della nostra scuola.
Adesso che ci siamo agganciati al corretto Hook e abbiamo creato la funzione sam_tgm_plugin()
non ci resta altro che iniziare a dichiarare quali sono i plugin che vogliamo richiedere all’attivazione del nostro tema, ecco il codice di cui avrai bisogno:
add_action( 'tgmpa_register', 'sam_tgm_plugin' ); function sam_tgm_plugin(){ $plugins = array( // Ecco come puoi includere un plugin presente all'interno della directory WordPress array( 'name' => 'BuddyPress', 'slug' => 'buddypress', 'required' => true, ), array( 'name' => 'WooCommerce', 'slug' => 'woocommerce', 'required' => false, ), //Questo e' un esempio per capire come caricare un plugin fuori da WP.org array( 'name' => 'Il mio Plugin', 'slug' => 'il-mio-plugin', 'source' => 'https://percorso.plugin.org/', 'required' => true, 'external_url' => 'https://github.com/plugin/' //Link di ritorno ), ); }
Una cosa che ti vorrei far notare è che nei primi due plugin che abbiamo inserito con gli slug (buddypress
e woocommerce
) non abbiamo avuto alcuna necessità di specificare un source
mentre se desideri inserire un plugin esterno o incluso all’interno del tuo tema hai la necessità di specificare questo parametro.
Se sei lì a grattarti la testa cercando di capire il significato di external_url
non c’è alcun bisogno di farlo, ti spiego immediatamente il suo funzionamento. Generalmente prima dell’installazione un plugin, la piattaforma WordPress inserisce un link di ritorno alla pagina principale della pagina descrittiva presente sul repository. Se stai installando un plugin che non presente, puoi sempre specificare una URL differente collegando l’utente alla homepage o documentazione necessaria per un corretto utilizzo del plugin stesso.
Ebbene hai appena scoperto come puoi richiedere i plugin durante l’installazione del tema, hai finito il lavoro?
Purtroppo no perché dobbiamo ancora configurare la libreria stessa, ovvero abbiamo la necessità di specificare tutti gli elementi relativi alla User Interface come il tipo di notice da pubblicare, dove posizionare la pagina contenente la lista completa di plugin e molte altre cose interessanti.
add_action( 'tgmpa_register', 'sam_tgm_plugin' ); function sam_tgm_plugin(){ $plugins = array( //Richiesta plugin ); //Configuro la classe in modo da personalizzare Notice e voci menu $config = array( 'id' => 'sam-tgmpa', // Specifica un ID univoco per evitare problemi con altre istanze di TGMPA 'default_path' => '', // Il percorso di default dove trovare i plugin caricati con il tema. 'menu' => 'tgmpa-install-plugins', // Fornisci uno slug per la pagina opzioni. 'parent_slug' => 'themes.php', // Definisci il genitore della pagina opzioni nel menu. 'capability' => 'edit_theme_options', // Specifica la capability necessaria per consultare la pagina opzioni 'has_notices' => true, // Scegli se mostrare o meno le notice. 'dismissable' => true, // Se impostato a false, l'utente non potrà chiudere la notice. 'dismiss_msg' => '', // Se 'dismissable' è false, questo messaggio verrà mostrato in alto. 'is_automatic' => false, // Scegli se attivare automaticamente i plugin installati 'message' => '', // Messaggio da mostrare prima della tabella dei plugin. //Tutta la traduzione delle stringhe è facoltativa, puoi anche rimuovere tutto il codice qua sotto 'strings' => array( 'page_title' => __( 'Install Required Plugins', 'theme-slug' ), 'menu_title' => __( 'Install Plugins', 'theme-slug' ), 'installing' => __( 'Installing Plugin: %s', 'theme-slug' ), 'updating' => __( 'Updating Plugin: %s', 'theme-slug' ), 'oops' => __( 'Something went wrong with the plugin API.', 'theme-slug' ), 'notice_can_install_required' => _n_noop( 'This theme requires the following plugin: %1$s.', 'This theme requires the following plugins: %1$s.', 'theme-slug' ), 'notice_can_install_recommended' => _n_noop( 'This theme recommends the following plugin: %1$s.', 'This theme recommends the following plugins: %1$s.', 'theme-slug' ), 'notice_ask_to_update' => _n_noop( 'The following plugin needs to be updated to its latest version to ensure maximum compatibility with this theme: %1$s.', 'The following plugins need to be updated to their latest version to ensure maximum compatibility with this theme: %1$s.', 'theme-slug' ), 'notice_ask_to_update_maybe' => _n_noop( 'There is an update available for: %1$s.', 'There are updates available for the following plugins: %1$s.', 'theme-slug' ), 'notice_can_activate_required' => _n_noop( 'The following required plugin is currently inactive: %1$s.', 'The following required plugins are currently inactive: %1$s.', 'theme-slug' ), 'notice_can_activate_recommended' => _n_noop( 'The following recommended plugin is currently inactive: %1$s.', 'The following recommended plugins are currently inactive: %1$s.', 'theme-slug' ), 'install_link' => _n_noop( 'Begin installing plugin', 'Begin installing plugins', 'theme-slug' ), 'update_link' => _n_noop( 'Begin updating plugin', 'Begin updating plugins', 'theme-slug' ), 'activate_link' => _n_noop( 'Begin activating plugin', 'Begin activating plugins', 'theme-slug' ), 'plugin_activated' => __( 'Plugin activated successfully.', 'theme-slug' ), 'activated_successfully' => __( 'The following plugin was activated successfully:', 'theme-slug' ), 'plugin_already_active' => __( 'No action taken. Plugin %1$s was already active.', 'theme-slug' ), 'plugin_needs_higher_version' => __( 'Plugin not activated. A higher version of %s is needed for this theme. Please update the plugin.', 'theme-slug' ), 'complete' => __( 'All plugins installed and activated successfully. %1$s', 'theme-slug' ), 'dismiss' => __( 'Dismiss this notice', 'theme-slug' ), 'notice_cannot_install_activate' => __( 'There are one or more required or recommended plugins to install, update or activate.', 'theme-slug' ), 'contact_admin' => __( 'Please contact the administrator of this site for help.', 'theme-slug' ), 'nag_type' => 'notice-warning', // Determines admin notice type - can only be one of the typical WP notice classes, such as 'updated', 'update-nag', 'notice-warning', 'notice-info' or 'error'. Some of which may not work as expected in older WP versions. ), ); }
Molte delle informazioni di cui avrai bisogno sono presenti all’interno del blocco di codice All’interno di questo blocco di codice non ho fatto altro che tradurre le stringhe di testo per aiutarti a capire meglio a che cosa servono i singoli parametri, ma se desideri una spiegazione leggermente più dettagliata, continua pure a leggere qua sotto:
default_path
– se stai richiedendo l’installazione di un plugin che è presente all’interno di una cartella del tuo tema, puoi specificare il percorso assoluto che permetterà alla libreria di trovarlo ed installarlo correttamente;has_notices
– questo parametro ci permette di scegliere se mostrare o meno la notifica per l’installazione dei plugin, io la lascio sempre atrue
anche perché altrimenti non avrebbe senso installare questo plugin 😉dismissable
– in poche parole permette all’utente di nascondere il messaggio ma se lo imposti afalse
il messaggio verrà mostrato fintanto che l’utente non installa i plugin richiesti;message
– è un messaggio che puoi inserire prima della tabella dei plugin, è molto interessante anche perché ti permetterà di inserire dei codici HTML che ti permetteranno di mettere in risalto il tuo messaggio.
Quindi a questo punto hai detto quali sono i plugin di cui hai bisogno, hai configurato la libreria; quindi è giunto il momento di attivare il tema e vedere all’opera questa libreria… Non ancora tigre 😉
Prima di attivare il tuo tema e vedere se tutto funziona correttamente dovrai inserire la funzione che da vita a tutto questo, ovvero quella funzione che prende gli array di configurazione $plugin
e $config
e permette alla classe TGM Plugin Activation di fare la sua magia. La funzione si chiama tgmpa()
e per dovere di cronaca ti mostro qua sotto come utilizzarla:
add_action( 'tgmpa_register', 'sam_tgm_plugin' ); function sam_tgm_plugin(){ $plugins = array( //Richiesta plugin ); $config = array( //Configurazione UI ); //Attivo la richiesta di plugin e la personalizzazione della UI tgmpa( $plugins, $config ); }
Se però pensi di esserti confuso o se preferisci consultare tutto il codice in una sola volta ecco il file functions.php
completo di tutto quello che abbiamo inserito per configurare questa classe:
/* Questo file contiene il codice completo presentato nell'articolo */ add_action( 'tgmpa_register', 'sam_tgm_plugin' ); function sam_tgm_plugin(){ $plugins = array( // Ecco come puoi includere un plugin presente all'interno della directory WordPress array( 'name' => 'BuddyPress', 'slug' => 'buddypress', 'required' => true, ), array( 'name' => 'WooCommerce', 'slug' => 'woocommerce', 'required' => false, ), //Questo e' un esempio per capire come caricare un plugin fuori da WP.org array( 'name' => 'Il mio Plugin', 'slug' => 'il-mio-plugin', 'source' => 'https://percorso.plugin.org/', 'required' => true, 'external_url' => 'https://github.com/plugin/' //Link di ritorno ), ); $config = array( 'id' => 'sam-tgmpa', // Specifica un ID univoco per evitare problemi con altre istanze di TGMPA 'default_path' => '', // Il percorso di default dove trovare i plugin caricati con il tema. 'menu' => 'tgmpa-install-plugins', // Fornisci uno slug per la pagina opzioni. 'parent_slug' => 'themes.php', // Definisci il genitore della pagina opzioni nel menu. 'capability' => 'edit_theme_options', // Specifica la capability necessaria per consultare la pagina opzioni 'has_notices' => true, // Scegli se mostrare o meno le notice. 'dismissable' => true, // Se impostato a false, l'utente non potrà chiudere la notice. 'dismiss_msg' => '', // Se 'dismissable' è false, questo messaggio verrà mostrato in alto. 'is_automatic' => false, // Scegli se attivare automaticamente i plugin installati 'message' => '', // Messaggio da mostrare prima della tabella dei plugin. //Tutta la traduzione delle stringhe è facoltativa, puoi anche rimuovere tutto il codice qua sotto 'strings' => array( 'page_title' => __( 'Install Required Plugins', 'theme-slug' ), 'menu_title' => __( 'Install Plugins', 'theme-slug' ), 'installing' => __( 'Installing Plugin: %s', 'theme-slug' ), 'updating' => __( 'Updating Plugin: %s', 'theme-slug' ), 'oops' => __( 'Something went wrong with the plugin API.', 'theme-slug' ), 'notice_can_install_required' => _n_noop( 'This theme requires the following plugin: %1$s.', 'This theme requires the following plugins: %1$s.', 'theme-slug' ), 'notice_can_install_recommended' => _n_noop( 'This theme recommends the following plugin: %1$s.', 'This theme recommends the following plugins: %1$s.', 'theme-slug' ), 'notice_ask_to_update' => _n_noop( 'The following plugin needs to be updated to its latest version to ensure maximum compatibility with this theme: %1$s.', 'The following plugins need to be updated to their latest version to ensure maximum compatibility with this theme: %1$s.', 'theme-slug' ), 'notice_ask_to_update_maybe' => _n_noop( 'There is an update available for: %1$s.', 'There are updates available for the following plugins: %1$s.', 'theme-slug' ), 'notice_can_activate_required' => _n_noop( 'The following required plugin is currently inactive: %1$s.', 'The following required plugins are currently inactive: %1$s.', 'theme-slug' ), 'notice_can_activate_recommended' => _n_noop( 'The following recommended plugin is currently inactive: %1$s.', 'The following recommended plugins are currently inactive: %1$s.', 'theme-slug' ), 'install_link' => _n_noop( 'Begin installing plugin', 'Begin installing plugins', 'theme-slug' ), 'update_link' => _n_noop( 'Begin updating plugin', 'Begin updating plugins', 'theme-slug' ), 'activate_link' => _n_noop( 'Begin activating plugin', 'Begin activating plugins', 'theme-slug' ), 'plugin_activated' => __( 'Plugin activated successfully.', 'theme-slug' ), 'activated_successfully' => __( 'The following plugin was activated successfully:', 'theme-slug' ), 'plugin_already_active' => __( 'No action taken. Plugin %1$s was already active.', 'theme-slug' ), 'plugin_needs_higher_version' => __( 'Plugin not activated. A higher version of %s is needed for this theme. Please update the plugin.', 'theme-slug' ), 'complete' => __( 'All plugins installed and activated successfully. %1$s', 'theme-slug' ), 'dismiss' => __( 'Dismiss this notice', 'theme-slug' ), 'notice_cannot_install_activate' => __( 'There are one or more required or recommended plugins to install, update or activate.', 'theme-slug' ), 'contact_admin' => __( 'Please contact the administrator of this site for help.', 'theme-slug' ), 'nag_type' => 'notice-warning', // Determines admin notice type - can only be one of the typical WP notice classes, such as 'updated', 'update-nag', 'notice-warning', 'notice-info' or 'error'. Some of which may not work as expected in older WP versions. ), ); //Attivo la richiesta di plugin e la personalizzazione della UI tgmpa( $plugins, $config ); }
Sembra tanto codice non è vero? Eppure se vuoi soltanto richiedere i plugin e non ti interessa inserire dei messaggi personalizzati per i tuoi clienti non devi far altro che rimuovere tutte le strings
dichiarate all’interno dell’array $config
e risparmierai decine di righe.
Testa se tutto funziona correttamente
Ebbene siamo arrivati alla prova del nove, tutto quello che ti resta da fare è attivare il tema al quale hai applicato queste modifiche, che nel nostro esempio viene rappresentato dal tema _s
, e vedere se tutto funziona correttamente.

L’hai fatto? Hai attivato il tuo tema ed ottenuto un messaggio come quello rappresentato nella figura precedente?
Se stai sorridendo e squotendo verticalmente la testa significa che tutto è andato a buon fine e puoi tornare a dedicarti allo sviluppo del tema, se invece hai incontrato qualche problema non esitare a contattarmi. Puoi sfruttare i commenti che trovi qua sotto oppure utilizzare la pagina contatti, la scelta è tua.
Conclusioni
In questo articolo ti ho voluto presentare la classe TGM Plugin Activation perché ritengo che ti sarà di grande aiuto, sopratutto ora che anche marketplace come ThemeForest si sono (finalmente) decisi a controllare il codice presente all’interno dei temi e stanno puntando a temi più puliti.
Questa è una soluzione ottimale perché non ti costringerà a dover sviluppare da solo le funzionalità coinvolte ma soprattutto perché ti permetterà di dedicarti interamente alla creazione del tema!
Spero veramente che questo articolo sia stato di tuo gradimento e che ti possa aiutare nel tuo lavoro. Se vuoi condividerlo con i tuoi contatti mi aiuterai moltissimo a crescere e a presentare questo nuovo contenuto, ma se invece vuoi approfondire le tue conoscenze di sviluppo ricorda che qua su SkillsAndMore pubblichiamo sempre nuovi corsi che vogliono aiutarti ad approfondire le tue conoscenze e a implementarle nel tuo lavoro.
Ciao Andrea, come prima cosa ti faccio i miei complimenti per questo grande articolo, come sempre al Top! Detto questo volevo chiederti: La libreria TGM è possibile includerla anche in un Child Theme? Immagino di si, che sia lo stesso procedimento, con la creazione di un cartella contenente il file zip, e l’inclusione nel function.php, o sbaglio?
Ciao Fabio,
certo che puoi usare la libreria anche per i tuoi temi child. Onestamente non ho mai fatto delle prove dal vivo ma questo file presente all’interno dello starter theme di Genesis, ovvero di un child theme, mi fa ben sperare 😀
Spero di averti risolto il problema e comunque fai molta attenzione quando si tratta del file
.zip
perché ti devi assicurare che il percorso faccia riferimento alla cartella del tuo child piuttosto che del tema parente. Potresti impostare il percorso con questa stringa:'source' => get_template_directory_uri() . '/lib/plugins/some-plugin.zip',
A presto e non esitare a rispondere per qualsiasi dubbio,
Andrea