Eroare de inițializare a pluginului de semnare Pluginul nu este instalat. Instalarea pluginului CryptoPro CSP în browserul Mozilla Firefox. calea. Dezactivează pluginurile suplimentare

Regulile pentru instalarea pluginului CryptoPro CSP în Mozilla Firefox diferă în funcție de versiunea browserului - 52 și mai mare sau mai veche.

Versiunea Mozilla Firefox sub 52

Pentru a semna documente în Mozilla Firefox:

  • Dezactivați actualizările automate. Pentru a face acest lucru, accesați „Meniu” ⇒ „Setări” ⇒ „Suplimentar” ⇒ „Actualizări” (Fig. 1).
Orez. 1. Locația setărilor de actualizare în Mozilla Firefox
  • Instalați versiunea 51.0.1 de pe site-ul oficial Mozilla Firefox.

Pentru a instala pluginul CryptoPro Browser, urmați acești pași:

  1. Descărcați programul de instalare de pe site-ul oficial al companiei Crypto-Pro www.cryptopro.ru/products/cades/plugin și rulați fișierul executabil.

2. În fereastra de instalare a pluginului CryptoPro Browser, faceți clic pe butonul „Da” (Fig. 2-a).

Orez. 2-a. Instalarea pluginului CryptoPro Browser

3. Așteptați finalizarea instalării (Fig. 2-b).

Orez. 2b. Instalarea pluginului CryptoPro Browser

4. Faceți clic pe butonul „OK” și reporniți browserul de Internet (Fig. 2-c).

Orez. 2 inchi. Instalarea pluginului CryptoPro Browser

Important

După instalarea CryptoProBrowser priza- îneste necesar să se verifice dacă programul de completare pentru lucrul cu semnătura electronică CryptoPro EDS Browser plug-in pentru browsere este instalat în browser.

5. Deschideți browserul, apăsați butonul „Meniu browser”, selectați secțiunea „Suplimente” (Fig. 3).

Orez. 3. Meniul browser

6. Deschideți fila „Plugin-uri”. Vizavi de pluginul „CryptoPro CAdES NPAPI Browser Plug-in” din meniul derulant, selectați opțiunea „Activați întotdeauna” (Fig. 4).


Orez. 4. Gestionarea suplimentelor

7. Reporniți browserul.

Mozilla Firefox versiunea 52 și mai sus

Pentru a instala pluginul CryptoPro Browser urmați pașii:

  1. Urmați linkul www.cryptopro.ru/products/cades/plugin , apoi selectați „extensia browser” (Fig. 5).


Orez. 5. Site-ul web CryptoPro

2. Faceți clic pe „Permite” (Fig. 6).


Orez. 6. Solicitare rezoluție

3. Faceți clic pe „Adăugați” (Fig. 7).

postat pe 02/03/2016 în

Informatii generale

API-ul plugin implică apelarea operațiunilor asincrone implementate pe baza obiectelor promise. Puteți citi mai multe despre specificația utilizată în implementarea pluginului. Promisiunile necesită două tipuri de manipulatori:

  • onFulfilled- declanșat atunci când promisiunea este în starea „reușită”;
  • onRespins sunt concediați atunci când promisiunea este în starea „eșuată”.
Metoda generică pentru setarea handlerelor este următoarea: promise.then(onFulfilled, onRejected)

Inițializare plugin

Pentru a lucra cu pluginul, trebuie să apelați funcția de inițializare a componentei PKCS#11 plugin.initPKCS11 . Această funcție ia ca parametri o listă de nume de module (sub forma unui tablou). Puteți vedea lista modulelor furnizate. Dacă modulele nu sunt specificate, pluginul va iniția toate modulele.
Dacă este necesar să se specifice ce furnizori criptografici ar trebui să fie utilizați atunci când modulul capi rulează, trebuie utilizat următorul format de notație:

Capi:(prove1),(mod):(prove2),(mod)

