Object-georiënteerd programmeren in WordPress documenteer de plug-in II

Op dit punt in de serie zijn we klaar om verder te gaan met het afronden van onze plug-in door onze bestanden, klassen, functies, variabelen en meer te documenteren.

Hoewel dit de laatste stap is die we eigenlijk moeten maken om de plug-in te voltooien, is dit niet de laatste post in de serie, omdat we zullen blijven kijken naar een paar geavanceerde onderwerpen in objectgeoriënteerd programmeren.

Maar voordat we dat doen, laten we onze plug-in naar versie 1.0 brengen door alles wat we in het vorige artikel hebben geleerd in de praktijk te brengen.

Natuurlijk, zoals met allemaal In eerdere artikelen raad ik aan om alles in te halen wat we tot nu toe hebben besproken, zodat je niet alleen op de hoogte bent van het werk dat we in het vorige artikel hebben gedaan, maar ook hoe we tot de laatste punten zijn gekomen discussiëren in dit artikel.

  1. Een introductie
  2. Klassen
  3. Types
  4. Controlestructuren: voorwaardelijke overzichten
  5. Besturingsstructuren: lussen
  6. Functies en kenmerken
  7. strekking
  8. De plug-in bouwen I
  9. De plug-in II bouwen
  10. Documenteer de plugin I

Laten we aan de slag gaan met het documenteren van al onze bestanden, met al deze besproken en beoordeeld.

De plug-in documenteren

Er zijn een aantal verschillende manieren om deze plug-in te documenteren:

  • We zouden eerst alle bestandskoppen kunnen documenteren, dan zouden we terug kunnen komen om de klassen te documenteren, dan zouden we terug kunnen komen om de variabelen te documenteren, dan zouden we de functies kunnen documenteren.
  • We kunnen elk bestand tegelijkertijd documenteren en een korte discussie houden over alles wat per bestand is opgenomen.

Het is duidelijk dat de optie meer documentatie per sectie oplevert, maar dit moet resulteren in een veel minder vervelend artikel en een veel eenvoudiger begrip van de controlestroom voor de gehele plug-in.

Daartoe zullen we de plug-in, bestand voor bestand, de documentatie voor elk stukje code dat we hebben doornemen en dan zullen we eventuele interessante punten na de code bespreken..

Ten slotte zorgen we ervoor dat we de laatste versie van de plug-in aan het eind van het artikel raadplegen. Met dat gezegd, laten we aan de slag gaan.

De Single Post Meta Manager

Bedenk dat het belangrijkste bestand voor het starten van de plug-in het single-post-meta-manager.php bestand is dat zich in de root van de directory van de plug-in bevindt.

Dit is hoe de volledig gedocumenteerde versie van het bestand eruit ziet. Lees elke opmerking aandachtig aandacht niet alleen aan het formaat dat volgt, maar de inhoud die het biedt.

rennen();  // Bel de bovenstaande functie om de uitvoering van de plug-in te starten. run_single_post_meta_manager (); 

In de bovenstaande code, merk op dat we een bestandskop hebben gedefinieerd volgens de conventies die we in het vorige artikel hebben geschetst. We hebben ook de vereiste plug-in header-tags onderhouden zodat WordPress deze correct kan lezen.

Houd er rekening mee dat we ze in dit geval hebben opgenomen onder een aangepast gebruik @ Wordpress-plugin label. Dit is niet verplicht maar helpt om de opmerkingen van de bestandskop te scheiden van de vereiste opmerkingen van de plug-in.

Merk tot slot op dat we de versie van deze plug-in hebben aangerand 1.0, en we hebben deze plugin ook de gegeven @pakket waarde van SPMM wat een tekort is Single Post Meta Manager. We zullen dit gedurende de hele plug-in gebruiken.

De omvat directory

Laten we vervolgens onze aandacht richten op alle bestanden die zich in de map include bevinden. 

Aangezien deze bestanden eerder nodig zijn dan in de beheerdersdirectory, is het logisch om elk van deze bestanden afzonderlijk te bekijken en vervolgens onze discussie af te ronden met de resterende bestanden in de beheerdersdirectory..

De Single Post Meta Manager

