Cum se construiește un plug-in WordPress pentru a identifica mesaje vechi

În timp ce citesc articole pe site-uri web, am constatat că atunci când o postare are peste patru ani, o notificare care afirmă că postul este veche este afișată pe anumite site-uri web. O notificare similară se găsește și în directorul plugin WordPress atunci când un plugin nu a fost actualizat în peste doi ani.

În acest articol, vom construi un plugin care afișează o notificare similară la încheierea unui post X-ani vechi unde "X"un număr întreg care denotă numărul de ani care definesc vechiul.
Pluginul vă va oferi opțiunea de a specifica propria propoziție de notificare personalizată și numărul de ani înainte ca o postare să fie considerată veche.

Acest plugin va fi construit folosind programe orientate pe obiecte, în încercarea de a face codul mai organizat și de a respecta principiul DRY. Ca atare, este nevoie de o anumită experiență cu programarea orientată pe obiecte, dacă trebuie să înțelegeți acest tutorial.

Planificarea pluginului

Pluginul va consta din două protejat proprietăți de clasă și zece metode. Proprietățile sunt descrise mai jos.

  • $ _notification stochează mesajul de notificare preluat din baza de date stabilită anterior de utilizatorul pluginului.
  • $ _yearsstochează numărul de ani extrași din baza de date.

Voi explica rolul fiecărei metode (cunoscute ca și funcții în programarea procedurală) și codul lor în timp ce călătorim.

Codificarea pluginului

Mai întâi, să includeți antetul pluginului, să creați clasă și defini proprietățile:


Când scrieți pluginurile WordPress în OOP, toate acțiunile și cârligele de filtrare pot fi setate în constructor (care este numit __construi). Metoda constructorului plugin-ului nostru va consta în cinci funcții: trei cârlige de acțiune, un cârlig de filtrare și un a register_activation_hook funcţie.

funcția __construct () // Inițializarea opțiunilor de setare la activare register_activation_hook (__FILE__, array ($ this, 'aop_settings_default_values')); // înregistrați meniul add_action ('admin_menu', array ($ this, 'aop_settings_menu')); / / hook plugin și secțiunea pentru admin_init add_action ('admin_init', array ($ this, 'pluginOption')); // adăugați foaia de stil pentru plugin-uri la header add_action ('wp_head', array ($ this, 'stylesheet')); // afișați notificarea deasupra postului add_filter ('the_content', array ($ this, 'displayNotification')); 
  •  register_activation_hook apelează metoda pentru a seta setările prestabilite ale pluginului la activare.
  • Următoarele trei ADD_ACTION funcții apel funcțiile de cârlig pentru a înregistra meniul plugin-ului, cârlig de secțiune plugin și câmp la admin_init și adăugați foaia de stil a plugin-ului respectiv la antet.
  • add_filter suna displayNotification care afișează notificarea atunci când o postare este veche.

Privind la __construi metoda de mai sus, register_activation_hook funcția solicită aop_settings_default_values pentru a seta setările implicite pentru plugin.

funcția publică aop_settings_default_values ​​() $ aop_plugin_options = array ('notification' => 'Acest post nu a fost actualizat în mai mult de 2 ani.', 'years' => 2); update_option ('apo_alert_old_post', $ aop_plugin_options); 

 aop_settings_menu metoda creează submeniul de plugin sub existența Setări meniul.

funcția publică 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')); 

Al treilea argument a fost transmis add_options_page funcția de mai sus este alert_post_old_function care afișează conținutul paginii din setările pluginului.

funcția publică alert_post_old_function () echo '
„; screen_icon (); echo "

Mesajul de avertizare este vechi

„; echo "
„; do_settings_sections ( 'AOP-alertă post-vechi'); settings_fields ( 'aop_settings_group'); buton de trimitere();

Pentru a adăuga setările pluginului, vom folosi API-ul pentru setări WordPress pentru a adăuga formularele de setări.

În primul rând, definim secțiunea, adăugăm câmpurile de setări și, în final, înregistrăm setările. Toate acestea se vor face în pluginOption metodă care a fost dependentă de admin_init acțiune mai devreme în __construi metodă.

funcția publică opțiuneOption () add_settings_section ('aop_settings_section', 'Opțiuni plugin', null, 'aop-alert-post-old'); add_settings_field ("notificare", "', array ($ this,' aop_notification '),' aop-alert-post-old ',' aop_settings_section '); add_settings_field ('ani', '', array ($ this,' aop_years '),' aop-alert-post-old ',' aop_settings_section '); register_setting ('aop_settings_group', 'apo_alert_old_post'); 

Metoda de retur în câmpul de setări: aop_notification și aop_years care umple câmpul cu intrările de formă dorite sunt după cum urmează.

funcția publică aop_notification () $ this-> databaseValues ​​(); echo "„; 
funcția publică aop_years () $ this-> databaseValues ​​(); echo " .oldPost padding-top: 8px; padding-bottom: 8px; fundal-culoare: # FEEFB3; culoare: # 9F6000; frontieră: 1px solid; padding: 4px 12px 8px; margin-bottom: 20px; raza de graniță: 6px;  span.oldPost background-color: # 9F6000; culoare: #fff; umplutura: 1px 10px 0px; border-radius: 20px; font-size: 18px; font-weight: bold; font-familie: Verdana; plutește la stânga; margine: 0px 8px 0px 0px;  span.oldtext padding-top: 0px; culoare: # 9F6000;    HTML; 

În cele din urmă, funcția care afișează notificarea deasupra conținutului post care a fost considerat vechi este după cum urmează:

funcția publicăNotificare (conținut $) global $ post; $ This-> databaseValues ​​(); // obțineți setările anul $ setYear = $ this -> _ years; // primi text de notificare $ notification = $ this -> _ notification; // calculați vârsta postului $ year = date ('Y') - get_post_time ('Y', true, $ post-> ID); // afișați notificarea numai la post dacă (is_single ()): if ($ year> $ setYear) echo '
„; echo " ! „; ecou "notificare $"echo"
„; endif; returnați conținut $;

Să vorbim prin codul de mai sus: În primul rând, recuperăm numărul de ani care determină când un post este vechi, scăzând anul în care postul a fost scris din anul în curs. Dacă rezultatul este mai mare decât anul care definește vechiul, se afișează notificarea că postul este vechi.

În cele din urmă, am terminat codarea clasei pluginului. Pentru a pune clasa la lucru, trebuie să o instanțiăm astfel:

noul AlertOldPost;

Concluzie

În acest articol, am învățat cum să calculați vârsta unui post, să afișați o notificare atunci când o postare este considerată veche și a făcut acest lucru folosind practici de programare orientate pe obiecte.

Vă îndemn să revizuiți codul pentru a obține o cunoaștere aprofundată a modului în care funcționează. Întrebările, comentariile și contribuțiile dvs. sunt binevenite.

Cod