În această intrare:

  • prov1, prov2 - numele furnizorului cripto. În prezent sunt acceptate următoarele valori:
    • Crypto-Pro GOST R 34.10-2001 Furnizor de servicii criptografice;
    • Crypto-Pro GOST R 34.10-2012 Furnizor de servicii criptografice;
    • Crypto-Pro GOST R 34.10-2012 Furnizor puternic de servicii criptografice;
    • Furnizor criptografic Signal-COM CPGOST;
    • Signal-COM GOST R 34.10-2012 (256) Furnizor criptografic;
    • Signal-COM GOST R 34.10-2012 (512) Furnizor criptografic;
    • Furnizor de servicii criptografice Infotecs.
  • mod – modul de afișare al ferestrei de introducere a codului PIN. Poate lua următoarele valori:
  • 0 – modul implicit furnizat de furnizorul de cripto;
  • 1 - afișarea ferestrei native a furnizorului criptografic.
    Notă: când lucrați cu Crypto-Pro pe Linux, afișarea ferestrei native a furnizorului criptografic nu este disponibilă.
  • 2 – afișarea unei ferestre în interfața pluginului.
    Notă: când lucrați cu Signal-COM, afișarea unei ferestre în interfața pluginului nu este disponibilă.

Pentru a obține chei din stocarea sistemului Windows, specificați ca furnizor , iar modul este My.
Un exemplu de inițiere a tuturor modulelor:

Plugin.initPKCS11(["ISBC ESMART", "Aladdin R.D. Unified JaCarta", "Rutoken", "SafeNet", "capi:Crypto-Pro GOST R 34.10-2001 Furnizor de servicii criptografice,0:Crypto-Pro GOST R 34.10-2012 Furnizor de servicii criptografice,0:Crypto-Pro GOST R 34.10-2012 Furnizor puternic de servicii criptografice,0:Furnizor de criptografice Signal-COM CPGOST,0:Signal-COM GOST R 34.10-2012 (256) Furnizor de criptografice,0:Signal-COM GOST R 34.10-2012 (512) Furnizor criptografic, 0: Furnizor de servicii criptografice Infotecs, 0: ,Ale mele"])

Un exemplu de inițiere a unui modul pentru a obține chei din stocarea sistemului Windows:

Plugin.initPKCS11(["capi: ,Ale mele"])

La inițializarea cu succes, funcția returnează un obiect (în continuare, folosind mecanismul promisiunii) care are modulele și funcțiile getCertsForSign.

Vizualizarea listei de module și starea acestora

Pentru a vizualiza lista modulelor și starea acestora, apelați funcția module.
Exemplu de solicitare:

Pkcs11.modules.then(onFulfilled, onRejected);

Un exemplu de răspuns al funcției (se dau pauze pentru lizibilitate):

[ ( „activare”: adevărat, „nume”: „Aladdin R.D. Unified JaCarta” ), ( „activare”: adevărat, „nume”: „Rutoken ECP” ), ( „activare”: fals, „eroare”: „100 :nu s-a putut încărca modulul p11”, „nume”: „ISBC ESMART” ) ]

Vizualizarea listei de certificate

Pentru a vizualiza lista certificatelor descoperite, apelați funcția getCertsForSign. Ca parametru de apel de funcție, trebuie să specificați dacă să utilizați modul paralel de interogare a modulelor PKCS#11 inițializate:

  • Adevărat– acces paralel la module (mod recomandat);
  • fals- Acces secvenţial la module.
Lista de certificate este o matrice (JavaScript Array) ale cărei elemente sunt obiecte de certificat. Funcțiile full_info , cms_sign_on_it și start_signing pot fi executate pe obiectul certificat.

Vizualizarea informațiilor despre un anumit certificat

