Instaliranje dodatka CryptoPro CSP u pregledniku Mozilla Firefox. Ispravljanje pogreške „Dodatak je učitan, ali se objekti ne stvaraju. Ažuriranje internetskog preglednika

💖 Sviđa li vam se? Podijelite vezu sa svojim prijateljima

Pravila instalacije dodataka CryptoPro CSP V Mozilla Firefox razlikuju ovisno o verziji preglednika - 52 i novijoj ili starijoj.

Inačice Mozilla Firefox ispod 52

Za potpisivanje dokumenata u Mozilla Firefoxu:

  • Onemogući automatsko ažuriranje. Da biste to učinili, idite na “Izbornik” ⇒ “Postavke” ⇒ “Dodatno” ⇒ “Ažuriranja” (slika 1).
Riža. 1. Lokacija postavki ažuriranja u Mozilla Firefoxu
  • Instalirajte verziju 51.0.1 sa službene web stranice Mozilla Firefox.

Za ugradnju CryptoPro preglednik plug-ina trebate slijediti ove korake:

  1. Preuzmite instalacijski program sa službene web stranice tvrtke Crypto-Pro www.cryptopro.ru/products/cades/plugin i pokrenite izvršnu datoteku.

2. U instalacijskom prozoru za CryptoPro Browser plug-in, kliknite gumb "Yes" (Slika 2-a).

Riža. 2-a. Instaliranje CryptoPro dodatka za preglednik

3. Pričekajte da instalacija završi (Slika 2-b).

Riža. 2-b. Instaliranje CryptoPro dodatka za preglednik

4. Pritisnite gumb “Ok” i ponovno pokrenite internetski preglednik (Slika 2-c).

Riža. 2-in. Instaliranje CryptoPro dodatka za preglednik

Važno

Nakon instaliranja CryptoPropreglednik utikač- upotrebno je provjeriti je li u vašem pregledniku instaliran dodatak za rad s elektroničkim potpisima CryptoPro EDS Browser plug-in za preglednike.

5. Otvorite preglednik, kliknite gumb "Izbornik preglednika", odaberite odjeljak "Dodaci" (Slika 3).

Riža. 3. Izbornik preglednika

6. Otvorite karticu "Dodaci". Nasuprot dodatka “CryptoPro CAdES NPAPI Browser Plug-in” u padajućem izborniku odaberite opciju “Always enable” (Slika 4).


Riža. 4. Upravljanje dodacima

7. Ponovno pokrenite preglednik.

Mozilla Firefox verzija 52 i novija

Da biste instalirali CryptoPro Browser plug-in, slijedite ove korake:

  1. Slijedite vezu www.cryptopro.ru/products/cades/plugin, a zatim odaberite "proširenje preglednika" (Slika 5).


Riža. 5. CryptoPro web stranica

2. Pritisnite “Dopusti” (Slika 6).


Riža. 6. Zatražite rješenje

3. Pritisnite “Dodaj” (Slika 7).

) u odjeljku "Proizvodi" -> "CryptoPro EDS Browser plug-in"

Kada pokrenete preuzetu datoteku, sustav će od vas tražiti da povećate svoja prava na administratora sustava. Instalacija bez administratorskih prava nije moguća.

Nakon instalacije svakako ponovno pokrenite preglednik! Ponekad je (u slučaju korištenja Chromea) potrebno ponovno pokretanje sustava jer... zatvarajući sve kromirani prozori ne prazni preglednik iz RAM-a u svim slučajevima.

Dodatne postavke za FireFox verziju 52.0 i novije

Ne zaboravite instalirati dodatak

Da bi dodatak radio u FireFoxu počevši od verzije 52, morate instalirati najnoviju verziju dodatka (ne nižu od 2.0.12888) (pogledajte) i posebno proširenje za FireFox.

Da biste instalirali ekstenziju, slijedite vezu s vašeg FireFoxa. Nakon prijelaza, od vas će se tražiti da instalirate proširenje za FireFox - morate potvrditi instalaciju klikom na Instaliraj.

Dodatne postavke za verzije FireFoxa do 52.0, FireFox ESR (Pogreška: dodatak je učitan, ali se objekti ne stvaraju)

