Fundamentele de construire a unui tablou de bord pentru WordPress Server

Ce veți crea

Oamenii se plâng de multe ori că WordPress este lent. Dacă acest lucru este adevărat sau nu, depinde de mulți factori, dar dacă putem vedea resursele serverului în interiorul tabloului de bord WordPress, atunci acesta poate da o oarecare înțelegere despre cât de bine funcționează instalarea WordPress. 

În acest tutorial, vom realiza un plugin pentru a afișa starea serverului incluzând spațiul pe disc, consumul de memorie, utilizarea procesorului și utilizarea procesului. 

Vom învăța, de asemenea, despre cache-ul WordPress pentru a evita interogarea acestor metrici de mai multe ori și vom acoperi și lucrările WordPress cron pentru a genera automat aceste date.

Tabloul de bord al administratorului, în mod implicit, ne prezintă câteva blocuri numite widget-uri. Acestea includ: 

  • La o privire
  • Activitate
  • Proiect rapid
  • Știri WordPress
  • Bine ati venit

Widgeturile pot fi reordonate în funcție de preferință și pot fi afișate sau ascunse - în general, tabloul de bord este personalizabil.

Deoarece widgeturile sunt foarte flexibile și sunt disponibile chiar pe primul ecran al ecranului de administrator, le putem folosi pentru a afișa resursele serverului: starea discului, utilizarea RAM, utilizarea procesorului și informațiile despre sistemul de operare. Vom numi aceste metode de resurse pe scurt.

De-a lungul acestor serioase vom învăța API-urile Dashboard widgets și rolurile și capabilitățile pentru a face aceste widget-uri disponibile pentru unii utilizatori, deoarece datele ar putea fi sensibile. 

Pentru a face acest lucru, vom afla, de asemenea, câteva comenzi de bază Linux pentru a extrage informații despre server și semințe în tabloul de bord widget. Vom utiliza API tranzitorii pentru a arhiva aceste date. Cronjobs va fi utilizat pentru a trage automat aceste date în loc să le primească la cerere la fiecare cerere.

Lucrul pluginului nostru este inspirat de Linux Dash.

Pluginul nostru acceptă nouă tipuri de valori. Ca rezultat, vom avea nouă widget-uri de tabloul de bord.

  1. Informații despre server: sistemul de operare, kernel-ul Linux, timpul de lansare etc..
  2. CPU încărcare: încărcarea medie a procesorului în 1, 5 și 15 minute
  3. Utilizarea RAM a RAM fizic și a fișierului swap
  4. Utilizarea discului
  5. Software instalat
  6. procese
  7. Ethernet
  8. Performanța rețelei
  9. Statul IO

cerinţe

  1. Un mediu Linux. Mac OS X este încă o opțiune, dar unele dintre comenzile pentru a verifica valorile de mai sus nu sunt disponibile, deci dacă primiți o eroare de comandă nu a fost găsită, atunci știți că nu există suport pentru Mac pentru acea comandă.
  2. Înțelegerea de bază a cochiliei
  3. Basic WordPress plug-in înțelegere.

Structura scheletului Plugin

Să creăm un plugin simplu și să îl sunăm Tabloul de bord al serverului. Vom începe cu câteva lucruri de bază. O tradițională Salut Lume vă va ajuta să aveți un gust de adăugare a unui widget în tabloul de bord. 

E ușor, de fapt. 

Crearea unui apel de dosar Tabloul de bord al serverului interior wp-content / plugins, și un fișier serverdashboard.php. Aspectul dosarului arată astfel. Trebuie doar să se concentreze pe fișierul principal și să ignore bin, teste, widget-uri și așa mai departe.

Utilizați acest cod pentru serverdashboard.php

alerga(); ?>