Pentru a vizualiza date despre un anumit certificat, trebuie să apelați proprietatea full_info, care returnează informații despre certificat ca obiect json. Include următoarele opțiuni:

  • sn– numărul de serie al certificatului;
  • subiect– date privind subiectul căruia i-a fost eliberat acest certificat de semnătură electronică. Returnat ca json în formatul „parametru: valoare”, unde parametrul este numele identificatorului de obiect (OID) corespunzător. Tuturor identificatorilor standard de obiecte li se dau denumiri comune, cum ar fi CN (Nume comun).
  • emitent– date despre emitentul certificatului cheie de semnătură electronică. Returnat ca json în formatul „parametru: valoare”, unde parametrul este numele identificatorului de obiect (OID) corespunzător. Tuturor identificatorilor standard de obiecte li se dau denumiri comune;
  • nu inainte– ora de începere a valabilității certificatului (tip de date – șir în format ASN1_TIME);
  • nu_după– timpul de expirare a certificatului (tip de date – șir în format ASN1_TIME);
  • utilizare_cheie– informații despre scopul cheii, returnate ca un tablou.
Ora de începere/terminare a certificatului în format ASN1_TIME poate fi convertită într-un format standard utilizând noua funcție Date(ASN1_TIME).

Vizualizarea datelor de pe cheia de semnătură electronică

Pentru a vizualiza date despre o anumită cheie de semnătură electronică a unui certificat, trebuie să apelați metoda token_info. Metoda returnează un obiect json cu următoarele date:

  • eticheta– numele containerului de chei al instrumentului de semnătură electronică;
  • ID producator– identificatorul producătorului semnăturii electronice;
  • model– modelul mijloacelor de semnătură electronică;
  • număr de serie– numărul de serie al instrumentului de semnătură electronică.
Pentru cheile care funcționează prin modulul capi, datele returnate au o formă diferită. Atributul model ia întotdeauna valoarea „capi”, atributul serialNumber este absent, manufacturerID corespunde numelui furnizorului criptografic, iar label este numele containerului.

Operațiune de semnare cu certificatul selectat

Mod simplu de semnare

Pentru a semna un șir folosind certificatul selectat, trebuie să apelați funcția cms_sign_on_it, care ia următorii parametri de intrare:

  • linie de semnătură;
  • tipul semnăturii - dacă semnătura este atașată (trebuie să fie transmisă adevărat) sau detașată (fals).
Ca răspuns, funcția returnează un șir cu o semnătură în formatul CAdES-BES / PKCS#7 atașat/detașat.
Un exemplu de apelare a unei funcții care ar trebui apelată pe obiectul certificat: cms_sign_on_it("1234", 3, true).then(function(cms)(console.log(cms)));

Mod de semnare avansat

Modul avansat vă permite să:

  • semnează date de volum mare, cum ar fi fișiere;
  • semnați mai multe fișiere fără a solicita din nou codul PIN.

Pentru a semna datele cu certificatul selectat, trebuie mai întâi să inițializați obiectul semnatar folosind funcția start_signing de pe obiectul certificat. Parametrii funcției:

  • tipul semnăturii - dacă semnătura este atașată (este necesar să se transmită valoarea adevărată) sau detașată (fals);
  • numărul de încercări de a introduce un cod PIN (de exemplu, valoarea „1” înseamnă că utilizatorul are o singură încercare, după care funcția returnează o eroare).

Metodele vor fi disponibile pe obiectul semnatar:

  • add_data_in_hex(hexDataString) - acceptă date ca intrare sub forma unui șir hexadecimal;
  • add_data_in_base64(base64DataString) - acceptă date ca intrare sub forma unui șir base64;
  • add_data_in_string(stringData) - acceptă date ca intrare sub forma unui șir utf-8;
  • free() - returnează true/false , ceea ce vă permite să verificați dacă certificatul este gata pentru a fi semnat. Este necesar să fie utilizat în cazul în care se efectuează mai multe iterații de semnătură pe certificate diferite. Cu alte cuvinte, dacă semnați secvențial pe mai multe certificate, trebuie să apelați această metodă înainte de a semna și să vă asigurați că returnează true ;
  • finish() - finalizează semnătura și o returnează în format CAdES-BES / PKCS#7.