Nakon instaliranja dodatka, njegovo pokretanje dopušteno je tek nakon potvrde korisnika. Možete dopustiti da se dodatak izvodi ili samo za trenutnu stranicu ili zauvijek za sve stranice

Opcija 1: postavljanje dopuštenja za korištenje dodatka samo za trenutno web mjesto (https://www.site)

Kada je došlo do greške: Dodatak je učitan, ali se objekti ne stvaraju Obratite pozornost na adresnu traku - u njoj se pojavila ikona dodatka:

Kliknite na ovu ikonu - od vas će se tražiti da pokrenete dodatak i zauvijek zapamtite dozvolu za pokretanje dodatka za ovu stranicu.

Opcija 2: postavljanje dopuštenja za korištenje dodatka za sve stranice

Otvorite stranicu s instaliranim Dodaci za FireFox

Na popisu dodataka pronađite CryptoPro CAdES NPAPI Browser Plug-in i promijenite njegov način pokretanja u "Always Enable"

Dodatne postavke za Operu

Otvorite stranicu koja traži dodatak za instalaciju:

Unesite "CryptoPro" u traku za pretraživanje - pronaći će se proširenje "CryptoPro Extension for CAdES Browser Plug-in". Kliknite "Dodaj u Operu" za instalaciju.

Dodatne postavke za Yandex preglednik

Za preglednik Yandex morate slijediti postupak sličan slučaju s Operom.

Dodatne postavke za Google Chrome: dopuštenje instalirani dodatak

Ako je dodatak uspješno instaliran, sljedeći put pokretanje Chromea prikazat će se poruka u kojoj se traži da potvrdite pokretanje dodatka

U ovom dijaloškom okviru morate dopustiti korištenje proširenja

Objavljeno na 03.02.2016 u

Opće informacije

Programsko sučelje dodatka uključuje pozivanje asinkronih operacija implementiranih na temelju obećanih objekata. Možete pročitati više o specifikaciji korištenoj u implementaciji dodatka. Morate instalirati dvije vrste rukovatelja obećanjima:

  • onIspunjeno– aktivirati kada je obećanje u stanju “uspješno”;
  • onOdbijeno– aktivirati kada je obećanje u stanju "dovršeno s pogreškom".
Univerzalna metoda za postavljanje rukovatelja je sljedeća: promise.then(onFulfilled, onRejected)

Inicijalizacija dodatka

Za rad s dodatkom morate pozvati funkciju inicijalizacije komponente PKCS#11 plugin.initPKCS11 . Ova funkcija uzima popis imena modula (u obliku niza) kao parametre. Popis ponuđenih modula može se pogledati. Ako moduli nisu navedeni, dodatak će pokrenuti sve module.
Ako trebate naznačiti koje kripto pružatelje treba koristiti prilikom pokretanja capi modula, trebali biste koristiti sljedeći format snimanja:

Capi:(prov1),(mode):(prov2),(mode)

U ovom unosu:

  • prov1, prov2 – naziv kriptoprovajdera. Trenutno su podržane sljedeće vrijednosti:
    • Crypto-Pro GOST R 34.10-2001 Pružatelj kriptografskih usluga;
    • Crypto-Pro GOST R 34.10-2012 Davatelj kriptografskih usluga;
    • Crypto-Pro GOST R 34.10-2012 Snažan pružatelj kriptografskih usluga;
    • Signal-COM CPGOST kriptografski pružatelj;
    • Signal-COM GOST R 34.10-2012 (256) Kriptografski pružatelj;
    • Signal-COM GOST R 34.10-2012 (512) Kriptografski pružatelj;
    • Infotecs pružatelj kriptografskih usluga.
  • način – način prikaza prozora za unos PIN koda. Može uzeti sljedeće vrijednosti:
  • 0 – zadani način rada koji pruža kripto pružatelj;
  • 1 – prikaz prozora izvornog kriptoprovajdera.
    Napomena: kada radite s Crypto-Pro na Linuxu, prikazivanje izvornog prozora kripto davatelja nije dostupno.
  • 2 – prikazuje prozor u sučelju dodatka.
    Napomena: kada radite sa Signal-COM, prikazivanje prozora u sučelju dodatka nije dostupno.

Za dobivanje ključeva iz pohrane sustava Windows trebate navesti , a način rada je Moj.
Primjer pokretanja svih modula:

Plugin.initPKCS11(["ISBC ESMART", "Aladdin R.D. Unified JaCarta", "Rutoken", "SafeNet", "capi:Crypto-Pro GOST R 34.10-2001 Davatelj kriptografskih usluga,0:Crypto-Pro GOST R 34.10-2012 Davatelj kriptografskih usluga,0:Crypto-Pro GOST R 34.10-2012 Snažan pružatelj kriptografskih usluga,0:Signal-COM CPGOST Davatelj kriptografskih usluga,0:Signal-COM GOST R 34.10-2012 (256) Davatelj kriptografskih usluga,0:Signal-COM GOST R 34.10-2012 (512) Davatelj kriptografskih usluga,0: Davatelj kriptografskih usluga Infotecs,0: ,Moj"])

Primjer pokretanja modula za dobivanje ključeva iz pohrane sustava Windows:

Plugin.initPKCS11(["capi: ,Moj"])

Nakon uspješne inicijalizacije, funkcija vraća objekt (u daljnjem tekstu korištenjem mehanizma obećanja) koji ima module i funkcije getCertsForSign.

Pregled popisa modula i njihovog statusa

Za pregled popisa modula i njihovog statusa potrebno je pozvati funkciju modula.
Primjer zahtjeva:

Pkcs11.modules.then(onFulfilled, onRejected);

Primjer odgovora funkcije (prekidi su dati radi lakšeg čitanja):

[ ( "enable": true, "name": "Aladdin R.D. Unified JaCarta" ), ( "enable": true, "name": "Rutoken ECP"), ( "enable": false, "error": "100 :nije uspjelo učitavanje p11 modula", "name": "ISBC ESMART" ) ]

Pogledajte popis certifikata

Za pregled popisa otkrivenih certifikata morate pozvati funkciju getCertsForSign. Kao parametar poziva funkcije, morate navesti treba li se koristiti paralelni način prozivanja inicijaliziranih PKCS#11 modula:

  • pravi– paralelni pristup modulima (preporučeni način);
  • lažno– sekvencijalni pristup modulima.
Popis certifikata je niz (JavaScript Array), čiji su elementi objekti certifikata. Funkcije full_info, cms_sign_on_it i start_signing mogu se izvršiti na objektu certifikata.

Pogledajte informacije o određenom certifikatu

Da biste vidjeli informacije o određenom certifikatu, trebate pozvati svojstvo full_info, koje vraća informacije o certifikatu kao json objekt. Uključuje sljedeće parametre:

  • s nserijski broj potvrda;
  • subjekt– podatke o subjektu kojem je izdana ova potvrda Elektronički potpis. Vraća se kao json u formatu "parametar: vrijednost", gdje je parametar naziv odgovarajućeg identifikatora objekta (OID). Svi standardni identifikatori objekata dobivaju zajedničke oznake, na primjer, CN (Common Name).
  • izdavatelj– podatke o izdavatelju certifikata ključa elektroničkog potpisa. Vraća se kao json u formatu "parametar: vrijednost", gdje je parametar naziv odgovarajućeg identifikatora objekta (OID). Svi standardni identifikatori objekata dobivaju zajedničke oznake;
  • ne prije– vrijeme početka valjanosti certifikata (tip podatka – niz u formatu ASN1_TIME);
  • ne_poslije– vrijeme isteka certifikata (tip podatka – niz u formatu ASN1_TIME);
  • upotreba_ključa– informacije o namjeni ključa vraćaju se kao niz.
Vrijeme početka/završetka certifikata u formatu ASN1_TIME može se pretvoriti u standardni format pomoću nove funkcije Date(ASN1_TIME).

Pregled podataka o ključu elektroničkog potpisa

Da biste vidjeli informacije o određenom ključu digitalnog potpisa za certifikat, morate pozvati metodu token_info. Metoda vraća json objekt sa sljedećim podacima:

  • označiti– naziv spremnika ključa alata za elektronički potpis;
  • ID proizvođača– identifikator proizvođača alata za elektronički potpis;
  • model– model alata za elektronički potpis;
  • serijski broj– serijski broj alata za elektronički potpis.
Za ključeve koji rade kroz capi modul, vraćeni podaci imaju drugačiji oblik. Atribut modela uvijek ima vrijednost "capi", atribut serialNumber je odsutan, producentID odgovara nazivu kriptoprovajdera, a label je naziv spremnika.

Operacija potpisivanja pomoću odabranog certifikata

Jednostavan način potpisivanja

Da biste potpisali niz pomoću odabranog certifikata, morate pozvati funkciju cms_sign_on_it koja prihvaća sljedeće ulazne parametre:

  • crta za potpis;
  • vrsta potpisa - da li je potpis priložen (mora biti istinit) ili odvojen (netočan).
Kao odgovor, funkcija vraća niz s potpisom u CAdES-BES / PKCS#7 priloženom/odvojenom formatu.
Primjer poziva funkcije koju treba pozvati na objektu certifikata: cms_sign_on_it("1234", 3, true).then(function(cms)(console.log(cms)));

Napredni način potpisivanja

Napredni način rada omogućuje vam sljedeće:

  • potpisati velike količine podataka, poput datoteka;
  • potpišite više datoteka bez ponovnog traženja PIN koda.

Da biste potpisali podatke pomoću odabranog certifikata, prvo morate inicijalizirati objekt potpisnika pomoću funkcije start_signing na objektu certifikata. Parametri funkcije:

  • vrsta potpisa - da li je potpis priložen (mora biti istinit) ili odvojen (netočan);
  • broj pokušaja unosa PIN koda (npr. vrijednost “1” znači da korisnik ima samo jedan pokušaj, nakon čega funkcija vraća pogrešku).

Sljedeće metode bit će dostupne na objektu potpisnika:

  • add_data_in_hex(hexDataString) - prihvaća podatke kao ulaz kao heksadecimalni niz;
  • add_data_in_base64(base64DataString) - prihvaća podatke kao ulaz kao niz base64;
  • add_data_in_string(stringData) - prihvaća ulazne podatke u obliku utf-8 niza;
  • free() - vraća true/false, što vam omogućuje da provjerite je li certifikat spreman za potpisivanje. Potrebno je koristiti u slučaju kada se nekoliko ponavljanja potpisa provodi na različitim certifikatima. Drugim riječima, ako se sekvencijalno potpisivanje provodi na nekoliko certifikata, tada prije potpisivanja morate pozvati ovu metodu i provjeriti vraća li true;
  • finish() - finalizira potpis i vraća ga u CAdES-BES / PKCS#7 formatu.
Kao odgovor, funkcija vraća niz s potpisom u CAdES-BES / PKCS#7 priloženom/odvojenom formatu.

Potpisivanje retka

Primjer naredbe za potpisivanje niza:

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

U ovoj naredbi, "1234" je redak koji treba potpisati.

Instaliranje više potpisa

Nakon što je potpis finaliziran, vraća se objekt potpisnika početno stanje. Može se ponovno koristiti unutar sesije za potpisivanje drugih podataka, na primjer nove datoteke. U tom slučaju PIN kod se više neće tražiti.

Da biste se potpisali na drugom certifikatu, morate izbrisati objekt potpisnika. U većini preglednika ovaj se objekt automatski briše kada napusti opseg. Međutim, u Internet Explorer Mogu postojati situacije u kojima potpisnik nije odobren, što dovodi do pogreške. Da biste izbjegli pogrešku, preporučuje se eksplicitno brisanje signer.free() . Ova operacija može se provesti u svim preglednicima kako bi se objedinio kod. Primjer potpisa na certifikatu s izbrisanim objektom potpisnika:

Funkcija sign(cert, info) ( function successCms(signature) ( alert(signature); ) 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); )

