Nella mia ultima serie di articoli, abbiamo esaminato i concetti di programmazione orientata agli oggetti dal punto di vista del principiante. L'obiettivo della serie era prendere coloro che non avevano familiarità con la programmazione orientata agli oggetti in PHP ed esplorare gli aspetti fondamentali del paradigma nel contesto di WordPress.
Se non hai avuto la possibilità di leggere la serie, puoi leggere un breve riassunto (insieme ai link a ciascun articolo della serie) nel post finale.
Durante il corso della serie, una delle cose che abbiamo fatto per dimostrare i principi orientati agli oggetti e alcune delle caratteristiche dell'API di WordPress è stata la creazione di un plugin.
Nello specifico, abbiamo creato un plug-in che ci ha permesso di visualizzare tutti i metadati del post associati a un determinato post all'interno del dashboard di WordPress.
Il plugin è disponibile per il download su GitHub in cui è anche possibile sfogliare il codice sorgente, visualizzare i commenti del codice e in generale vedere tutto ciò che è andato a creare il plugin quando lo abbiamo sviluppato.
Dato che quel particolare post è stato scritto, ho ricevuto una serie di domande diverse, una delle quali è stata la modalità con cui i dati visualizzati vengono visualizzati nella dashboard, ovvero i metadati del post, e visualizzati sul lato anteriore del Web posto.
In questo articolo, daremo un'occhiata all'estensione del plugin in modo tale che possiamo visualizzare i dati su una singola pagina di post. Parleremo di come fare questo dato il nostro codice esistente, come farlo e parleremo anche del perché questa potrebbe non essere una buona idea.
Quindi, detto questo, cominciamo.
Prima di saltare a pianificare come espandere effettivamente il plug-in, penso che valga la pena di discutere brevemente sul perché visualizzare questo tipo di informazioni sul frontend, sebbene possibile, potrebbe non essere una buona idea.
Ciò significa che ritengo che ciò spieghi come, nel trattare determinati tipi di dati, è importante considerare le implicazioni di ciò che si sceglie di fare quando si costruiscono prodotti per gli altri e come gestiamo i dati.
In breve, solo perché noi può fare qualcosa non significa che noi dovrebbero fallo.
Pensala in questo modo: i metadati associati a un determinato post sono archiviati nel database, alcuni in WordPress, alcuni in temi e altri in plug-in, i quali utilizzano tutte le informazioni per le loro esigenze specifiche.
Se dai un'occhiata all'immagine qui sopra, noterai che alcune righe sono identificate da chiavi precedute da un trattino basso. Ad esempio, abbiamo _edit_lock e _edit_last e poi alcuni valori numerici. Questo è un esempio di dati che WordPress usa per gestire internamente lo stato dei post.
Le altre chiavi che vedete hanno a che fare con i plug-in che ho installato nella mia installazione locale di WordPress e sono usate per dimostrare come altre utilità possono salvare i dati nella tabella dei metadati e quindi collegarli al post specificato.
Il problema con la visualizzazione di tutte queste informazioni sul front-end è che potresti mostrare troppe informazioni all'utente.
Nel caso precedente, non c'è nulla di particolarmente pericoloso o sensibile che possa aiutare a compromettere l'installazione, ma ciò non significa che sarà sempre così. Inoltre, c'è una possibilità significativa che si finisca per visualizzare le informazioni relative a un plugin o a un tema che non ha mai voluto mostrare le sue informazioni.
Inoltre, per molti - o per la maggior parte - persone che visitano un blog, vedere le informazioni visualizzate nella parte anteriore del blog sembrerà un rumore. È un gergo tecnico che non significherà nulla. Questo è il motivo per cui ritengo che mantenere queste informazioni relegate nel cruscotto sia il posto migliore per farlo.
In breve, sì, ma non perché penso che visualizzare questo tipo di informazione all'utente sia una buona idea, ma perché c'è un'applicazione pratica che si estende con l'estensione di un plug-in esistente, i vantaggi di sfruttare il codice esistente e vedere le ramificazioni negative di facendo così.
Quindi sì, a volte, le migliori lezioni possono venire dall'implementazione di idee che potrebbero non essere valide in retrospettiva.
Ma è ok. È così che impariamo, giusto?
Inoltre, ci sono ancora alcune lezioni pratiche che vengono con imparare come estendere un codice esistente.
Come con tutte le esercitazioni che condivido, cerco di pianificare esattamente che cosa ci stiamo impegnando a fare prima che lo facciamo in modo che non stiamo codificando attraverso un sacco di lavoro sulle ipotesi e in modo da avere un piano d'azione su come progettare la nostra soluzione.
Quindi, prima di andare oltre, se non riesci a rivedere il Single Post Meta Manager, per favore fallo ora e continueremo.
Una volta fatto, ecco cosa penseremo di fare:
pubblico
lato del blog in particolare nel contesto dei singoli post.Niente di troppo complicato, giusto? Dobbiamo solo essere precisi nei nostri passi. Quindi iniziamo.
Supponendo che tu abbia già attivato il venticinquesimo e che il plugin sia installato, iniziamo a lavorare sull'introduzione delle nostre funzionalità. La prima cosa che dobbiamo fare è
pubblico
elencoSingle_Post_Meta_Manager_Public
classeDopo aver aggiunto i file, quanto sopra può essere fatto dalle seguenti linee di codice al load_dependencies
funzione in includes / single-post-meta-manager.php
.
funzione privata load_dependencies () require_once plugin_dir_path (dirname (__FILE__)). 'Admin / classe-single-post-meta-manager-admin.php'; require_once plugin_dir_path (dirname (__FILE__)). '/ Public class-single-post-meta-manager-public.php'; require_once plugin_dir_path (__FILE__). 'Class-single-post-meta-manager-loader.php'; $ this-> loader = new Single_Post_Meta_Manager_Loader ();
Si noti che l'unica nuova linea è la seconda require_once
dichiarazione che importa il file di classe.
Dopodiché, definiamo le proprietà, il costruttore e i metodi per Single_Post_Meta_Manager_Public
classe:
versione = $ versione; / ** * Utilizza il partial situato nella directory admin per il rendering dei meta dati * post alla fine del contenuto del post. * * @param stringa $ contenuto Il contenuto del post. * @return string $ content Il contenuto del post inclusi i metadati dei post dati. * / public function display_post_meta_data ($ content) ob_start (); require_once plugin_dir_path (dirname (__FILE__)). 'Admin / parziali / single-post-meta-manager.php'; $ template = ob_get_contents (); $ content. = $ template; ob_end_clean (); restituire $ content;
Successivamente, dobbiamo creare i Meta Manager di Single Post define_public_hooks
funzione. Questo dovrebbe assomigliare a questo:
get_version ()); $ this-> loader-> add_action ('the_content', $ public, 'display_post_meta_data');
Successivamente, dobbiamo definire una chiamata a questa funzione all'interno del costruttore. Cioè, appena sotto il $ This-> define_admin_hooks ();
linea, aggiungere $ This-> define_public_hooks ();
chiamata.
Supponendo che tutto sia andato bene, dovresti essere in grado di attivare il plugin, caricare qualsiasi post e vedere gli stessi metadati ora visualizzati nella parte anteriore del post e nella dashboard del post:
Come accennato in precedenza in questo tutorial, la visualizzazione di questo tipo di informazioni sul front-end di un post non è necessariamente l'idea migliore; tuttavia, l'apprendimento di come aggiungere praticamente a un plug-in esistente introdurrà funzionalità completamente nuove e riutilizzerà anche alcuni dei componenti esistenti.
In definitiva, la chiave da asporto è due volte:
Quindi, dopo aver letto questo particolare tutorial, si noti che non sto necessariamente sostenendo di farlo in un ambiente a livello di produzione, ma più come uno strumento di apprendimento. Cioè, usalo a tuo rischio.
Come al solito, ti preghiamo di lasciare tutte le tue domande, commenti e altro nel feed qui sotto!