Ca răspuns, funcția returnează un șir cu o semnătură în formatul CAdES-BES / PKCS#7 atașat/detașat.

Semnarea liniei

Un exemplu de comandă care vă permite să semnați un șir:

Signer.add_data_in_string("1234").then(function(res)( return signer.finish();)).then(function(cms)(console.log(cms)));

În această comandă, „1234” este șirul care trebuie semnat.

Setarea mai multor semnături

După finalizarea semnăturii, obiectul semnatar revine la starea inițială. În cadrul unei sesiuni, poate fi reutilizat pentru a semna alte date, cum ar fi un fișier nou. În acest caz, codul PIN nu va fi solicitat din nou.

Pentru a semna pe un alt certificat, obiectul semnatar trebuie să fie șters. În majoritatea browserelor, acest obiect este șters automat când părăsește domeniul de aplicare. Cu toate acestea, există situații în Internet Explorer în care semnatarul nu este șters, rezultând o eroare. Pentru a evita eroarea, se recomandă să ștergeți în mod explicit signer.free() . Această operațiune poate fi efectuată în toate browserele pentru a unifica codul. Un exemplu de semnare a unui certificat cu ștergerea obiectului semnatar:

Funcție semn(cert, info) ( function successCms(semnătură) ( alert(semnătură); ) cert.start_signing(false, 3) .then(function(signer) ( signer.add_data_in_base64("MTIzNDU2") .then(function()) ( var data = signer.finish(); var free = signer.free(); return data; ), e) .then(successCms, e); ), e); )

Semnarea unui fișier mare

Funcția readFileByChunk(file, cbToRead, cbToFinish) ( var fileSize = file.size; var chunkSize = 1024*1024; // bytes var offset = 0; var chunkReaderBlock = null; var self = this; var readEventHandler = function(evt) if (evt.target.error == null) ( cbToRead(evt.target.result, offset, fileSize); offset += evt.target.result.byteLength; ) else ( console.error ("Eroare de citire: " + evt .target.error); showError("Eroare la citirea fișierului: " + evt.target.error); return; ) if (offset >= fileSize) ( cbToFinish() return; ) // la următoarea bucată chunkReaderBlock(offset, chunkSize , fișier); ) chunkReaderBlock = function(_offset, _chunkSize, _file) ( var r = new FileReader(); if (_file.slice) ( var blob = _file.slice(_offset, _chunkSize + _offset); ) else if (_file .webkitSlice) ( var blob = _file.webkitSlice(_offset, _chunkSize + _offset); ) else if (_file.mozSlice) ( var blob = _file.mozSlice(_offset, _chunkSize + _offset); ) r.onload = readEventHandler; readAsArrayBuffer(blo b); ) // începe să citească primul bloc chunkReaderBlock(offset, chunkSize, file); )

Trebuie remarcat faptul că, întrucât semnarea se realizează local, pentru transferul ulterior al fișierului și semnăturii selectate de utilizator către server, este necesară implementarea logicii corespunzătoare pe partea laterală a paginii web.

Pe unele site-uri trebuie să te ocupi de certificate și dongle-uri, iar la început trebuie să rezolvi diverse probleme ca să funcționeze. În acest articol, vom vorbi despre eroarea pluginului CAdES atunci când este încărcat și obiectele nu sunt create.

Rezolvarea problemei cu pluginul

După cum rezultă din conținutul erorii, pluginul CAdES în sine pare să fie încărcat; este în sistem, dar ceva interferează cu funcționarea lui. De obicei, problema apare în versiunile mai vechi de Firefox până la versiunea 51 (în versiunile mai noi, pluginul pur și simplu nu funcționează). În acest articol, o platformă de tranzacționare electronică este luată ca exemplu și există trei moduri de a rezolva problema.

Metoda 1: Activați pluginul pentru site-ul curent

Activarea pluginului numai pentru site-ul curent este justificată din motive de securitate atunci când browserul este utilizat în scopuri personale și deschiderea unei game largi de pagini. Și, de asemenea, dacă trebuie să finalizați sarcina cu chei electronice o singură dată.

Metoda 2: Activați pluginul pentru toate site-urile

Dacă problema de securitate nu este foarte îngrijorătoare, pentru că. computerul este folosit exclusiv pentru lucru pe mai multe site-uri, puteți activa pluginul CAdES pentru toate site-urile. Apoi va funcționa imediat după ce pagina este încărcată. Acest lucru vă poate ajuta și dacă nu găsiți caseta gri închis pentru a activa pluginul.

Metoda 3: Utilizarea unui browser diferit

Din anumite motive neprevăzute, pluginul CAdES poate refuza în continuare să funcționeze. Prin urmare, o altă modalitate de a rezolva eroarea este să utilizați un browser diferit. Majoritatea browserelor se bazează pe motorul Chromium, toate sunt oarecum asemănătoare, așa că să ne uităm la exemplul Google Chrome.


Concluzie

După cum puteți vedea, există mai multe modalități de a rezolva problema cu funcționarea incorectă a pluginului. În funcție de preferințele și circumstanțele tale, o poți alege pe cea care ți se potrivește cel mai bine.

) în secțiunea „Produse” -> „Plugin pentru browser CryptoPro EDS”