Potpisivanje velike datoteke

Funkcija 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("Pogreška čitanja: " + evt .target.error); showError("Pogreška pri čitanju datoteke: " + evt.target.error); return; ) if (offset >= fileSize) ( cbToFinish() return; ) // do sljedećeg dijela chunkReaderBlock(offset, chunkSize , datoteka); ) 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; r. readAsArrayBuffer(blob); ) // početak čitanja prvog bloka chunkReaderBlock(offset, chunkSize, file); )

Treba napomenuti da se s obzirom da se potpisivanje provodi lokalno, za naknadni prijenos datoteke i potpisa od strane korisnika na poslužitelj potrebno je implementirati odgovarajuću logiku sa strane web stranice.

Bok svima! Zasigurno bi mnogi korisnici mogli vidjeti pogrešku "Nije uspjelo učitavanje dodatka" na zaslonu monitora kada reprodukuju online audio, video ili kada pokušavaju pokrenuti neku vrstu flash animacije (igrica, banner, aplikacija itd.). Ako ste došli na ovu stranicu, najvjerojatnije ste vidjeli sličnu pogrešku. Danas ćemo u ovom kratkom uputstvu otkloniti grešku “ Učitavanje dodatka nije uspjelo» u pregledniku brzo i jednostavno.

Prvo, prijatelji, shvatimo što je dodatak pregledniku. Dodatak je, drugim riječima, dodatak koji proširuje mogućnosti internetskog preglednika. Danas postoji ogroman broj dodataka i svi su u različitim smjerovima. Svaki preglednik ima instalirane osnovne dodatke za ispravan prikaz web resursa. Ako se u vašem pregledniku pojavi poruka da se dodatak ne može učitati, najvjerojatnije je problem u tome Flash Player. U nastavku ćemo pogledati nekoliko načina na koje možete popraviti ovu grešku.