plugin_slug = 'single-post-meta-manager-slug'; $ this-> version = '1.0.0'; $ This-> load_dependencies (); $ This-> define_admin_hooks ();  / ** * Importeert de Single Post Meta-beheerklassen en de Single Post-meta-lader. * * De beheerklasse van Single Post Meta Manager definieert alle unieke functionaliteit voor * het introduceren van aangepaste functionaliteit in het WordPress-dashboard. * * De Single-post Meta Manager Loader is de klasse die de hooks en callbacks * van WordPress en de plug-in coördineert. Deze functie geeft een instantiatie en stelt de verwijzing naar de eigenschap * $ loader class in. * * @access private * / private function load_dependencies () require_once plugin_dir_path (dirname (__FILE__)). 'Admin / klasse-single-post-meta-manager-admin.php'; require_once plugin_dir_path (__FILE__). 'Class-single-post-meta-manager-loader.php'; $ this-> loader = new Single_Post_Meta_Manager_Loader ();  / ** * Definieert de hooks en callback-functies die worden gebruikt voor het instellen van de plugin stylesheets * en de metabox van de plug-in. * * Deze functie is afhankelijk van de Single Post Meta Manager Admin-klasse en de eigenschap Single Loader Meta Manager * Loader. * * @access private * / private function define_admin_hooks () $ admin = new Single_Post_Meta_Manager_Admin ($ this-> get_version ()); $ this-> loader-> add_action ('admin_enqueue_scripts', $ admin, 'enqueue_styles'); $ this-> loader-> add_action ('add_meta_boxes', $ admin, 'add_meta_box');  / ** * Stelt deze klasse in beweging. * * Voert de plug-in uit door de run-methode van de loader-klasse aan te roepen, die * alle hooks en callback-functies gebruikt in de plug-in * bij WordPress registreert. * / public function run () $ this-> loader-> run ();  / ** * Retourneert de huidige versie van de plug-in naar de beller. * * @return string $ this-> version De huidige versie van de plug-in. * / public function get_version () return $ this-> version;  

Het is duidelijk dat er zijn veel van nieuwe opmerkingen die in dit specifieke dossier zijn opgenomen; het zou echter zeer duidelijk moeten zijn over wat elke klasse-eigenschap, de constructor en de interne functies aan het doen zijn.

Het belangrijkste om op te merken - afgezien van hoe de informatie wordt gecoördineerd via de plug-in - is hoe we ons hebben gehouden aan de normen die in het vorige artikel zijn gedefinieerd. 

Merk echter op dat wij hebben de vrijheid genomen als niet gebruik van bepaalde tags en / of functies van de documentatie wanneer deze niet relevant zijn. Dit is iets dat we in de rest van het artikel zullen blijven doen.

De Single Post Meta Manager Loader

acties = array (); $ this-> filters = array ();  / ** * Registreert de acties met WordPress en de respectieve objecten en * hun methoden. * * @param string $ hook De naam van de WordPress-hook waarnaar we een callback registreren. * @param-object $ component Het object dat de methode bevat die moet worden aangeroepen wanneer de haak wordt geactiveerd. * @param string $ callback De functie die zich op het opgegeven onderdeel bevindt. * / public function add_action ($ hook, $ component, $ callback) $ this-> actions = $ this-> add ($ this-> actions, $ hook, $ component, $ callback);  / ** * Registreert de filters met WordPress en de respectieve objecten en * hun methoden. * * @param string $ hook De naam van de WordPress-hook waarnaar we een callback registreren. * @param-object $ component Het object dat de methode bevat die moet worden aangeroepen wanneer de haak wordt geactiveerd. * @param string $ callback De functie die zich op het opgegeven onderdeel bevindt. * / public function add_filter ($ hook, $ component, $ callback) $ this-> filters = $ this-> add ($ this-> filters, $ hook, $ component, $ callback);  / ** * Registreert de filters met WordPress en de respectieve objecten en * hun methoden. * * @access private * * @param array $ hooks De verzameling bestaande hooks om toe te voegen aan de verzameling hooks. * @param string $ hook De naam van de WordPress-hook waarnaar we een callback registreren. * @param-object $ component Het object dat de methode bevat die moet worden aangeroepen wanneer de haak wordt geactiveerd. * @param string $ callback De functie die zich op het opgegeven onderdeel bevindt. * * @return array De verzameling hooks die via deze klasse bij WordPress zijn geregistreerd. * / persoonlijke functie toevoegen ($ hooks, $ hook, $ component, $ callback) $ hooks [] = array ('hook' => $ hook, 'component' => $ component, 'callback' => $ callback) ; $ haken teruggeven;  / ** * Registreert alle gedefinieerde filters en acties met WordPress. * / public function run () foreach ($ this-> filters als $ hook) add_filter ($ hook ['hook'], array ($ hook ['component'], $ hook ['callback']));  foreach ($ this-> acties als $ hook) add_action ($ hook ['hook'], array ($ hook ['component'], $ hook ['callback']));  

