Come visualizzare i metadati dei post su un post WordPress

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.

Ramificazioni di estensione del plugin

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.

Uno sguardo ai dati

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_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.

Qual è il problema?

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.

Ma stiamo andando ad estendere il plugin?

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.

Estensione di Meta Manager a post singolo

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:

  1. Useremo il tema di venticinque predefinito come base per il nostro esempio.
  2. Introdurremo una directory pubblica che verrà utilizzata per visualizzare le informazioni sul pubblico lato del blog in particolare nel contesto dei singoli post.
  3. Definiremo gli hook che ci consentiranno di aggiungere informazioni al contenuto del post in modo che i metadati dei post possano essere visualizzati nella parte inferiore del contenuto. Per questo utilizzeremo una tabella rudimentale che erediterà gli stili dal tema corrente. Nota che in questo modo potresti finire con alcuni stili veramente puliti e potresti avere alcuni stili davvero deboli. Questi saranno per te da implementare da soli.
  4. Approfitteremo quindi del modello che abbiamo creato nella versione iniziale del plug-in per assicurarci di recuperare i metadati del post per il post specificato per visualizzarlo sul front-end.

Niente di troppo complicato, giusto? Dobbiamo solo essere precisi nei nostri passi. Quindi iniziamo.

Presenta la Directory pubblica

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 è 

  • introdurre a pubblico elenco
  • Aggiungi il Single_Post_Meta_Manager_Public classe
  • includi la classe nel file del plugin principale

Dopo 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:

Sommario

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:

  • Sfruttare il codice esistente è una cosa potente
  • L'esposizione di dati irrilevanti per gli utenti è un'idea pericolosa

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!