1. metoda. Ažuriranje internetskog preglednika

Ova metoda je najjednostavnija i pomaže u većini slučajeva. Pokazat ću sve manipulacije na primjeru popularnog preglednika Google Chrome. Ako koristite drugi preglednik, ne brinite, svi su koraci isti. Dakle, kako biste ažurirali preglednik, idite na izbornik - Pomoć - O pregledniku.


Na stranici "O programu" pronađite i kliknite na gumb "Ažuriraj".


Nakon ažuriranja provjerite pojavljuje li se ponovno pogreška "Učitavanje dodatka nije uspjelo". Ako ovi koraci nisu pomogli u rješavanju problema, prijeđite na sljedeću metodu.

2. metoda. Brisanje povijesti u pregledniku

Ova će metoda pomoći kada se takva pogreška pojavljuje samo na nekim resursima. Prilično je jednostavno - trebate očistiti predmemoriju i kolačiće u svom pregledniku.

Predmemorija – privremene datoteke preglednika koje pohranjuju sve web komponente pogledanih izvora (slike, stranice, video datoteke, dizajn itd.). Zahvaljujući predmemoriji, preglednik brzo učitava stranice prethodno posjećenih web stranica, budući da se komponente resursa učitavaju ne putem Interneta, već s lokalni disk Računalo.