Am folosit spațiul de nume AX \ StatBoard pentru a evita coliziunea numelui cu diferite clase de pluginuri, nume de funcții ale temelor și alte pluginuri. 
De asemenea, am folosit modelul Singleton pentru a obține o instanță unică a clasei plugin. Am creat o metodă alerga pentru a înregistra cârligul sau filtrul cu WordPress.
Pentru a adăuga un widget, trebuie să ne implicăm în acțiune wp_dashboard_setup. Aceste cârlige ne oferă acces la opțiunea de personalizare a tabloului de bord. Aceasta ne permite să adăugăm sau să eliminăm widgetul de bord din WordPress. 
În interiorul funcției de cârlig, folosim wp_add_dashboard_widget pentru a înregistra un widget. Aceasta necesită argumente în această ordine:
  1. ID-ul widgetului este folosit pentru a identifica slug pentru widget. Acest blocaj este utilizat atunci când se redă CSS id, clasă și ca chei în matrice widget.
  2. Titlu widget afișează titlul casetei widget
  3. Suna inapoi pentru a face conținutul widget-ului. Trebuie să furnizeze conținut direct, nu trebuie să se întoarcă.
De cele mai multe ori vom întâlni apeluri ca o singură funcție, o funcție anonimă, o matrice de obiect și o metodă sau o matrice de metodă de clasă și statică.
Actualizați tabloul de bord. Pluginul nostru arată widget-ul său. Observați id din elementul div widget.

Pluginul nostru widget se afișează cu ID-ul și conținutul acestuia

Să avansăm. Vom arăta o schemă de plăcintă cu unele date fictive. Pentru a păstra ceva simplu, voi folosi API-ul Google Chart. Vom utiliza în mod extensiv mai târziu pentru măsurători pentru server, deoarece este mai bine să vizualizați acest tip de date. 

Dacă nu vă place Google Chart, puteți să vă scapați de ea și să puneți biblioteca dvs. preferată. Amintiți-vă că acesta este un tutorial, așa că nu te limita - folosește orice ai face să te simți confortabil cu utilizarea!

Trebuie să încărăm scriptul Google Chart. Schimba-ti alerga() metoda de a înregistra încă un cârlig.

 funcția publică () add_action ('wp_dashboard_setup', array ($ this, 'add_dashboard_widgets')); add_action ('admin_enqueue_scripts', array ($ this, 'add_asset')); 

admin_enqueue_scripts este acțiunea de care trebuie să vă conectați pentru adăugarea propriului dvs. script în tabloul de bord al administratorului. Vom adăuga încă un apel de metodă add_asset în clasa noastră să se ocupe de încărcarea de script-uri. Aplicația din add_asset.

 / ** * Adăugați javascript * / funcția add_asset () wp_enqueue_script ('google-chart', 'https://www.google.com/jsapi');  
Avem biblioteca diagramelor. Acum trebuie să o facem în interiorul tabloului de bord. Puteți juca cu Google Chart. Vom folosi doar exemplul lor acum.
funcția add_dashboard_widgets () syslog (LOG_DEBUG, "Run"); wp_add_dashboard_widget ('hello_world_dashboard_widget', // A Slug pentru a identifica acest widget 'Hello World', // funcția widget title () echo <<<'EOD' Hey, I'm the body of widget. Thanks for bring me to the life. 
EOD; // funcția de a redacta conținutul widget-ului, folosesc o închidere aici);

Pur și simplu adăugăm încă un element div cu id hello_piechart și redați diagrama în acel element. Să vedem ce avem acum:Observați ID-ul elementului widget.

Acum, că știm cum să adăugăm propriul bloc widget la tabloul de bord, iar acum că știm cum să obținem informațiile Google Chart, putem combina cele două pentru a afișa mai multe informații. 

În secțiunea următoare, vom învăța cum să luăm metricile serverului și să redăm conținut pentru fiecare tip de metric al serverului pe care l-am discutat anterior.

Trasarea metricilor serverului

Atunci când tragem metricile serverului, vom folosi comanda Linux pentru a obține aceste informații. În PHP, putem folosi backtick "sau shell_exec pentru a invoca o comandă shell și a prelua ieșirea. 

Putem analiza rezultatul pentru a obține date server. De exemplu, pentru a obține starea de utilizare a discului, putem folosi comanda df -h. Cunoaștem formatul de ieșire, astfel încât să putem parsa pentru a obține ceea ce vrem.

 $ df = 'df -h'; $ df = explode ("\ n", $ df); dacă is_array ($ df) && count ($ df)> = 2) array_shift ($ df); // Descărcați prima linie $ df = array_map (funcția ($ line) if (gol ($ line)) return NULL; $ segment = preg_split ('/ \ s + /' 'file system' => $ segment [0], 'size' => $ segment [1], 'used' => $ segment [2], 'available' => $ segment [3], 'use_percent' => $ segmentul [4],);, $ df); var_dump ($ df); 

