Vorrei avere alcune opinioni sulle migliori pratiche per lo sviluppo di plugin WordPress che forniscono l'integrazione dei temi.
Per avere un senso quando faccio questa domanda, vorrei iniziare con un ipotetico esempio di uno scenario di cui sono curioso. Immagina di creare un plugin chiamato "Discografia". La discografia registra tre tipi di post personalizzati: "Bande", "Album" e "Tracce". Il plug-in fornisce anche meta-box che forniscono dettagli per ciascun tipo di post, nonché tassonomie personalizzate per organizzare ogni tipo di post. Questi tipi di post sono associati al plug-in Posts 2 Posts . All'interno dell'amministratore, l'utente può aggiungere nuove bande, che possono essere associate agli album, che a loro volta sono associati alle tracce, a cui saranno aggiunti molti altri dati tramite meta box e tassonomie.
Ora, non voglio che questo plugin configuri semplicemente un amministratore per consentire agli utenti di inserire queste informazioni; Vorrei che fornisse alcuni display predefiniti per i dati. Un utente / sviluppatore più avanzato starebbe bene solo con questo amministratore. Sarebbe abbastanza facile per lei prendere quei dati e usarli nel tema; tuttavia, senza alcune visualizzazioni predefinite, questo plug-in sarebbe inutile per la maggior parte degli utenti. Per questo esempio, potresti visualizzare qualcosa di simile (le parentesi mostrano il modo in cui le informazioni potrebbero essere visualizzate in ordine gerarchico dei modelli):
- Bande (single-prefix-band.php, single.php, index.php, shortcode)
- Album (single-prefix-album.php, single.php, index.php, shortcode)
- Tracce (single-prefix-track.php, single.php, index.php, shortcode)
- Elenco di bande (template-band-list.php, page-band-listing.php, page- {id} .php, page.php, index.php, shortcode)
- Elenco album (template-album-list.php, page-album-listing.php, page- {id} .php, page.php, index.php, shortcode)
- Cronologia album (template-album-timeline.php, page-album-timeline.php, page- {id} .php, page.php, index.php, shortcode)
È importante che ci sia una presentazione predefinita per questi tipi di post in quanto i file modello predefiniti non visualizzerebbero tutte le informazioni necessarie per ciascuno dei tipi di post. Ad esempio, il tema Twenty Eleven, per impostazione predefinita, mostrerebbe semplicemente il nome, le categorie, la descrizione e la data di pubblicazione di un album. Non molto utile per un album. Vorrei fornire un unico modello di post che includa la band, la data di uscita, l'etichetta discografica, le versioni degli album, i brani, ecc. Come sviluppatore di plugin ritengo che sarebbe importante fornirlo. So che il modello non funzionerebbe per ogni tema, ma ci dovrebbero essere alcuni valori predefiniti che possono essere ulteriormente integrati con il tema dell'utente.
Ancora una volta, sono curioso di sapere qual è il modo migliore per gestire questa situazione? Penso che potresti fare una delle seguenti cose.
Shortcodes
Gli shortcode potrebbero essere utilizzati come un modo molto flessibile e intuitivo per consentire ai non sviluppatori di aggiungere una band, album, tracce, elenchi di band, ecc. Ovunque nel sito. Sarebbe utile per presentare bande su pagine specifiche o creare pagine separate per ogni banda (non molto efficiente, ma alcuni utenti affrontano le cose in questo modo). Lo shortcode genererebbe HTML, che sarebbe legato a un file CSS fornito che fornirebbe una bella vista predefinita dei dati desiderati. Tutto sarebbe contenuto nei file dei plugin e nulla dovrebbe essere fatto con il tema.
File modello
Il plug-in potrebbe anche essere fornito con file modello. I file modello possono essere contrassegnati e disegnati per una bella vista predefinita. È possibile fornire istruzioni all'utente per spostare i file nella cartella del tema in modo che il tema trovi i modelli giusti quando vengono visualizzati i tipi di post. Potresti persino arrivare a fornire un'interfaccia per consentire all'utente di spostare i file con un solo clic (nota: non creerei i file nella cartella dei temi dell'utente all'attivazione perché l'aggiunta di file al loro tema senza che li inizino è male) .
Puoi anche usare i filtri per utilizzare questi file senza spostarli dalla cartella del plugin, mantenendo tutto autonomo. Ho visto i filtri "template_include" e "{$ type} _template" usati a questo scopo. In effetti, è possibile utilizzare i modelli dalla cartella dei temi e, se non sono presenti, è possibile ricorrere a questi filtri per fornire le visualizzazioni predefinite.
La domanda
Mi piace sapere quali altri pensano siano le migliori pratiche per queste situazioni, se le idee presentate sono problematiche in qualche modo e qualsiasi alternativa che non ho incluso.
Grazie!