Kolačići su također privremene datoteke koje pohranjuju osobne podatke korisnika (prijave, lozinke, postavke web stranice itd.). Kada odemo na bilo koju stranicu, preglednik šalje sve te podatke poslužitelju, pa stoga možemo pristupiti bilo kojem resursu bez ponovnog unosa prijave i lozinke za autorizaciju.

Dakle, izbrišite predmemoriju i kolačiće u našem pregledniku kako bismo pokušali riješiti pogrešku. Idite na izbornik, odaberite "Povijest".


Zatim kliknite na gumb "Izbriši povijest" i pažljivo provjerite jesu li potvrdni okviri označeni, kao što je prikazano na slici ispod.


Nakon toga preostaje samo ponovno pokrenuti preglednik.

3. metoda. Onemogućavanje nepotrebnih dodataka

Ako prve dvije metode nisu pomogle, nastavite s onemogućavanjem dodatnog dodatka. Prije svega, otvorimo stranicu s instaliranim dodacima. Adresa je različita za svaki preglednik:

Ako koristite Chrome, upišite chrome://plugins u adresnu traku
Ako koristite Yandex, unesite browser://plugins u adresnu traku
Ako koristite Operu, upišite opera://plugins u adresnu traku
Ako koristite Firefox, upišite about:plugins u adresnu traku