Curățarea cu AWK

Pentru a ajuta la curățarea ieșirii direct din comanda shell, putem combina cu awk. Această legătură pare a fi înfricoșătoare cu o mulțime de informații, dar vom folosi doar o cantitate foarte mică din acest tutorial. Explicarea awk este în afara scopului acestui tutorial.
Dacă doriți să aflați mai multe despre awk, utilizați acest cheatsheet. Practic, folosim awk pentru a procesa fiecare linie de ieșire, iar pe fiecare linie, șirul va fi împărțit în funcție de file sau spațiu, iar elementul poate fi accesat ca variabilă cu $ 1 pentru primul element, $ 2 pentru al doilea element și așa mai departe. Sintaxa este: [command_we_run] | awk 'print $ 1, $ 3, ...'
Să ne uităm la următorul exemplu:
☁ Server Tabloul de bord [master] ls -lh total 32 -rw-r-r-- 1 kureikain personal 2.6K Apr 11 00:46 Server Dashboard.php drwxr-xr-x 3 staff kureikain 102B Mar 29 01:27 bin - rw-r-r-- 1 kureikain personal 98B 5 apr 5 18:53 loader.js -rw-r-r-- 1 kureikain personal 321B Mar 29 01:27 phpunit.xml drwxr-xr-x 4 personal kureikain 136B Mar 29 01:27 teste drwxr-xr-x 12 kureikain staff 408B 13 apr 17 17:37 widget -rw-r-r-- 1 kureikain personal 1.1K Apr 6 01:04 widget.php ☁ Server Dashboard [master] ls -lh | awk 'print $ 3, $ 4, $ 5, $ 9' personal kureikain 2.6K Server kureikain personal 102B bin kureikain personal 98B loader.js staff kureikain 321B phpunit.xml staff kureikain 136B teste personal kureikain 408B widget kureikain staff 1.1K widget.php

După cum puteți vedea fiecare linie de Este -la conține nouă câmpuri:
drwxr-xr-x 4 personalul kureikain 136B Mar 29 01:27 teste
Separând prin spații, aceste 9 câmpuri sunt:
  1. drwxr-xr-x  
  2. 4
  3. kureikain 
  4. personal  
  5. 136B
  6. strica
  7. 29
  8. 01:27
  9. teste
Pot folosi awk pentru a apuca numele, grupul, dimensiunea și numele fișierului / folderului în câmpul corespunzător 3, 4, 5, 9 awk 'tipăriți $ 3, $ 4, $ 5, $ 9' și voi vedea:
kureikain 136B teste de personal

Prin urmare, folosind awk putem curata rezultatul putin mai mult inainte de a ne alimenta functia de procesare PHP.

Curățați-vă cu GREP

Unele comenzi extrag date suplimentare de care nu avem nevoie; prin urmare, aceasta necesită un pic de efort suplimentar cu PHP pentru ao curăța.

De exemplu:

