Come creare un plugin per i pacchetti aggiuntivi per WordPress

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.

Logica di sviluppo del tema

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.

Tipi di funzionalità

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:

  • Pannello delle opzioni del tema
  • Pagina / Posta campi personalizzati estesi
  • Widget personalizzati
  • Shortcode personalizzati
  • Tipi di messaggi personalizzati
  • Funzioni extra personalizzate

In questo post non descriveremo dettagliatamente come creare i componenti stessi, ma spiegheremo come comprimerli tutti in un unico plugin per i componenti aggiuntivi. 

Cominciamo

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: 

  • Nome del plugin: questo dovrebbe essere breve e descrittivo. 
  • Plugin URI: puoi incollare qui il tuo indirizzo web. 
  • Text Domain: questo è un parametro molto importante. Dovresti nominarlo allo stesso modo della cartella dei plugin e del file principale. Con il dominio di testo tu e i tuoi utenti potete tradurre stringhe di plugin. Più avanti vedremo come tradurre un plug-in addon compresso (lo troviamo molto importante per i nostri clienti). 
  • Percorso del dominio: questo parametro è anche molto importante per la traduzione dei plugin. Il percorso del dominio è relativo alla cartella del file di lingua. Vai alla cartella del tuo plug-in addons e crea una cartella vuota con il nome "languages". Per ora lasciatelo vuoto; in seguito creeremo il file della lingua. 
  • Tutti gli altri parametri "Autore", "Versione", "URI autore" sono ragionevolmente auto-esplicativi.

Ora, dopo aver creato la nostra cartella plug-in dei componenti aggiuntivi e il file principale, è tempo di configurare il nostro plug-in.

Configurazione

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.

Percorso della directory dei plugin

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.

Pannello Opzioni tema

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:

  • Iniziare con Redux Framework: presentarlo e integrarlo nel tuo tema

    I temi WordPress più ben progettati consentono agli amministratori del sito di modificare alcuni aspetti del tema attraverso una pagina delle opzioni. Il processo di creazione di una pagina di opzioni ...
    Bonang Salemane
    WordPress

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.

Funzioni personalizzate

È 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');

Widget personalizzati

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:

  • Creare i tuoi propri widget usando varie API di WordPress: Introduzione

    I widget sono un modo pulito per dare ai proprietari dei siti un certo controllo sull'aspetto (e talvolta sulla funzionalità) dei loro siti WordPress. In questa serie, stiamo andando ...
    Bonang Salemane
    Widget WordPress

Tipi di post personalizzati e tassonomie

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:

  • Suggerimento rapido: tipi di posta, tassonomie e permalink

    Tipi di post personalizzati e tassonomie sono due potenti funzionalità di WordPress. Sfortunatamente, possono avere la tendenza a causare problemi se gli sviluppatori non lo sono ...
    Tom McFarlin
    WordPress

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.

Script personalizzati, stili e codici brevi

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:

  • Shortcode WordPress: il modo giusto

    Uno dei motivi principali per cui WordPress è la piattaforma CMS più diffusa disponibile è il livello di personalizzazione che porta alla tavola. Oggi,…
    Siddharth
    Sviluppo del tema

Includiamo il nostro file shortcode personalizzato:

require_once ('shortcode / ninzio-shortcodes.php');

Le lingue

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:

  1. Avvia Poedit.
  2. A Poedit vai File> Nuovo dal file POT / PO ...
  3. Seleziona e apri il file pot dalla cartella lingue.
  4. Inserisci il tuo nome, indirizzo email, la tua lingua e il tuo paese (ad esempio francese fr_FR, tedesco de_DE).
  5. Clicca il Aggiornare pulsante nell'interfaccia utente principale di Poedit.
  6. Salva il file, denominato "nomefile-xx_XX.po" con "xx_XX" per la tua lingua e il tuo paese.
  7. Questo è tutto!

Conclusione

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.