Kada se otvori stranica s dodacima, bolje pogledajte ima li još koji Flash dodatak Igrač. Ako postoji, preporučujem da ga onemogućite (obično je tipa PPAPI).


Nakon prekida veze ponovno pokrenite preglednik i ponovno provjerite.

4. metoda. Ponovno instaliranje Adobe Flash Playera

Ako nijedna od gore opisanih metoda nije pomogla, savjetujem vam da ponovno instalirate Adobe Flash Player. Da biste to učinili, prvo uklonite stara verzija flash player u Upravljačkoj ploči - Programi i značajke. Zatim preuzmite Najnovija verzija Adobe Flash Player sa službene web stranice.


Nadam se mojim malim uputama o ispravljanju pogreške " Učitavanje dodatka nije uspjelo"pomogao ti. Ako ste riješili ovaj problem na bilo koji drugi način, možete napisati u komentarima, ovo će pomoći mnogim korisnicima! Hvala na pažnji i svako dobro!

U programiranju je inicijalizacija podataka važan zadatak jer u ovom koraku definiramo preduvjete za aplikaciju - atribute, potrebne datoteke i podatke, vezu s bazom podataka itd.

WordPress ima fiksnu proceduru inicijalizacije. Prilikom provedbe životni ciklus stranicama, platforma WordPress pokreće mnogo akcija, od kojih smo mnoge već obradili. Sustav ima skup inicijalizacijskih kuka koje se koriste za inicijalizaciju aplikacije prije izvršavanja njezine osnovne funkcije.

Kako bi izradili kvalitetne aplikacije, vrlo je važno da programeri i dizajneri tema razumiju kako se točno hookovi koriste, kao i koje su najčešće pogreške pri korištenju inicijalizacijskih hookova.

U ovom ćemo članku pokriti važnost inicijalizacijskih kuka u WordPressu i pokazati vam kako ih koristiti u raznim situacijama.

Uvod u inicijalizacijske kuke

WordPress nudi širok raspon kukica koje se mogu koristiti u razvoju dodataka i tema.

U slučaju tipičnog zahtjeva stranice, sve akcijske kuke se izvršavaju određenim redoslijedom. Općenito, svi hookovi se izvršavaju nakon što osnovna WordPress aplikacija završi s učitavanjem.

Dakle, kuke za inicijalizaciju se uglavnom koriste za, kao što možete pretpostaviti, inicijalizaciju procesa njihovog rada u dodacima i temama. Pogledajmo dostupne init hookove u WordPressu prema redoslijedu izvođenja:

  • Init se aktivira nakon što WordPress završi s učitavanjem, ali prije prosljeđivanja zaglavlja. Općenito, ovu kuku koriste dodaci za pokretanje svog radnog procesa.
  • widgets_init se koristi za registriranje widgeta aplikacije na bočnoj traci. Funkcija register_widget izvršava se unutar ove kuke.
  • admin_init se izvršava kao prva radnja nakon što korisnik pristupi WordPress administratorskoj ploči. Općenito, koristi se za pokretanje postavki specifičnih za područje administratora.

Osim ove tri kuke, WordPress također ima još jednu kuku pod nazivom admin_bar_init, koja se izvršava nakon što se inicijalizira administratorska traka. WordPress Codex ne sadrži opis ovog hooka, ali ga koristi samo mali broj dodataka.

U kodeksu možete naučiti cijeli postupak izvođenja akcijskih kuka u WordPressu.

WordPress izvršava svaku kuku određenim redoslijedom (koji je opisan u kodu). Također je važno uzeti u obzir redoslijed kojim se događaji pojavljuju u svakoj akcijskoj kuki. Pogledajmo sljedeće situacije kako bismo razumjeli razliku.

Definiranje admin_init unutar init kuke

Ako je potrebno, možemo definirati WordPress hookove unutar drugih hookova. U tipičnom zahtjevu, init hook se izvršava prije admin_init hook. Pokušajmo prikazati nešto na ekranu postavljanjem admin_init unutar init kuke:

Add_action("init", "test_init"); funkcija test_init())( add_action("admin_init", "test_admin_init"); ) funkcija test_admin_init() ( echo "Admin Init unutar Init"; )