[vagrant @ vagrant-centos64 ~] $ gratuit -m total folosiți tampoane partajate gratuite cache Mem: 589 537 51 0 8 271 - / + tampoane / cache: 258 330 Schimb: 255 0 255
free -m ne arată utilizarea RAM cu memorie și fișier swap; cu toate acestea, acesta include alte două linii cu total / used / free și - / + buffere / cache pe care probabil că nu le avem nevoie. 
Vrem doar să atragem informații despre Mem și Swap - adică linia 3 și linia 5. Una dintre modalitățile de a realiza acest lucru este utilizarea grep cu -E intrerupator. Acest comutator permite folosirea expresiei regulate pentru căutare. Pentru că vrem să găsim linia cu cuvintele Mem și Swap, să combinăm grep -E "Mem Swap"
Iată rezultatul.
[vagrant @ vagrant-centos64 ~] $ liber -m | grep -E "Mem Swap" Mem: 589 536 52 0 8 271 Schimb: 255 0 255
Deci este mult mai curat. Combinați ambele grep și awk putem să curățăm datele și să obținem doar ceea ce avem nevoie.
[vagrant @ vagrant-centos64 ~] $ liber -m | grep -E "Mem Swap" awk 'print $ 1, $ 2, $ 3, $ 4' Mem: 589 537 52 Schimbați: 255 0 255

Comenzi Linux pentru a obține informații despre server

Trebuie să învățăm câteva comenzi pentru a extrage valorile serverului, deci deschideți shell-ul serverului și încercați să tastați comanda de mai jos pentru a avea un gust rapid.

Verificați traficul în rețea

$ netstat -in Kernel Interface table Iface MTU Met RX - OK RX - ERR RX - DRP RX - OVR TX - OK TX - ERR TX - DRP TX - OVR Fl0 eth0 1500 0 5538339494 0 0 0 6216082004 0 0 0 BMRU eth0: 1 1500 0 - nu există statistici disponibile - BMRU eth1 1500 0 96707328840 0 0 0 102776317608 0 0 0 BMRU eth2 1500 0 33 0 0 0 7 0 0 0 BMRU lo 16436 0 29461422 0 0 0 29461422 0 0 0 LRU 

Verificați utilizarea discului

df -h Dimensiune sistem de fișiere folosit Disponibil Utilizați% montat pe / dev / sda7 2.0G 660M 1.3G 35% / / dev / sda8 1.0T 632G 340G 66% / home / dev / sda6 2.0G 68M 1.9G 4% / tmp / dev / sda5 20G 1.5G 18G 8% / var / dev / sda2 20G 2.1G 17G 12% / usr / dev / sda1 194M 25M 160M 14% / boot / dev / hdb1 459G 277G 159G 64% / backup tmpfs 16G 0 16G 0% / dev / shm

Verificați utilizarea RAM

free -m total folosită gratuit tampoane partajate cache Mem: 32189 32129 59 0 419 9052 - / + buffere / cache: 22656 9532 Schimb: 32767 4 3276
Vom folosi mai mult comanda mai târziu, dar deasupra vă vom da o comandă fundamentală pentru a vedea ce putem obține de la serverul de pe linia de comandă.

Construirea Widget-ului

Vom refactoriza clasa noastră originală în secțiunea anterioară un pic. Rețineți că, dacă nu afirmăm altfel în mod clar, vom crea toate fișierele și folderele în directorul nostru de plugin-uri.

În primul rând, nu vom dori să includeți fișiere manual. Vom scrie un încărcător de clasă auto în acest scop. Când o clasă lipsă este inițializată, vom verifica numele clasei și vom încerca să includem fișierul sursă care deține definiția clasei. 

Vom folosi spațiile de nume ca și calea și numele clasei ca numele fișierului. De exemplu, o clasă foo în spațiul de nume AX \ StatBoard ar trebui să fie în rădăcina dosarului plugin. O clasa bâzâit în spațiul de nume AX \ StatBoard \ Bar ar trebui să fie în Bar \ buzz.php

Structura layout-ului cu spațiu de nume, nume de clasă și nume de fișier pentru încărcarea automată.

Având în vedere acest lucru, să mergem mai departe și să începem să realizăm metoda noastră de încărcare automată:

