Come costruire un plugin WordPress per identificare vecchi messaggi

Durante la lettura di articoli su siti Web, ho scoperto che quando un post ha più di quattro anni, una notifica che informa che il post è vecchio viene visualizzata su determinati siti web. Una notifica simile si trova anche nella directory dei plugin di WordPress quando un plugin non è stato aggiornato in oltre due anni.

In questo articolo, costruiremo un plug-in che visualizza una notifica simile quando un post è finito X-anni vecchio dove "X"un numero intero che indica il numero di anni che definisce vecchio.
Il plug-in ti fornirà la possibilità di specificare la tua frase di notifica personalizzata e il numero di anni prima che un post sia considerato vecchio.

Questo plugin sarà costruito utilizzando la programmazione orientata agli oggetti nel tentativo di rendere il codice più organizzato e aderire al principio DRY. Come tale, è necessaria una certa esperienza con la programmazione orientata agli oggetti per comprendere questo tutorial.

Pianificazione del plugin

Il plugin sarà composto da due protetta proprietà di classe e dieci metodi. Le proprietà sono descritte di seguito.

  • $ _notification memorizza il messaggio di notifica recuperato dal database precedentemente impostato dall'utente del plugin.
  • $ _Annimemorizza il numero di anni recuperati dal database.

Spiegherò il ruolo di ciascun metodo (noto come funzioni nella programmazione procedurale) e il loro rispettivo codice durante il viaggio.

Coding the Plugin

Innanzitutto, includiamo l'intestazione del plugin, crea il classe e definire le proprietà:


Durante la scrittura di plugin WordPress in OOP, tutti i hook di azione e filtro possono essere impostati nel costruttore (che viene chiamato __costruire). Il metodo di costruzione del nostro plugin comprende cinque funzioni: tre hook di azione, un hook di filtro e un register_activation_hook funzione.

function __construct () // Inizializza le opzioni di impostazione sull'attivazione register_activation_hook (__FILE__, array ($ this, 'aop_settings_default_values')); // registra Menu add_action ('admin_menu', array ($ this, 'aop_settings_menu')); // hook plugin section e field a admin_init add_action ('admin_init', array ($ this, 'pluginOption')); // aggiungi il foglio di stile del plugin all'intestazione add_action ('wp_head', array ($ this, 'stylesheet')); // mostra la notifica sopra il post add_filter ('the_content', array ($ this, 'displayNotification')); 
  • Il register_activation_hook chiama il metodo per impostare le impostazioni predefinite del plugin all'attivazione.
  • I prossimi tre add_action le funzioni richiamano le funzioni di hook per registrare il menu del plugin, agganciare la sezione plugin e il campo a admin_init e aggiungi rispettivamente il foglio di stile del plugin all'intestazione.
  • Il add_filter chiama il displayNotification metodo che visualizza la notifica quando un post è vecchio.

Guardando il __costruire metodo sopra, il register_activation_hook la funzione chiama il aop_settings_default_values metodo per impostare le impostazioni del plug-in predefinito.

public function aop_settings_default_values ​​() $ aop_plugin_options = array ('notification' => 'Questo post non è stato aggiornato in oltre 2 anni.', 'years' => 2); update_option ('apo_alert_old_post', $ aop_plugin_options); 

Il aop_settings_menu metodo crea il sottomenu del plugin sotto l'esistente impostazioni menu.

funzione pubblica aop_settings_menu () add_options_page ('Alert Post is Old', 'Alert Post is Old', 'manage_options', 'aop-alert-post-old', array ($ this, 'alert_post_old_function')); 

Il terzo argomento è passato al add_options_page la funzione sopra è il alert_post_old_function metodo che mostra il contenuto della pagina delle impostazioni del plugin.

funzione pubblica alert_post_old_function () echo '
'; screen_icon (); eco '

Alert Post è vecchio

'; eco '
'; do_settings_sections ( 'AOP-alert-post-vecchio'); settings_fields ( 'aop_settings_group'); submit_button ();

Per aggiungere le impostazioni del plugin, utilizzeremo l'API delle impostazioni di WordPress per aggiungere i moduli delle impostazioni.

In primo luogo, definiamo la sezione, aggiungiamo i campi delle impostazioni e infine registriamo le impostazioni. Tutto questo sarà fatto nel pluginOption metodo che è stato agganciato al admin_init azione precedente nel __costruire metodo.

public function pluginOption () add_settings_section ('aop_settings_section', 'Opzioni plugin', null, 'aop-alert-post-old'); add_settings_field ('notifica', '', array ($ this,' aop_notification '),' aop-alert-post-old ',' aop_settings_section '); add_settings_field ('years', '', array ($ this,' aop_years '),' aop-alert-post-old ',' aop_settings_section '); register_setting ('aop_settings_group', 'apo_alert_old_post'); 

Il metodo di callback del campo impostazioni: aop_notificationaop_years che il riempimento riempie il campo con gli input del modulo desiderati sono i seguenti.

funzione pubblica aop_notification () $ this-> databaseValues ​​(); eco ''; 
funzione pubblica aop_years () $ this-> databaseValues ​​(); eco '';

Riceverà la notifica del plug-in e le impostazioni dell'anno e le memorizzeremo nelle due proprietà protette: $ _notification$ _Anni perché saranno utili quando vogliamo determinare se un post ha superato l'età impostata e quando visualizza il messaggio di notifica.

public function databaseValues ​​() $ options = get_option ('apo_alert_old_post'); $ this -> _ notification = $ options ['notification']; $ this -> _ years = $ options ['years']; 

Il codice CSS utilizzato nello stile della notifica sarà nel foglio di stile metodo.

stylesheet di stile public () echo <<   HTML; 

Infine, la funzione che visualizza la notifica sopra il contenuto del post considerato vecchio è la seguente:

display di funzione pubblicaNotification ($ content) global $ post; $ This-> databaseValues ​​(); // ottiene le impostazioni anno $ setYear = $ this -> _ years; // ottiene il testo di notifica $ notification = $ this -> _ notification; // calcola post age $ year = date ('Y') - get_post_time ('Y', true, $ post-> ID); // mostra la notifica solo sul post se (is_single ()): if ($ year> $ setYear) echo '
'; eco ' ! '; eco "$ notifica"; eco '
'; finisci se; restituire $ content;

Parliamo del codice qui sopra: in primo luogo, recuperiamo il numero di anni che determinano quando un post è vecchio, sottratto l'anno in cui il post è stato scritto dall'anno corrente. Se il risultato è maggiore dell'anno che definisce vecchio, viene visualizzata la notifica che il post è vecchio.

Finalmente, abbiamo terminato la codifica della classe del plugin. Per far funzionare la classe, dobbiamo istanziarla in questo modo:

nuovo AlertOldPost;

Conclusione

In questo articolo, abbiamo imparato come calcolare l'età di un post, visualizzare una notifica quando un post è considerato vecchio e lo ha fatto utilizzando le pratiche di programmazione orientate agli oggetti.

Vi esorto a rivedere il codice per ottenere una conoscenza approfondita di come funziona. Le vostre domande, commenti e contributi sono benvenuti.