Nakon izvršenja ovog koda, dobit ćemo željeni izlaz kroz naredbu echo.

Definiranje pokretanja unutar kuke admin_init

Pogledajmo kod i izlaz skripte kada je ranija kuka definirana u kuki koja dolazi kasnije u redoslijedu izvršenja.

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

U ovom slučaju, nećemo dobiti nikakav izlaz - kao što je očekivano - jer se init hook izvršava prije admin_init hooka, što nije dopušteno nakon što je admin_init hook definiran.

Kao što vidite, vrlo je važno razumjeti proceduru za izvršavanje kuka za stvaranje uspješnih dodataka. Redoslijed pojavljivanja događaja važan je za sve WordPress kuke.

Istražimo init i admin_init kuke

Među svim inicijalizacijskim kukama, vrlo je važno obratiti pozornost na init i admin_init, jer se ove dvije kuke vrlo često koriste u mnogim dodacima. Korištenje svih ostalih inicijalizacijskih kuka puno je jednostavnije u usporedbi s ove dvije kuke.

Također ćemo pogledati funkcionalnost init i admin_init kuka.

Init hook se izvršava na svaki zahtjev za frontend i backend WordPress stranice.

Priključak admin_init se izvršava nakon što odjeljak admin dovrši svoj proces pokretanja. Dakle, ova kuka se izvršava za sve zahtjeve bilo kojoj administratorskoj stranici. Korisnici moraju biti registrirani kako bi mogli iskoristiti ovu udicu.

Budući da se obje ove kuke izvršavaju na svaki zahtjev, moramo u skladu s tim razmotriti funkcionalnost temeljenu na implementaciji ovih kuka, budući da to može imati značajan utjecaj na izvedbu stranice.

Kako koristiti init kuke

Inicijalizacijske kuke često koristi većina postojećih WordPress dodataka, a vrlo su važne za upravljanje procesom njihovog izvođenja.

WordPress nam ne govori točno što trebamo, a što ne trebamo uključiti; Stoga programeri mogu napraviti manje pogreške, što zauzvrat može dovesti do značajnog smanjenja performansi. U ovom odjeljku pokazat ćemo vam kako učinkovito koristiti zakačke init i admin_init.

Pogledajmo najbolje prakse za korištenje inicijalizacijskih kuka:

init kuka

  • Registriranje prilagođenih vrsta postova – WordPress programeri preporučuju korištenje init hooka za registraciju novih prilagođenih tipova postova.
  • Pokretanje konfiguracije i postavki dodatka – Konfiguracija i opcije konfiguracije dodatka moraju se definirati za svaki zahtjev, što znači da je dobra praksa smjestiti ih unutar ove kuke.
  • Pristup dostavljenim korisničkim podacima (pomoću $_GET i $_POST) – Možemo presresti dostavljene korisničke podatke bez ikakvih radnji, no u ovom slučaju preporuča se korištenje init hooka jer jamči izvršenje za svaki zahtjev.
  • Dodavanje novih pravila ponovnog pisanja - možemo definirati nova pravila ponovnog pisanja koristeći init hook, no ona će raditi samo nakon resetiranja.
  • Dodavanje ili uklanjanje prilagođenih radnji – dodaci sadrže mnoge prilagođene radnje za proširenje funkcionalnosti. Mogu se pojaviti situacije kada trebamo dodati nove akcije ili ukloniti stare. U takvim slučajevima, važno je primijeniti ove radnje u init hooku.
  • Učitavanje domene teksta dodatka – WordPress podržava brojne jezike i stoga možemo prenijeti datoteku koja sadrži prevedene nizove. Ovo također treba učiniti u init kuki.

admin_init kuka

  • Kontrola pristupa – Važno je provjeriti prava pristupa prijavljenih korisnika prije nego što korisniku dopustite pristup određenom skupu značajki i funkcionalnosti. admin_init je prva akcija koja će se izvršiti u administratorskom području, tako da je možemo koristiti za kontrolu pristupa.
  • Dodavanje novih opcija – Ovu kuku možemo koristiti za dodavanje novih stranica s postavkama ili opcija u postojeće područje opcija WordPressa.