_plugin_dir. strtolower (str_replace ('\\', '/', $ classname). '.php'); dacă (! file_exists ($ filepath)) return false;  include $ filepath;  

/ **
* Setare variabilă și intializarea widget furnizor
* /
funcția __construct ()
$ this -> _ plugin_dir = plugin_dir_path (__FILE__);
spl_autoload_register (array ($ this, 'load_class'));


// ...
Deci, ce se întâmplă aici? Pluginul nostru utilizează spațiul de nume AX \ StatBoard. Așadar, asigurați-vă că clasa cerută sub acest spațiu de nume trebuie să fie gestionată de plugin-ul nostru, altfel încărcătorul nostru auto nu este capabil să-l încarce. Apoi, dezbracăm AX \ StatBoard în numele clasei și înlocuiți-l cu calea dosarului plugin. Marșul spate \ în spațiul de nume este înlocuit cu / cale separator, și adăugați php extensie. Aceasta înseamnă că spațiul de nume va fi folosit ca calea către dosar conține fișier de clasă, iar numele clasei este numele fișierului. Includerea apare numai dacă fișierul există. Acum, am primit încărcătorul auto, trebuie să-i lăsăm pe PHP să știe că avem un încărcător auto și dorim să-l folosim. PHP include spl_autoload_register în acest scop. Am pus-o în constructorul nostru de clasă.
În al doilea rând, să proiectăm clasa widget-urilor noastre. Avem mai multe tipuri de metric pentru a fi afișate. Este mai bine să afișați fiecare metric într-un bloc widget separat, astfel încât aceste widgeturi să poată fi sortate sau aranjate sau personalizate să se ascundă sau să se afișeze. Punerea tuturor informațiilor în același widget va pune costul controlului arătând / ascunzând fiecare metric în pluginul nostru. 
Presupunând că știți despre funcție wp_add_dashboard_widget, trebuie să îi oferim titlul și conținutul. În funcție de fiecare widget, vom avea o clasă pentru a face titlul și conținutul pentru el. Noi numim aceste clase sunt widget-uri Furnizor de. Toți furnizorii de widgeturi trebuie să definească get_title () și get_content () pentru a face conținut.
În acest scop, vom crea o Furnizor de interfață, iar clasa furnizorului nostru de widget-uri să implementeze această interfață. De asemenea, trebuie să creați încă un apel de metodă get_metric () pentru a extrage datele serverului.
Creați fișier widget / provider.php cu acest conținut:
Aceasta este o interfață. Ne-am cerut ca fiecare furnizor de widget-uri să implementeze această interfață și, prin urmare, asigurăm că clasa furnizorilor de dispozitive tat are întotdeauna aceste trei metode.
Vom crea o clasă mai mult Widget pentru a gestiona acești furnizori. Creați clase de furnizori, apoi le trimiteți acestora Widget clasă și vizualizare Widget clasa ca punct unic pentru a cere unui furnizor atunci când avem nevoie. Putem pune pur și simplu totul în fișierul nostru principal de plugin, și doar creăm instanță de clasă cu nou operator atunci când avem nevoie, dar este greu să ne menținem mai târziu. 
Când spargem lucrurile în mai multe straturi, este mai ușor să le testezi și să le extindem. Odată ce facem ca toți furnizorii să fie gestionați de o singură clasă, putem folosi acea clasă unică pentru a face același lucru asupra setului de furnizori. Putem adăuga cu ușurință mai mulți furnizori în orice moment, doar prin crearea unui obiect care implementează clasa furnizorilor și le alimentează Widget clasă
Compuneți un fișier widget.php în directorul rădăcină al dosarului plugin.

namespace AX \ StatBoard;
utilizați AX \ StatBoard \ Widget \ Provider;

clasa Widget
const WIDGET_SLUG_PREFIX = 'AX';

protejate $ _providers = array ();
protecția statică $ _instance;

funcția statică ()
returneaza eu :: $ _ instanta = auto :: :: _ instanta?: new self ();


funcția __construct ()


