Hur man bygger ett WordPress-plugin för att identifiera gamla inlägg

När jag läste artiklar på webbplatser har jag funnit att när ett inlägg är över fyra år, visas en anmälan om att posten är gammal visas på vissa webbplatser. En liknande anmälan finns också i WordPress-plugin-katalogen när ett plugin inte har uppdaterats på över två år.

I den här artikeln kommer vi att bygga ett plugin som visar en liknande meddelande när ett inlägg är över X-år gammal där "X"ett heltal som anger antalet år som definierar gamla.
Pluggen ger dig möjlighet att ange din egen anpassade anmälningsdom och antalet år innan ett inlägg anses vara gammalt.

Denna plugin kommer att byggas med objektorienterad programmering i ett försök att göra koden mer organiserad och följa DRY-principen. Som sådan krävs viss erfarenhet av objektorienterad programmering om du ska förstå denna handledning.

Planerar plugin

Pluggen kommer att bestå av två skyddad klassegenskaper och tio metoder. Egenskaperna beskrivs nedan.

  • $ _notification lagrar meddelandemeddelandet som hämtats från databasen som tidigare fastställdes av plugin-användaren.
  • $ _yearslagrar antalet år som hämtats från databasen.

Jag kommer att förklara varje metods roll (känd som funktioner i procedurprogrammering) och deras respektive kod när vi reser.

Kodning av plugin

Låt oss först inkludera pluginhuvudet, skapa klass och definiera egenskaperna:


När du skriver WordPress-plugins i OOP kan alla åtgärds- och filterhakar ställas in i konstruktorn (som heter __konstruera). Vår plugins konstruktormetod kommer att bestå av fem funktioner: tre handtag krokar, en filter krok och a register_activation_hook fungera.

funktion __construct () // Initiera inställningsalternativen vid aktivering register_activation_hook (__FILE__, array ($ this, 'aop_settings_default_values')); // registrera menyn add_action ('admin_menu', array ($ this, 'aop_settings_menu')); // hook plugin avsnitt och fält till admin_init add_action ('admin_init', array ($ this, 'pluginOption')); // lägg till plugin stylesheet till header add_action ('wp_head', array ($ this, 'stylesheet')); // displaymeddelande ovanför post add_filter ('the_content', array ($ this, 'displayNotification')); 
  • De register_activation_hook anropar metoden för att ställa in standardinställningarna för plugin vid aktivering.
  • Nästa tre add_action funktioner kallar krokfunktionerna för att registrera pluginmenyn, koppla in plugin-sektionen och fältet till admin_init och lägg till plugin stilark till respektive rubrik.
  • De add_filter ring displayNotification Metod som visar anmälan när ett inlägg är gammalt.

Titta på __konstruera metod ovan, register_activation_hook funktionen kallar aop_settings_default_values metod för att ställa in standardinställningarna för plugin.

allmän funktion aop_settings_default_values ​​() $ aop_plugin_options = array ('notification' => 'Det här inlägget har inte uppdaterats på över 2 år.', 'years' => 2); update_option ('apo_alert_old_post', $ aop_plugin_options); 

De aop_settings_menu Metoden skapar undermenyn för plugin under det befintliga inställningar meny.

allmän funktion 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')); 

Det tredje argumentet passerade till add_options_page funktion ovan är alert_post_old_function metod som visar sidinnehållet i pluginens inställningar.

offentlig funktion alert_post_old_function () echo '
'; screen_icon (); eko "

Alert Post är gammal

'; eko "
'; do_settings_sections (AOP-alert-post gamla "); settings_fields ( 'aop_settings_group'); skickaknapp();

För att lägga till plugin-inställningarna använder vi API för WordPress Settings för att lägga till inställningsformulär.

För det första definierar vi sektionen, lägger till inställningsfälten och registrerar slutligen inställningarna. Allt detta kommer att ske i pluginOption metod som var ansluten till admin_init åtgärder tidigare i __konstruera metod.

public function pluginOption () add_settings_section ('aop_settings_section', 'Plugin Options', null, 'aop-alert-post-old'); add_settings_field ("notification", "', array ($ this,' aop_notification '),' aop-alert-post-old ',' aop_settings_section '); add_settings_field ('år', '', array ($ this,' aop_years '),' aop-alert-post-old ',' aop_settings_section '); register_setting ('aop_settings_group', 'apo_alert_old_post'); 

Återställningsmetoden för inställningsfältet: aop_notification och aop_years den fyllningen fyller fältet med önskade forminmatningar enligt följande.

allmän funktion aop_notification () $ this-> databaseValues ​​(); eko "'; 
allmän funktion aop_years () $ this-> databaseValues ​​(); eko " .oldPost padding-top: 8px; vadderande-botten: 8px; bakgrundsfärg: # FEEFB3; färg: # 9F6000; gräns: 1px solid; vaddering: 4px 12px 8px; marginalbotten: 20px; gränsstråle: 6px;  span.oldPost bakgrundsfärg: # 9F6000; färg: #fff; vaddering: 1px 10px 0px; gränsstråle: 20px; typsnittstorlek: 18px; font-weight: bold; font-family: Verdana; flyta till vänster; marginal: 0px 8px 0px 0px;  span.oldtext padding-top: 0px; färg: # 9F6000;    HTML; 

Slutligen är funktionen som visar anmälan ovanför postinnehållet som ansågs gammalt följande:

public function displayNotification ($ content) global $ post; $ This-> databaseValues ​​(); // få inställningar år $ setYear = $ this -> _ years; // få meddelandetext $ notification = $ this -> _ notification; // beräkna efter ålder $ år = datum ('Y') - get_post_time ('Y', true, $ post-> ID); // Visa meddelande endast på post om (is_single ()): om ($ år> $ setYear) echo '
'; eko " ! '; eko "$ anmälan"echo"
'; endif; returnera $ content;

Låt oss prata genom koden ovan: För det första hämtar vi antalet år som bestämmer när ett inlägg är gammalt, subtraherade året posten skrevs från det här året. Om resultatet är större än det år som definierar gammalt visas meddelandet om att inlägget är gammalt.

Slutligen är vi färdiga att koda plugin-klassen. För att få klassen att fungera måste vi ordna det så här:

ny AlertOldPost;

Slutsats

I den här artikeln lärde vi oss hur man beräknar åldern för ett inlägg, visar en anmälan när ett inlägg anses vara gammalt och gjorde det med hjälp av objektorienterad programmeringspraxis.

Jag uppmanar dig att granska koden för att få en fördjupad kunskap om hur det fungerar. Dina frågor, kommentarer och bidrag är välkomna.