Când rulați fișierul descărcat, sistemul vă va solicita să ridicați drepturile administratorului de sistem. Instalarea fără drepturi de administrator nu este posibilă.

După instalare, asigurați-vă că reporniți browserul! Uneori (în cazul utilizării Chrome) este necesară o repornire a sistemului, deoarece. închiderea tuturor ferestrelor Chrome nu descarcă browserul din RAM în toate cazurile.

Setări suplimentare pentru versiunea FireFox 52.0 și ulterioară

Nu uitați să instalați pluginul

Pentru ca pluginul să funcționeze în FireFox începând cu versiunea 52, trebuie să instalați cea mai recentă versiune a pluginului (cel puțin 2.0.12888) (consultați ) și o extensie specială pentru FireFox.

Pentru a instala extensia, mergeți de la FireFox la linkul . După tranziție, vi se va solicita să instalați extensia pentru FireFox - trebuie să confirmați instalarea făcând clic pe Instalare (Instalare).

Setări suplimentare pentru versiunile FireFox anterioare 52.0, FireFox ESR (Eroare: Plugin-ul a fost încărcat, dar nu au fost create obiecte)

După instalarea suplimentului, lansarea acestuia este permisă numai după confirmarea de către utilizator. Puteți permite suplimentului să ruleze fie numai pentru site-ul curent, fie permanent pentru toate site-urile