/ **
* Adăugați un furnizor de widget-uri
* @ widget șir de paragraf
* Obiect furnizor @ param pentru a gestiona randarea conținutului widget
* /
funcția publică add_provider ($ name, Provider $ handler)
$ this -> _ furnizori [$ name] = $ handler;
returnați $ this;


/ **
* Obțineți toți furnizorii sau un anumit furnizor
* /
funcția publică get_provider ($ name = NULL)
dacă (! $ name)
returnați $ this -> _ providers;

returneaza $ this -> _ furnizori [$ name];


/ **
* Înregistrați un widget pentru al face.
* /
registrul funcțiilor publice ($ name)
$ slugid = auto :: WIDGET_SLUG_PREFIX. $ nume;
$ widget_provider = $ acest-> get_provider ($ nume);
dacă (gol ($ widget_provider))
return false;


wp_add_dashboard_widget (
$ slugid,
$ Widget_provider-> get_title (),
array ($ widget_provider, 'get_content'));
return true;



Din nou, folosim Modelul Singleton pentru clasa Widget. Un scurt rezumat al metodei noastre aici.
  1. add_provider metoda va adăuga un obiect furnizor de obiecte widget la lista de furnizori widget. De asemenea, folosim sugestia de tip pentru a ne asigura că obiectul trece la add_provider trebuie să fie a Furnizor de prin implementarea noastră Furnizor de interfață.
  2. get_provider metoda poate returna o listă a tuturor furnizorilor sau a unui anumit furnizor.
  3. Inregistreaza-te metoda va înregistra de fapt obiectul furnizorului nostru cu WordPress pentru a reda un widget de bord cu wp_add_dashboard_widget. ID-ul widget-ului este generat pe baza prefixului, a unei constante predefinite și a clasei de widget. Titlul va fi și conținutul va fi tras prin get_title și get_content de furnizor. Ne-am asigurat că pun în aplicare interfața Furnizorului nostru. Cu această metodă de înregistrare, am rezumat implementarea adăugării widget-ului în tabloul de bord. Tot ce trebuie să facem acum este să sunăm Inregistreaza-te cu numele furnizorului pe care îl adăugăm mai înainte add_provider. Cu acest lucru în minte, când WordPress API se schimbă, nu trebuie să mergem în fiecare loc wp_add_dashboard_widget, noi doar actualizăm într-un singur loc.

Vom reveni la fișierul nostru original principal de plugin serverdashboard.php, vom inițializa toți furnizorii și le vom adăuga la lista de furnizori a obiectului Widget.
 _plugin_dir = plugin_dir_path (__FILE__); spl_autoload_register (array ($ this, 'load_class')); $ this -> _ dashboard_widget = array ('server', 'cpu_load', 'ram', 'disk', 'diskio', 'software', 'ethernet', 'internetspeed', 'networkio', 'process'); ($ this -> _ dashboard_widget ca element $) if (! file_exists ($ this -> _ plugin_dir. '/ widget /'. $ item. '.php')) continuați;  $ classname = 'AX \\ StatBoard \\ Widget \\'. ucwords (element $); Widget :: instanță () -> add_provider ($ item, new $ classname ()); 

Vom pune toate clasele furnizorilor de widgeturi sub spațiul de nume AX \ StatBoard \ Widget și prin urmare ei vor sta în interiorul dosarului widget. Suportăm nouă tipuri de metric și numim clasa corespunzătoare matricei _dashboard_widgets de mai sus. 
Pentru fiecare widget, creăm o nouă instanță a furnizorului său și adăugăm în Widget clasă. Iată ce vom obține ulterior cu această structură:
Ține minte că ne-am cuplat wp_dashboard_setup, iar în interiorul acestuia numim funcția wp_add_dashboard_widget pentru a adăuga un widget nou în tabloul de bord. Apoi, avem pe noi Inregistreaza-te în acest scop. Vom bifa toți furnizorii adăugați și le vom înregistra. Actualizați conținutul add_dashboard_widgets de serverdashboard.php deveni:
 
