Mantenere le funzionalità separate dalla presentazione è una best practice per lo sviluppo del tema WordPress. In questo post imparerai come fare proprio questo, fornendo agli utenti un plug-in pacchettizzato unico per i tuoi temi.
Abbiamo venduto temi WordPress su ThemeForest per oltre quattro anni, e durante questo periodo abbiamo imparato molte cose che ci hanno aiutato ad avere successo nel mercato. Uno degli aspetti chiave del successo dello sviluppo del tema è "corretta logica di sviluppo del tema".
Il vantaggio principale di separare la logica di sviluppo è la velocità di produzione: più velocemente è possibile creare temi di qualità, maggiore è il reddito che si può generare. Mantenere funzionalità in un plugin separato è anche utile quando si tratta di aggiornamenti. Immagina di avere dieci temi su ThemeForest e di aggiungere nuove funzionalità come aggiornamento. Avere tutte le funzionalità in un singolo plug-in significa che è necessario aggiornarlo una volta sola, altrimenti anche un piccolo aggiornamento diventa lento e potenzialmente doloroso.
Quindi, se vuoi creare temi potenti e guadagnare più soldi facendo ciò, rispetta il plugin e il sistema di temi di WordPress.
Che tipo di funzionalità può contenere un tema premium? Che tipo di cose dovremmo inserire in un plug-in separato? Ecco un elenco di componenti chiave che in genere teniamo separati dai file del tema:
In questo post non descriveremo dettagliatamente come creare i componenti stessi, ma spiegheremo come comprimerli tutti in un unico plugin per i componenti aggiuntivi.
Vai al tuo wp-content> plugin e crea una cartella vuota con il nome del tuo plug-in compresso. Ti consigliamo di usare un nome che si spiega da sé. Ad esempio, il nostro plugin per i componenti aggiuntivi è chiamato "ninzio-addons" (Ninzio è il nome della nostra azienda).
Importante: non utilizzare un carattere di sottolineatura nel nome della cartella! Usa un trattino se necessario.
Quindi, in quella cartella di plugin, crea un file php con lo stesso nome della tua cartella. Nel nostro esempio sarebbe "ninzio-addons.php". Di nuovo, nessun trattino basso per favore. Apri quel file e aggiungi il seguente commento dell'intestazione DocBlock:
/ ** * Nome plugin: il tuo nome plugin * Plugin URI: il tuo plugin url * Text Dominio: text-domain * Percorso del dominio: / languages / * Descrizione: Breve descrizione del plugin * Autore: Nome dell'autore * Versione: 1.0.0 * URI autore: autore uri * /
Esaminiamo i dettagli che abbiamo aggiunto qui:
Ora, dopo aver creato la nostra cartella plug-in dei componenti aggiuntivi e il file principale, è tempo di configurare il nostro plug-in.
Nel file del plugin principale, dopo il commento dell'intestazione, incolla questo snippet:
se (! defined ('ABSPATH')) exit; // Esci se si accede direttamente
Questo è per motivi di sicurezza; blocca l'accesso diretto al file del plugin.
Subito dopo, aggiungi questo codice:
function your_addons_load_plugin_textdomain () load_plugin_textdomain ('ninzio-addons', false, dirname (plugin_basename (__ FILE__)). '/ languages /'); add_action ('plugins_loaded', 'your_addons_load_plugin_textdomain');
Qui carichiamo il nostro plugin textdomain: assicurati che il nome della funzione sia corretto. La nostra raccomandazione per le funzioni di denominazione consiste nell'utilizzare nomi auto-descrittivi con un prefisso del proprio plugin. Per esempio ninzio_addons
. E poiché questa è una funzione PHP, possiamo usare caratteri di sottolineatura anziché trattini.
Assicurati di essere preciso durante la copia o la digitazione della funzione load_plugin_textdomain. Per il parametro domain inserisci il textdomain esatto che abbiamo definito in precedenza. E per il parametro relativo al percorso del plugin inserisci il percorso della cartella delle lingue che abbiamo creato in precedenza.
Definiamo ora il nostro percorso di directory dei plugin; aggiungi questo codice:
define ('your_addons', plugin_dir_path (__FILE__));
Qui stiamo usando your_addons
come percorso di directory del plugin. Fin qui tutto bene; abbiamo creato il nostro plugin, ora è il momento di riempirlo con funzionalità personalizzate.
Non useremo questo passaggio per spiegare come creare un pannello opzioni per un tema, puoi crearne uno personalizzato o fare come facciamo noi; utilizzare un framework di pannelli opzionali per il tema standard. Se sei nuovo nel framework dei pannelli opzionali, ti consigliamo di leggere gli articoli di Bonang Salemane sull'integrazione dei temi di Redux Framework:
Per aggiungere un pannello delle opzioni del tema ai tuoi add-on, copia la cartella del pannello delle opzioni, nella sua interezza, nella cartella del plugin dei componenti aggiuntivi. Ora abbiamo bisogno di diversi file per attivarlo:
if (! class_exists ('ReduxFramework') && file_exists (your_addons. '/optionpanel/framework.php')) require_once ('optionpanel / framework.php'); if (! isset ($ redux_demo) && file_exists (your_addons. '/optionpanel/config.php')) require_once ('optionpanel / config.php');
In questo frammento di codice abbiamo richiesto i due file principali di reduxframework: il file framework.php che gestisce la funzionalità del pannello delle opzioni e il file di configurazione, php, responsabile delle configurazioni del pannello delle opzioni. I nostri file di pannello delle opzioni si trovano in una cartella "optionpanel" posta all'interno della cartella dei plugin di ninzio-addons. Fatto.
È ora di includere alcune funzioni personalizzate. Crea un file all'interno della tua cartella plug-in dei componenti aggiuntivi e chiamalo qualcosa come "addons-functons.php". Metti tutte le tue funzioni personalizzate all'interno di questo file.
Una cosa da osservare è che si utilizzano convenzioni di denominazione delle funzioni appropriate. Utilizzare i nomi di funzioni descrittive con un prefisso univoco. Per esempio:
function your_addons_profile_social_links () ...
Subito dopo i file del framework del tema, richiedi il tuo file delle funzioni personalizzate:
require_once ('includes / addons-functions.php');
E ora, includi alcuni widget personalizzati. Crea una cartella con il nome "widget" nella cartella del plugin dei componenti aggiuntivi, inserisci tutti i file dei widget personalizzati all'interno di quella cartella. La denominazione dei file di widget personalizzati non è critica qui, ma si consiglia di utilizzare prefissi e trattini, non caratteri di sottolineatura.
Ad esempio, il nostro file widget Twitter personalizzato si chiama "ninzio-recent-tweets.php". Allo stesso modo, il nostro widget Mailchimp si chiama "ninzio-mailchimp.php". Includiamoli in questo modo:
require_once ('widgets / ninzio-recent-tweets.php'); require_once ('widgets / ninzio-mailchimp.php');
Ancora una volta, non copriremo il processo di creazione dei veri widget personalizzati; per questo, controlla il post di Bonang Salemane:
Se vuoi aggiungere un portfolio, o eventi, o qualcosa di simile ai normali post di WordPress ma devi separarli dal tema, dovresti usare i tipi di post personalizzati. Tutti i nostri temi hanno tipi di post personalizzati inclusi. La creazione di tipi di post personalizzati può essere complessa, quindi ancora una volta non rientra nell'ambito di questo tutorial, ma ti consiglio di leggere Tom McFarlin:
Per i tipi di post personalizzati dovresti creare una cartella separata all'interno del tuo plugin per i componenti aggiuntivi, ad esempio "progetti ninzio". E all'interno di quella cartella posiziona tutti i tuoi file che si riferiscono ai tuoi tipi di post personalizzati. I file più importanti qui sono i file principali che creano i tipi di post personalizzati, il singolo file di post e il file di loop / archivio. Assegna un nome al file principale del tipo di post personalizzato come hai chiamato la cartella del tipo di post personalizzata, ad esempio "ninzio-projects.php". Inserisci il tuo codice del tipo di post personalizzato all'interno di quel file, quindi per attivare il tuo tipo di post personalizzato dovrai richiedere il file principale:
require_once ('ninzio-projects / ninzio-projects.php');
Quando si separano le funzionalità in questo modo, è necessario considerare sempre i propri client, in modo più preciso, in che modo possono estendere / riscrivere i file modello di tipo di post personalizzati (archivio e singolo). Supponiamo che il nostro nome del tipo di post personalizzato sia "progetti". Il singolo file di tipo personalizzato dovrebbe essere chiamato "single-projects.php" e il file loop / archive dovrebbe essere chiamato "archive-projects.php".
E se il tuo tipo di post personalizzato ha anche tassonomie personalizzate dovresti creare un file separato anche per loro. Chiamiamo il nostro file di tassonomia "taxonomy-projects.php". Quindi ora abbiamo tre file:
progetti singoli.php archive-projects.php taxonomy-projects.php
Facciamoli riscrivibili. Aggiungi queste tre funzioni al tuo file dei componenti aggiuntivi principale:
function your_addons_projects_single_template ($ single_template) global $ post; if ($ post-> post_type == 'projects') if ($ theme_file = locate_template (array ('single-projects.php'))) $ single_template = $ theme_file; else $ single_template = your_addons. 'Progetti / single-projects.php'; return $ single_template; add_filter ("single_template", "your_addons_projects_single_template", 20);
function your_addons_projects_archive_template ($ archive_template) global $ post; if ($ post-> post_type == 'projects') if ($ theme_file = locate_template (array ('archive-projects.php'))) $ archive_template = $ theme_file; else $ archive_template = your_addons. 'Progetti / Archivio-projects.php'; restituisce $ archive_template; add_filter ("archive_template", "your_addons_projects_archive_template", 20);
function your_addons_projects_taxonomy_template ($ taxonomy_template) if (is_tax ('projects-category')) if ($ theme_file = locate_template (array ('taxonomy-projects.php'))) $ taxonomy_template = $ tema_file; else $ taxonomy_template = your_addons. 'Progetti / tassonomia-projects.php'; return $ taxonomy_template; add_filter ("taxonomy_template", "your_addons_projects_taxonomy_template", 20);
Cambia il nome di queste funzioni per avere il tuo prefisso univoco. La logica principale qui è caricare i file modello del tipo di post personalizzato dopo aver controllato se una copia di esso è presente nella cartella del tema. Quando il tuo cliente copia il modello di tipo di post personalizzato sul tema e lo estende o lo sovrascrive, il tuo plug-in addons caricherà la versione del file del tipo di post personalizzato del tuo cliente. Quindi in questa situazione i tuoi file principali all'interno del plug-in di addon non vengono modificati, sono semplicemente esteso dal tuo cliente. Eventuali futuri aggiornamenti del tuo plug-in addons non cancelleranno le modifiche personalizzate del tuo cliente.
Per script e stili personalizzati ti consigliamo di creare cartelle separate e di accodare i file come faresti nel file "functions.php" del tuo tema.
Se si intende aggiungere shortcode personalizzati, è necessario creare e includere il file shortcode nella cartella dei componenti aggiuntivi. Crea una cartella con il nome "shortcode" e all'interno di quella cartella crea il file "yourprefix-shortcodes.php" (nel nostro caso: "ninzio-shortcodes.php"). Nel file "-shortcodes.php" dovresti inserire tutto il tuo codice shortcode personalizzato.
Come avrete già capito, non useremo questo tutorial per coprire il processo di creazione di codici brevi personalizzati, ma vi consiglio di leggere il tutorial di Siddharth:
Includiamo il nostro file shortcode personalizzato:
require_once ('shortcode / ninzio-shortcodes.php');
Abbiamo quasi finito con il plug-in addons. Dopo aver testato tutte le funzionalità personalizzate, è giunto il momento di creare il file della lingua per rendere il plugin traducibile.
Vai al cartella plug-in addons> lingue. Usa il software PoEdit (PoEdit è un'applicazione gratuita, disponibile per Mac, Windows e Linux.) Per generare il file della lingua. Ancora una volta, sii molto preciso con la denominazione del file; i file risultanti dovrebbero essere nominati esattamente come la cartella dei plugin dei componenti aggiuntivi. Ad esempio, il nostro nome del plugin è "ninzio-addons", il file della lingua dovrebbe essere "ninzio-addons.pot". Questo è il file di lingua principale che contiene tutte le stringhe all'interno del tuo dominio di testo. Da questo file è possibile creare altri file di lingua.
Per tradurre il tuo file di lingua del plugin per i componenti aggiuntivi:
Ora il tuo plugin è pronto, ben fatto! Abbiamo rimosso tutte le funzionalità necessarie dai nostri file di presentazione e fornito un plug-in compresso che è possibile aggiornare su più temi.
Spero vi sia piaciuto seguirlo, non dimenticarlo, è possibile inserire l'esempio di plug-in addonati su Github e utilizzarlo come punto di partenza.