Postoje mnogi drugi moguće opcije korištenje ovih kuka, međutim ove značajke također imaju svoje kuke, tako da inicijalizacijske kuke nisu potrebne.

Uobičajene zamke pri korištenju kukica za inicijalizaciju

Često se susrećemo sa situacijama u kojima programeri krivo razumiju upotrebu inicijalizacijskih kuka. Neispravna upotreba ovih kuka može uzrokovati ozbiljne probleme s izvedbom.

Identificirajmo uobičajene pogreške, kao i načine kako ih zaobići:

  • Ažuriranje pravila ponovnog pisanja je operacija koja zahtijeva mnogo resursa u kojoj se sva pravila ponovnog pisanja ažuriraju i mijenjaju redoslijed kako bi se dodala nova ili uklonila stara koja nisu potrebna. Mnogi programeri ažuriraju pravila prepisivanja unutar init akcija. To rezultira nepotrebnim opterećenjem izvedbe na svakom upitu. Moramo odrediti način ručno ažuriranje prepisivanje pravila pomoću gumba ili ažuriranje pravila za rijetke radnje, kao što je spremanje postavki dodatka.
  • Pristup bazi podataka – Za implementaciju raznih funkcija, morate imati pristup bazi podataka, ali također je važno spriječiti nepotrebne pozive baze podataka unutar inicijalizacijskih kuka, budući da se one izvršavaju na svaki zahtjev. U tu bi svrhu idealno rješenje bilo vezati kuke baze podataka za kuke s specifičnom funkcionalnošću, izbjegavajući goleme troškove izvedbe.
  • Implementirajte postupke ažuriranja – dodaci bi trebali uključivati ​​postupke ažuriranja kako bi njihove mogućnosti bile ažurne u novim verzijama. Obično programeri koriste inicijalizacijske kuke za provjeru verzije dodatka i postojećih parametara prije izvođenja procesa ažuriranja. Korisnicima možemo dopustiti ažuriranje dodatka na zasebnom zaslonu umjesto automatskog pokretanja provjera na svaki zahtjev.
  • Korištenje inicijalizacijskih kuka umjesto kuka za specifične funkcije najčešća je pogreška koju čine mnogi programeri. WordPress ima širok raspon kukica koje pružaju jedinstvenu funkcionalnost. Važno je koristiti funkcijske spojnice kako biste izbjegli sukobe i učinili svoj kod proširivim. Kuke kao što su init i admin_init mogu se koristiti umjesto specifičnih kuka, tako da ih mnogi programeri koriste ne shvaćajući destruktivan učinak koji imaju.

Primjeri uobičajenih scenarija u kojima programeri koriste init i admin_init kuke umjesto preporučenih kuka:

  • admin_menu – Možemo dodati stranice izbornika pomoću funkcije add_menu_page. Za izradu stranica u administratorskom izborniku preporučuje se korištenje kuke admin_menu. Međutim, mnogi programeri koriste kuku admin_init jer se pokreće nakon kuke admin_menu.
  • wp_enqueue_scripts - Preporučeni način dodavanja stilova i skripti je korištenje kuke wp_enqueue_scripts. Međutim, mnogi programeri koriste wp_enqueue_script unutar init hooka za učitavanje skripti i stilova.

Postoje mnoge slične situacije u kojima programeri koriste generičku početnu kuku umjesto specifične kuke za određenu funkcionalnost, a ovaj pristup treba izbjegavati ako je moguće.

Zaključak

WordPress init kuke igraju vitalnu ulogu u razvoju dodataka i tema. Mnogi razvojni programeri neispravno koriste kuke, stvarajući nepotrebno povećanje performansi. U ovom smo članku raspravljali o pravilnoj upotrebi ovih udica uobičajene pogreške njihove upotrebe i načine da ih se zaobiđe.

Sada možemo primijeniti iste tehnike na kuke koje se koriste u dodacima. Mnogi programeri dodataka koriste vlastite akcijske kuke kako bi dodatke učinili proširivim. Za takve dodatke možemo definirati kuke za inicijalizaciju specifične za dodatak kako bismo programerima omogućili da "okače" zadatke inicijalizacije na unaprijed definirane kuke.



reci prijateljima