/ ** * Inregistreaza proiectorul widget-ului de bord pentru a se arata pe tabloul de bord * / function add_dashboard_widgets () $ widget = Widget :: instanta (); foreach ($ widget-> get_provider () ca $ name => $ furnizor) $ widget-> register ($ name);


Apoi, vom cârti în admin_footer pentru a afișa JavaScript inline în partea inferioară a paginii admin pentru inițializarea pachetului de clasă Google Chart. Al nostru alerga() metoda este de asemenea actualizată pentru noul cârlig.
 / ** * Începeți să configurați cârligul * / funcția publică executați () add_action ('wp_dashboard_setup', array ($ this, 'add_dashboard_widgets')); add_action ('admin_enqueue_scripts', array ($ this, 'add_asset')); add_action ('admin_footer', array ($ this, 'footer'));  / ** * JavaScript inline pentru grafic * / function footer () echo '  „; 

În acest moment, am completat fișierul de bază, iar fișierul plugin principal ar trebui să arate așa.
_plugin_dir. strtolower (str_replace ('\\', '/', $ classname). '.php'); dacă (! file_exists ($ filepath)) return false;  include $ filepath;  / ** * Variabila de instalare și intializarea furnizorului de widget * / funcția __construct () $ this -> _ plugin_dir = plugin_dir_path (__FILE__); spl_autoload_register (array ($ this, 'load_class')); $ this -> _ dashboard_widget = array ('server', 'cpuload', 'ram', 'disk', 'software', 'process', 'ethernet', 'networkio', 'iostat'); ($ this -> _ dashboard_widget ca element $) if (! file_exists ($ this -> _ plugin_dir. '/ widget /'. $ item. '.php')) continuați;  $ classname = 'AX \\ StatBoard \\ Widget \\'. ucwords (element $); Widget :: instanță () -> add_provider ($ item, new $ classname ());  / ** * Creează o instanță unică prin intermediul aplicației * / public static function () returnați eu :: $ _ instanță = auto :: $ _ instanță?: New self ();  / ** * Începeți să configurați cârligul * / funcția publică executați () add_action ('wp_dashboard_setup', array ($ this, 'add_dashboard_widgets')); add_action ('admin_enqueue_scripts', array ($ this, 'add_asset')); add_action ('admin_footer', array ($ this, 'footer'));  / ** * Inregistreaza proiectorul widget-ului de bord pentru a se arata pe tabloul de bord * / function add_dashboard_widgets () $ widget = Widget :: instanta (); foreach ($ widget-> get_provider () ca $ name => $ furnizor) $ widget-> register ($ name);  / ** * Încărcarea activelor: foaie de stil, JS. * / funcția add_asset () syslog (LOG_DEBUG, "Loaded"); wp_enqueue_script ("diagrama google", "https://www.google.com/jsapi"); / / wp_enqueue_script ('plugin_dir_url', plugin_dir_url (__FILE__) ./loader.js ');  / ** * JavaScript inline pentru grafic * / function footer () echo '  „;  Tablou de bord :: instanță () -> executați (); 
În principiu, creați o instanță a clasei plugin-ului principal și apelați metoda de rulare. Care, la rândul său, a stabilit o listă de cârlig. Fiecare cârlig este o altă metodă în interiorul clasei. De asemenea, creăm și înregistrăm obiectul furnizorului nostru Widget obiect.

Ce urmeaza?

În acest moment, încă nu afișăm nimic; cu toate acestea, am stabilit o structură pentru anunțul plugin-ul nostru care a început să se găsească în Google Charts.
Puteți descărca scriptul complet din linkurile de descărcare din partea de sus a acestui articol. Vom intra în detaliile implementării fiecărui furnizor de widget în articolul următor, deci asigurați-vă că urmați următoarea parte. 
Sper că ți-a plăcut acest articol. Lăsați comentarii cu oricare dintre gândurile dvs. și voi fi sigur că le răspundeți.
Cod