Merk op dat deze klasse meer een minder belangrijk onderdeel is van de plug-in omdat deze alle acties en filters die in de plug-in worden gebruikt, coördineert. Deze plugin centraliseert alle registratie en coördinatie van de haken die door de plug-in worden gebruikt.

Eindelijk, wanneer rennen wordt aangeroepen, worden alle hooks geregistreerd bij WordPress, zodat de plugin wordt geactiveerd en alle geregistreerde acties en filters worden aangeroepen.

De beheerder directory

Op dit moment zijn we klaar om onze aandacht te richten op de bestanden in de beheerdersdirectory van de plug-in. 

Hoewel het bestand uit een aantal PHP-bestanden bestaat, bestaat het ook uit een CSS-bestand. Voor de toepassing van dit artikel zullen we de CSS-bestanden niet documenteren; echter, de WordPress Codex doet definieer hier documentatie voor.

Laten we voorlopig echter doorgaan met het documenteren van de klassen en bestanden die bestaan ​​in de beheerder directory.

Single Post Meta Manager Admin

De Admin-klasse voor Single Post Meta Manager heeft één enkele verantwoordelijkheid: definieer de functionaliteit om de metabox en de bijbehorende stijlen voor het dashboard weer te geven.

versie = $ versie;  / ** * Hiermee wordt het stijlblad opgehaald dat verantwoordelijk is voor het stylen van de inhoud van deze * metabox. * / public function enqueue_styles () wp_enqueue_style ('single-post-meta-manager-admin', plugin_dir_url (__FILE__). 'css / single-post-meta-manager-admin.css', array (), $ this- > versie, FALSE);  / ** * Registreert de metabox die wordt gebruikt voor het weergeven van alle post-metadata * die zijn gekoppeld aan het huidige bericht. * / public function add_meta_box () add_meta_box ('single-post-meta-manager-admin', 'Single Post Meta Manager', array ($ this, 'render_meta_box'), 'post', 'normal', 'core' );  / ** * Vereist het bestand dat wordt gebruikt om de gebruikersinterface van de bericht-metabox weer te geven. * / public function render_meta_box () require_once plugin_dir_path (__FILE__). 'Partials / single-post-meta-manager.php';  

Merk op dat de klasse hierboven zeer weinig functionele details heeft. In de eerste plaats onderhoudt de klasse een verwijzing naar de versie van de plug-in, het stijlblad dat is gebruikt om de metabox te stijlen en de functie die nodig is om de metabox daadwerkelijk te renderen.

Bedenk dat dit alles is ingesteld in het kerninvoegbestand en de lader. Dit helpt bij het ontkoppelen van de logica die in de plug-in aanwezig is, zodat elke klasse zich kan concentreren op wat het primaire doel ervan is.

Het laatste stukje van de plug-in is natuurlijk afhankelijk van het eigenlijke deelbestand dat de opmaak bevat die nodig is om de metabox weer te geven.

Single Post Meta Manager Gedeeltelijk

 
$ post_meta_value) ?>

Dit zou relatief vanzelfsprekend moeten zijn; Houd er echter rekening mee dat dit bestand de huidige bericht-ID gebruikt (via het gebruik van de get_the_ID () functie), leest de metagegevens van het bericht en gaat vervolgens door het proces heen en bouwt een tabel met de toetsen en de waarden.

De plug-in voltooien

Op dit moment hebben we de implementatie van onze plug-in voltooid. Van het op de juiste plaats zetten van de objectgeoriënteerde programmeerprogrammeerpraktijken, tot het documenteren van de code.

Je kunt de laatste versie van de plug-in op GitHub pakken; we gaan echter onze objectgeoriënteerde discussie voortzetten over een paar meer posten, zodat we een paar meer geavanceerde onderwerpen kunnen verkennen, zoals overerving, abstractie en andere onderwerpen..

Als je in de tussentijd vragen of opmerkingen hebt over de plug-in, aarzel dan niet om ze in de opmerkingen achter te laten!