Opțiunea 1: setarea permisiunii de utilizare a suplimentului numai pentru site-ul curent (https://www.site)

Când a apărut eroarea: Pluginul este încărcat, dar obiectele nu sunt create acordați atenție barei de adrese - pictograma suplimentului a apărut în ea:

Faceți clic pe această pictogramă - vi se va solicita să rulați suplimentul și să vă amintiți permisiunea de a rula suplimentul pentru acest site pentru totdeauna.

Opțiunea 2: setarea permisiunii de utilizare a suplimentului pentru toate site-urile

Deschideți pagina cu suplimentele FireFox instalate

Găsiți CryptoPro CAdES NPAPI Browser Plug-in în lista de suplimente și schimbați-i modul de pornire la „Always On”

Setări suplimentare pentru Opera

Deschideți pagina cu căutarea unui supliment de instalat:

Introduceți „CryptoPro” în bara de căutare - va fi găsită extensia „CryptoPro Extension for CAdES Browser Plug-in”. Faceți clic pe „Adăugați la Opera” pentru a instala.

Setări suplimentare pentru browserul Yandex

Pentru browserul Yandex, trebuie să urmați o procedură similară cu cazul Opera.

Setări suplimentare pentru Google Chrome: permisiunea suplimentului instalat

Dacă suplimentul este instalat cu succes, data viitoare când porniți Chrome, va fi afișat un mesaj care vă va cere să confirmați lansarea suplimentului

În acest dialog, trebuie să activați utilizarea extensiei

În programare, inițializarea datelor este o sarcină importantă, deoarece în acest pas setăm condițiile preliminare pentru aplicație - atribute, fișiere și date necesare, conexiune la baza de date și așa mai departe.

WordPress are o procedură de inițializare fixă. La implementarea ciclului de viață al paginii, platforma WordPress rulează o mulțime de acțiuni, multe dintre care le-am acoperit anterior. Sistemul are un set de cârlige de inițializare care sunt folosite pentru a inițializa aplicația înainte de a-și executa funcționalitatea de bază.

Este foarte important ca dezvoltatorii și designerii de teme să înțeleagă exact cum sunt folosite cârligele, precum și care sunt cele mai frecvente greșeli în utilizarea cârligelor de inițializare, pentru a crea aplicații de calitate.

În acest articol, vom acoperi importanța cârligelor de inițializare în WordPress, precum și vă vom arăta cum să le utilizați într-o varietate de situații.

Introducere în cârlige de inițializare

WordPress oferă o gamă largă de cârlige care pot fi utilizate în dezvoltarea de pluginuri și teme.

În cazul unei solicitări tipice de pagină, toate hook-urile de acțiune sunt executate într-o anumită ordine. În general, toate hook-urile sunt executate după ce aplicația de bază WordPress s-a terminat de încărcat.

Deci, cârligele de inițializare sunt folosite în principal pentru, ați putea ghici, să inițializați modul în care funcționează în pluginuri și teme. Să aruncăm o privire la cârligele init disponibile în WordPress în ordinea execuției:

  • Init este rulat după ce WordPress a terminat de încărcat, dar înainte ca orice antet să fie transmis. În general, acest cârlig este folosit de pluginuri pentru a inițializa procesul muncii lor.
  • widgets_init este folosit pentru a înregistra widget-urile aplicației în bara laterală. Funcția register_widget este executată în acest hook.
  • admin_init este executat ca prima acțiune după ce utilizatorul a accesat panoul de administrare WordPress. În general, este folosit pentru a inițializa setările specifice zonei de administrare.

În afară de aceste trei cârlige, WordPress are și un alt cârlig numit admin_bar_init care este executat după ce bara de administrare a fost inițializată. Codexul WordPress nu conține o descriere a acestui cârlig, dar este folosit doar de un număr mic de pluginuri.

Puteți afla procesul complet de execuție a cârligelor de acțiune în WordPress în codex.

WordPress execută fiecare cârlig într-o anumită ordine (care este descrisă în codex). De asemenea, este important să se ia în considerare ordinea în care apar evenimentele în fiecare cârlig de acțiune. Să ne uităm la următoarele situații pentru a înțelege diferența.

Definiți admin_init în interiorul hook-ului init

Dacă avem nevoie, putem defini hook-uri WordPress în alte hook-uri. Într-o cerere tipică, hook-ul init este executat înaintea hook-ului admin_init. Să încercăm să afișăm ceva prin plasarea admin_init în interiorul hook-ului init:

Add_action("init", "test_init"); function test_init()( add_action("admin_init", "test_admin_init"); ) function test_admin_init() ( echo "Admin Init Inside Init"; )

După executarea acestui cod, vom obține rezultatul dorit prin instrucțiunea echo.

Definiți init în hook-ul admin_init

Să ne uităm la codul și ieșirea scriptului atunci când un hook anterior este definit într-un hook care vine mai târziu în ordinea de execuție.

Add_action("admin_init", "test_admin_init"); function test_admin_init() ( add_action("init", "test_init"); ) function test_init() ( echo "Init Inside Admin Init"; )

În acest caz, nu vom obține nicio ieșire - așa cum era de așteptat - deoarece hook-ul init rulează înainte de hook-ul admin_init, care nu este permis după ce hook-ul admin_init este definit.

După cum puteți vedea, este foarte important să înțelegeți cum sunt executate hook-urile pentru a crea plugin-uri de succes. Ordinea în care apar evenimentele este importantă pentru toate hook-urile WordPress.

Examinând cârligele init și admin_init

Dintre toate cârligele de inițializare, este foarte important să acordați atenție init și admin_init, deoarece aceste două cârlige sunt folosite foarte des în multe plugin-uri. Utilizarea tuturor celorlalte cârlige de inițializare este mult mai ușoară în comparație cu aceste două cârlige.

Ne vom uita, de asemenea, la funcționalitatea cârligelor init și admin_init.

Cârligul de inițializare este executat la fiecare solicitare atât pentru front-end, cât și pentru back-end al site-ului WordPress.

Cârligul admin_init este executat după ce secțiunea de administrare și-a încheiat procesul de pornire. Deci, acest cârlig este executat pentru toate solicitările către orice pagină de administrare. Utilizatorii trebuie să fie înregistrați pentru a beneficia de acest hook.

Deoarece ambele aceste cârlige sunt executate la fiecare cerere, trebuie să ne gândim la funcționalitatea bazată pe implementarea acestor cârlige, deoarece acest lucru poate afecta semnificativ performanța site-ului.

Cum să folosiți cârligele init

Cârligele de inițializare sunt adesea folosite de majoritatea pluginurilor WordPress existente și sunt foarte importante pentru controlul procesului de execuție a acestora.

WordPress nu ne spune exact ce ar trebui și ce nu ar trebui să includem; prin urmare, dezvoltatorii pot face greșeli minore, care, la rândul lor, pot duce la o scădere vizibilă a performanței. În această secțiune, vă vom arăta cum să utilizați eficient cârligele init și admin_init.

Să aruncăm o privire la cele mai bune practici pentru utilizarea cârligelor de inițializare:

Cârlig init

  • Înregistrare personalizată a tipului de postare – Dezvoltatorii WordPress recomandă utilizarea cârligului init pentru a înregistra noi tipuri de postări personalizate.
  • Inițializați configurația și setările pluginului - Configurația și setările de configurare a pluginului trebuie definite în funcție de solicitare, așa că este o practică bună să le puneți în acest hook.
  • Accesarea datelor utilizatorului trimise (folosind $_GET și $_POST) - putem intercepta datele utilizatorului trimise fără a folosi nicio acțiune, totuși în acest caz este recomandat să folosiți hook-ul init deoarece garantează execuția fiecărei cereri.
  • Adăugarea de noi reguli de rescrire - putem seta noi reguli de rescrire folosind cârligul init, dar acestea vor funcționa numai după o resetare.
  • Adăugarea sau eliminarea acțiunilor personalizate - pluginurile conțin multe acțiuni personalizate pentru a extinde funcționalitatea. Pot exista situații în care trebuie să adăugăm acțiuni noi sau să le eliminăm pe cele vechi. În astfel de cazuri, este important să aplicați aceste acțiuni în cârligul init.
  • Încărcare domeniul textului pluginului – WordPress acceptă numeroase limbi și astfel putem încărca un fișier care conține șiruri traduse. Acest lucru ar trebui făcut și în cârligul init.

Conectați admin_init

  • Controlul accesului - Este important să verificați drepturile de acces ale utilizatorilor conectați înainte de a permite accesul utilizatorului la un anumit set de caracteristici și funcționalități. admin_init este prima acțiune care va avea loc în zona de administrare, așa că o putem folosi pentru a controla accesul.
  • Adăugarea de noi opțiuni - Putem folosi acest cârlig pentru a adăuga noi setări sau pagini de opțiuni într-o zonă de opțiuni WordPress existentă.

Există multe alte utilizări posibile pentru aceste cârlige, dar aceste caracteristici au cârlige proprii, deci nu trebuie să utilizați cârlige de inițializare.

Greșeli frecvente în utilizarea cârligelor de inițializare

Întâlnim adesea situații în care dezvoltatorii înțeleg greșit utilizarea cârligelor de inițializare. Utilizarea incorectă a acestor cârlige poate duce la probleme grave de performanță.

Să identificăm erorile comune, precum și modalitățile de a le evita:

  • Actualizarea regulilor de rescrire este o operațiune care necesită foarte mult resurse, în timpul căreia toate regulile de rescrie sunt actualizate și reordonate pentru a adăuga altele noi sau pentru a le elimina pe cele vechi care nu sunt necesare. Mulți dezvoltatori actualizează regulile de rescriere în cadrul acțiunilor init. Acest lucru are ca rezultat o suprasarcină de performanță inutilă în fiecare interogare. Trebuie să definim o modalitate de a actualiza manual regulile de rescriere folosind butoane sau de a actualiza regulile pentru acțiuni rare, cum ar fi salvarea setărilor pluginului.
  • Acces la baza de date - Pentru a implementa diverse functionalitati, trebuie sa ai acces la baza de date, dar este de asemenea important sa previi apelurile inutile la baza de date in interiorul hook-urilor de initializare, deoarece acestea sunt executate la fiecare solicitare. În acest scop, soluția ideală ar fi legarea hook-urilor bazei de date de hook-uri cu funcționalitate specifică, evitând suprasolicitarea masivă de performanță.
  • Efectuarea procedurilor de actualizare - Pluginurile ar trebui să includă proceduri de actualizare pentru a-și actualiza capacitățile în versiunile noi. De obicei, dezvoltatorii folosesc cârlige de inițializare pentru a verifica versiunea pluginului și setările existente înainte de a efectua procesul de actualizare. Putem oferi utilizatorilor să actualizeze pluginul pe un ecran separat, în loc să efectueze automat verificări la fiecare solicitare.
  • Utilizarea cârligelor de inițializare în loc de cârlige pentru funcționalități specifice este cea mai frecventă greșeală pe care o fac mulți dezvoltatori. WordPress are o gamă largă de cârlige legate de funcționalitatea unică. Este foarte important să folosiți cârlige funcționale pentru a evita conflictele și a face codul extensibil. Cârlige precum init și admin_init pot fi folosite în locul unor anumite cârlige, așa că mulți dezvoltatori tind să le folosească fără să-și dea seama de efectul devastator pe care îl au.

Exemple de cazuri obișnuite de utilizare pentru hook-urile init și admin_init de către dezvoltatori în loc de hook-urile recomandate:

  • admin_menu - Putem adăuga pagini de meniu folosind funcția add_menu_page. Pentru a crea pagini în meniul admin, este recomandat să utilizați cârligul admin_menu. Cu toate acestea, mulți dezvoltatori folosesc hook-ul admin_init deoarece este executat după hook-ul admin_menu.
  • wp_enqueue_scripts - Modul recomandat de a adăuga stiluri și script-uri este să utilizați hook-ul wp_enqueue_scripts. Cu toate acestea, mulți dezvoltatori folosesc wp_enqueue_script în interiorul cârligului init pentru a încărca scripturi și stiluri.

Există o mulțime de situații similare în care dezvoltatorii folosesc un cârlig de initizare generic în loc de un cârlig specific pentru o funcționalitate specifică și această abordare ar trebui evitată dacă este posibil.

Concluzie

Cârligele de inițializare WordPress joacă un rol vital în dezvoltarea pluginurilor și a temelor. Mulți dezvoltatori folosesc cârlige incorect, creând o performanță inutilă. În acest articol, am discutat despre utilizarea corectă a acestor cârlige, precum și despre erorile comune în utilizarea lor și despre cum să le rezolvăm.

Acum putem aplica aceleași tehnici la cârligele utilizate în pluginuri. Mulți dezvoltatori de pluginuri își folosesc propriile cârlige de acțiune pentru a face pluginurile extensibile. Pentru astfel de pluginuri, putem defini cârlige de inițializare specifice pluginului pentru a permite dezvoltatorilor să „atârne” sarcinile de inițializare pe cârlige predefinite.