Lazy Load Images - Lazy Load dodaci za WordPress. Najbolji način za omogućavanje dodataka za PHP aplikaciju Tromi php dodatak

  • 20.06.2020

Funkcijska datoteka je zabavni pomoćnik u proširenju funkcionalnosti web stranice! pogotovo ako se koristi za namjeravanu namjenu - međutim, mnogi vlasnici blogova / web stranica izvrsno pretvaraju functions.php u hodgepodge.

U svakom poslu postoje svrsishodnost i ograničenja (ograničenja, često logična), pa bi stoga neki izvršni kod dizajniran za prilagodbu parametara jezgre WP -a (ne teme) bilo ispravnije premjestiti izvan predloška ...

Kad se radi o modernizaciji funkcionalnosti web stranice, u niz članaka "bez dodataka ..." svakako se savjetuje da se svi blokovi koda ubace u legendarne funkcije.php. Nije u redu!

Logičnije je prenijeti sva čisto tehnička proširenja (koja nisu izravno povezana sa stilom predloška) u dodatak organiziran za njihovu registraciju.

Kreirajmo ga! a također razgovarati o prednostima i nedostacima (kojih je puno manje) ...


Odjeljci članka:

kako stvoriti svoj dodatak

iz donjeg teksta naučit ćemo kako vlastitim rukama stvoriti vlastiti dodatak: razumjet ćemo sve detalje, nijanse. Doznat ćemo koje su prednosti i nedostaci (ima manje nedostataka !! i radije, to uopće nisu nedostaci, već jedna ili druga svrha za svakog administratora)

koja je razlika između datoteke functions.php i dodatka

Zašto bi se neki kôd koji se odnosi izravno na funkcionalnost web stranice premjestio na zasebni dodatak?

Sama funkcionalna datoteka, njezina svrha i dosljednost ne razlikuju se od dodatka (jednostavno dodatak u temi))! - njegov je glavni zadatak obogatiti određeni (aktivni) predložak korisnom funkcionalnošću.

Na primjer, "navigacija", gdje je, logično, izbornik gumba stiliziran s CSS -om u skladu sa stilom aktivne teme - možda bi bilo ispravnije ostaviti ga u korijenu predloška.

Koja je korist - podijeliti datoteku funkcija u zasebne datoteke ili zaseban dodatak?

Na primjer, najčešće mjesto - odlučili ste promijeniti predložak!? ... kao rezultat toga, svi funkcionalni razvoji bit će izgubljeni, jer se sav korisni kod nalazi u datoteci funkcija (jednom sam vidio takvu datoteku veličine 750KILO)

Naravno, dokumentaciju funkcija možete prenijeti na novu temu, ali prije svega bez izmjena koje oduzimaju puno korisnog vremena to ne možete učiniti: majmun i posao)

I onda:

redoslijed učitavanja datoteka web mjesta

Ukratko: redoslijed učitavanja jezgri web stranice u našem primjeru je sljedeći - aktivni dodaci web stranice (iz mape plugins) i njihov sadržaj učitavaju se nešto ranije, a tek tada je datoteka functions.php sa sadržajem obrađeno. Sve je to u milisekundama, a o samom postizanju brzine stranice teško da vrijedi ozbiljno razgovarati.

Iako se čini da je jedan od razloga za takav redoslijed učitavanja koji su utvrdili programeri, gdje je drugo mjesto dodijeljeno funkcijskoj datoteci (poput vjerojatno lakši element), samo činjenica široke upotrebe dodataka, često masovnog sadržaja ...

Netko će uzviknuti: još jedan dodatak ...? teško!

I kažem, to neće utjecati na nikakvu brzinu ... naprotiv - naprotiv, ako promišljeno pristupite stvaranju web stranice.

Štoviše, korist prijenosa nekog koda očita je u drugom, naime, brzina učitavanja web mjesta ne ovisi o broju aktivnih dodataka, već o njihovom sadržaju! Pa zašto ne smanjiti funkcijsku datoteku koja se, kao što je spomenuto, učitava malo kasnije ..? a također je i punopravni masivni PLUGIN na razini predloška! Pa gdje mu većina koda pripada?

Po mom mišljenju, (aktivni, radni) predložak trebao bi sadržavati samo svoje specifične parametre.

izlet u aritmetiku ...

  1. učitava se kasnije, pitanje je, zašto ga ne premjestiti na mjesto gdje se prvo vrši obrada koda, i, shodno tome, prilagodbe parametara jezgre WP-a koje je odredio administrator brže će se čitati i obrađivati ​​u odgovarajućoj fazi web-mjesta lansirati?
  2. notorna svrsishodnost i logična organizacija funkcionalnosti web mjesta.
  3. praktičnost, što nije nevažno!

Osim toga, kao što je rečeno, funkcionalna datoteka je isti dodatak - opet ću vas pitati, zašto gurati sve što u nju uđete? i u procesu rada sa web mjestom zbunjuju se u golemom, teško čitljivom dokumentu koda, koji je, usput rečeno, nevjerojatno i neopravdano napuhan svojim sadržajem.

Lakše je i logičnije stvoriti lagani dodatak, konfigurirati i zaboraviti ...

Jednom riječju, svatko sam odlučuje: hoće li poslušati vlastito iskustvo ili mišljenje autora određenog obrazovnog članka.

Dok učenje slijedi u knjižnicama WordPressa, ali ne prema člancima ... iz članaka je moguće prikupiti samo jednu ili drugu ideju ...

Nekako, gospodine)

... za one koji su zainteresirani:

sva pravila kernela (i, usput, redoslijed učitavanja direktorija jezgre) možete naučiti na divan način u WordPress kodovima.

... u jednom od sljedećih članaka, upravo takva čašica za teme! ... i poveznice na korisne stranice.


! .. pretplatom na ažuriranja web mjesta -
... rastanak od neznanja ..!

kako stvoriti dodatak za dodatne funkcije.php datoteku

Dotični dodatak je, naravno, jednostavno rješenje, ali studija bi trebala početi od nule!

Štoviše, za postizanje ciljeva preuzetih u članku nisu potrebni moćni dodaci!

Idite na upravljačku ploču hosta (ili FTP) i otvorite upravitelj datoteka.

Otvorite mapu dodataka i stvorite drugi direktorij u njoj (mapa za naše datoteke dodataka). Apsolutno bilo koje ime, na latinskom. Kao primjer imam naziv "test".

Imajte na umu da će naziv dodatka na administratorskoj ploči biti isti kao što je napisan u zaglavlju informacija Ime dodatka: test (pogledajte komentare).

Otvorite stvorenu mapu i u njoj stvorite glavnu datoteku dodatka:

... s imenom, recimo my-functions.php i dodajte takve retke u tijelo (a naziv datoteke može biti apsolutno bilo što)

Redci u komentarima - informacije o dodatku koji će se pojaviti na administratorskoj ploči (izbornik dodataka).

Odmah nakon stvaranja mape i datoteke, vaš će se dodatak pojaviti na administratorskoj ploči. Pogledaj.

Kao bivši, možete ga aktivirati neko vrijeme - ali ništa se ne događa, dodatak je još uvijek neaktivan.

To je sve!! Napravljen je jednostavan dodatak i, što je izvanredno, vlastitim rukama i za svoju dobrobit (kako je znao reći mačak Matroskin).

Na ovo se zavjesa predstave spušta ...
... tužna prašina pada na rampe ...

I usput, koristan film iz serije "bez dodataka" - pogledajte, razmislite treba li kod predložen u videu ostaviti u funkcijskoj datoteci ??

Sigurno ste više puta naišli na činjenicu da morate dodati dio koda za svoju WordPress stranicu kako biste dodali novu funkcionalnost. Ne govorim o skriptama Google Analyticsa koje umetnete u zaglavni dio teme. Ne. Govorim o onim malim fragmentima koda koje ste pronašli na forumima na Internetu i odmah potrčali da ih dodate u svoju datoteku funkcije.php.

Budimo iskreni, učinili ste ovo barem jednom, zar ne? I to je razumljivo jer je napisano na forumu - dodajte ovaj kod u functions.php svoje WordPress teme.

Istina je, dodavanjem svakog koda koji pronađete na internetu funkcijama.php je nije uvijek dobra ideja... Sigurnije rješenje bilo bi stvoriti vlastiti prilagođeni mini dodatak s ovim kodom.

U ovom ćemo vam vodiču reći u kojim slučajevima možete dodati kod na functions.php, a u kojim je bolje koristiti zasebni dodatak. Također ćemo vam pokazati kako sami možete stvoriti prilagođeni dodatak i dodati mu svoj kôd.

Što su funkcije.php

Ako ste ikad pomicali datoteke WordPress web mjesta, možda ste naletjeli na nekoliko datoteka functions.php. Datoteka functions.php o kojoj ćemo govoriti u ovom vodiču nalazi se u mapi: wp-contentthemesyour_themefunctions.php.

Očito je da se radi o istoj datoteci koja pohranjuje sve funkcije i postavke vaše određene teme, trenutno aktivan... Obratite pozornost na riječ "aktivno", jer će to biti glavna poruka ove lekcije.

Zašto je loša ideja uvijek koristiti functions.php

Nemojte me krivo shvatiti, sasvim je normalno koristiti functions.php za male komade koda u nekoliko redaka. Govorimo o činjenici da je nepoželjno koristiti functions.php kao spremište za apsolutno sve što dodate kodu. To nije univerzalno rješenje za svaku situaciju.

Razlog br. 1.

Ako se objavi ažuriranje za vašu temu, izgubit ćete sve što ste dodali u datoteku functions.php. Znam na što ste mislili - ali ima li baš takvih situacija?

Naravno da ima. No, postoje i mnogi ljudi koji nemaju pojma što je dječja tema. Ili postoje ljudi koji su vas zamolili da pomognete dodati dio koda u svoju temu.

Stoga se ovaj razlog nalazi na ovom popisu. Ako dodate funkcije u functions.php bez korištenja podređene teme, ovo je vaš prvi poziv za buđenje.

Razlog br. 2.

Čak i ako ste ispravno konfigurirali i koristili podređenu temu. Što se događa ako želite prijeći na drugu temu dizajna? Nadam se da ste svakoj promjeni u datoteci functions.php dodali komentar, jer bez toga bi prelazak na drugu temu bio iznimno bolan. Mislim da ste shvatili ideju.

Razlog broj 3.

Ako ste funkciji.php dodali kôd koji potpuno neočekivano razbija vašu web lokaciju i vidite prazan bijeli zaslon - trebat će vam FTP klijent za učitavanje "slomljenih" functions.php, uređivanje i postavljanje natrag na web mjesto. Takvo zadovoljstvo za sebe.

Kada koristiti functions.php

Ispravna upotreba functions.php za trenutno aktivnu podređenu temu valjana je opcija. Ali zapamti, usredotočio sam se na ovu riječ " aktivan"?

Ako dodate komade koda koji će imati smisla samo pri radu s ovom temom, tada možete sigurno koristiti functions.php (u podređenoj temi). Evo nekoliko primjera gdje bi to moglo biti prikladno:

  • Dodavanje još jedne tablice stilova (.css) za vašu temu
  • Promijenite duljinu izvoda posta kako bi web stranica izgledala bolje
  • Dodavanje prilagođenih fontova za trenutnu temu
  • Dodavanje datoteke lokalizacije za prevođenje trenutne teme

Drugim riječima, kad god dodate ili promijenite bilo što vezano za određenu trenutnu temu, slobodno koristite functions.php.

Kada je bolje učiniti bez funkcija.php

Korištenje functions.php za dodavanje globalnijih stvari i funkcija koje bi vam teoretski mogle biti korisne za drugu temu je loša ideja.

Evo nekoliko primjera kada je bolje učiniti bez functions.php:

  • Izrada prilagođenih widgeta koje ćete često koristiti
  • Izrada prilagođenih kratkih kodova
  • Dodavanje koda neovisnog o temi (kôd Google Analyticsa itd.)

U takvim je slučajevima najbolje zadržati ovaj kôd bez obzira na temu. A to možete učiniti pomoću prilagođenih dodataka.

Sada razmišljate - zagonetni ste oko stvaranja dodatka, kada možete uređivati ​​functions.php? Preteško je! Vjerujte, nije tako. To se radi vrlo brzo i jednostavno.

Kako postaviti prilagođeni dodatak umjesto functions.php

Da biste stvorili vlastiti prilagođeni dodatak za spremanje koda, trebate:

  1. Izradite tekstualnu datoteku sa svojim kodom i spremite je kao .php datoteku
  2. Spakirajte dobivenu .php datoteku u .zip arhivu
  3. Instalirajte ovu arhivu kao običan dodatak za WordPress u izborniku Dodaci → Dodaj novi

To je to, samo 3 radnje.

Korak 1. Izradite .php datoteku sa svojim kodom

Otvorite Notepad na računalu i zalijepite sljedeći tekst:

Naravno, možete koristiti svoje ime za dodatak u retku Naziv dodatka:

Spremite datoteku i dajte joj jedinstveno ime kako WordPress ne bi zbunio vaš dodatak s onima koji su već instalirani. Na primjer: wpcafe-custom-functions.php.

Da, ne zaboravite odabrati vrstu datoteke "Sve datoteke" i dodati .php ekstenziju prilikom spremanja:

Korak 2. Stvorite .zip arhivu

Mislim da ovdje nije potrebno nikakvo objašnjenje. Samo stvorite .zip arhivu sa svojom datotekom u bilo kojem prikladnom arhivaru.

Korak 3. Instalirajte kao običan dodatak

Najlakši dio. Samo idite na svoje administratorsko područje za WordPress na Dodaci → Dodaj novi i prenesite svoju arhivu kao običan dodatak.

Nakon što ga aktivirate, trebali biste moći vidjeti svoj novi dodatak na popisu svih drugih instaliranih dodataka:

Kako dodati svoj kôd

Da biste dodali isječak koda, samo ga zalijepite u .php datoteku koju ste stvorili. Ili uvijek možete napraviti još jedan zasebni dodatak za dvije različite funkcije.

Na primjer, ovako bi izgledala vaša .php datoteka ako želite napraviti kratki kod "Hello World!":

Ovi komentari ni na koji način ne utječu na performanse vašeg koda i brzinu izvođenja dodatka. No s njima će vam biti lakše kretati se i sjetiti se što svaka funkcija koju dodate radi.

Samo umotajte svoj komentar u kosinu i zvjezdicu: /* tvoj komentar */

Nakon što promijenite svoj kôd, možete ponovno učitati .php datoteku putem FTP -a ili jednostavno stvoriti novu .zip arhivu te je prenijeti kao novi dodatak i izbrisati staru.

Drugi načini izbjegavanja uređivanja funkcija.php

Uglavnom, ako ste dovoljno sigurni u svoje sposobnosti i znate kako dodati kôd functions.php, ne biste trebali imati poteškoća ni s prilagođenim dodacima. Ovdje nema ništa teško.

Ali savršeno razumijemo ako nemate želju petljati sa svim tim ručno. Ipak, ovo je WordPress. Stoga vam besplatni dodatak Code Snippets može dobro doći, što olakšava dodavanje dodatnog koda na web mjesto:

Pomoću ovog dodatka možete dodati različite isječke koda, dati im ime, opis, aktivirati i deaktivirati jedan ili drugi dio koda selektivno.

Još jedna zanimljiva značajka je da možete uvesti / izvesti isječke koda između web lokacija.

Ishodi

Ovo se može činiti kao manji detalj, ali ispravan položaj vašeg dodatnog koda omogućit će vam da se ubuduće lako prebacujete s druge teme. Također možete zasebno omogućiti ili onemogućiti jednu ili drugu funkciju ako svaku dodatnu funkciju podijelite između zasebnih dodataka.

Stoga ova metoda doista zaslužuje pozornost.

cms mysql (4)

Pokušavam stvoriti osnovni sustav dodataka sličan onom koji često nalazite u CMS -u, poput WordPressa. Imate mapu dodataka koji su povezani s glavnom operacijom sustava pomoću obavijesti o razvoja od pomoću uzorka dizajna Posmatrač ili Događaj .

Problem je u tome što sustav ne može znati sa koji događaji dodatak želi djelovati - pa sustav mora učitati svaki dodatak za svaki zahtjev stranice da vidi je li taj dodatak u nekom trenutku zaista potreban. Ne treba ni govoriti da je ovo mnogo uzalud potrošenih resursa - u slučaju WordPressa, koji dodaje nekoliko dodatnih MB memorije za svaki zahtjev!

Postoje li alternativni načini za to?

Na primjer, postoji li način da se sve ovo učita jednom, a zatim rezultati predmemoriraju kako bi vaš sustav znao poput dodataka za lijeno učitavanje? Drugim riječima, učitava li sustav konfiguracijsku datoteku u kojoj su navedeni svi događaji koje dodatak želi vezati, a zatim ih pohranjuje u APC ili nešto za buduće zahtjeve?

Ako ni to ne uspijeva, možda postoji posebna struktura datoteka koja se može koristiti za nagađanje o tome kada određeni dodatci nisu potrebni za ispunjenje zahtjeva.

Odgovori

Imam alat za upravljanje dodacima, ali koristim ga samo s proceduralnim dodacima i sa svim uključenim obično se učitava odmah. No, za API temeljen na događajima i lijeno učitavanje mogao sam zamisliti korištenje plitkih omota za upravljanje dodacima i pribjegavanje automatskom učitavanju stvarnih proširenja.

/ ** * api: svejedno * verzija: 0.1 * naslov: primjer dodatka * opis: ... * konfiguracija: * ovisi: drugi dodatak * /$ plugins ["title_event"] = "TitleEventClass"; $ dodaci ["sekundarni"] = niz ("Razred2", "povratni poziv"); ?>

U ovom primjeru pretpostavljam da je API dodatka jednostavan popis. Ovaj primjer skripte feature-plugin-123.php ne radi ništa osim dodavanja u niz pri učitavanju. Na ovaj način, čak i ako imate desetak dodataka za značajke, to će rezultirati samo dodatnim include_once za svaki.

Ali glavni API aplikacije ili dodatka može umjesto toga samo stvoriti instance navedenih klasa (bilo novi $ eventcb; za raw-call_user_func_array ili call_user_func_array za povratne pozive). Zauzvrat, to će učitati stvarni zadatak u automatski učitavač. Dakle, imate dvostruki sustav u kojem jedan dio upravlja popisom, drugi je pravi kôd.

Stoga još uvijek zamišljam jednostavan config.php koji jednostavno navodi dodatke i postavke poput ovog:

"korisnik / omot-za-htmlpurifier.php"); $ cfg ["pretty"] = 1;

Opet uzimajući u obzir da su to samo omoti podataka / skripte, s opisom dodatka za upravljanje. Također možete koristiti stvarni register_even () API i definirati dodatnu funkciju omotača u svakom. No, popis kul imena čini se najjednostavnijom opcijom.

Gore navedeni alat za upravljanje izgleda zahrđalo i ružno: http://milki.include-once.org/genericplugins/
Ali ne koristi se ako želite samo popis (sql tablica) i upravljate postavkama. Ovi dodatni troškovi služe samo za lijepo ispisivanje metapodataka dodatka i održavanje čitljivog config.php.

Konačno:

spl_autoload () za uključivanje_ putanje i jednostavan slučaj slučaja-> naziv klase, po jednu omot skriptu, samo uključite sve odjednom.

Spremio bih naziv klase dodatka zajedno s potpisanim događajima u konfiguracijsku datoteku, a zatim raščlanjenu konfiguracijsku datoteku spremio u APC, na primjer. Zatim, kada se događaj aktivira, sustav može lijeno učitati odgovarajuće klase dodataka prema potrebi.

Wordpress i drugi CMS sustavi vrlo su loši primjeri.

Moramo shvatiti da modularno gotovo uvijek znači da je teže.

Najbolja shema s kojom sam ikada radio za rješavanje ove situacije je dodatak zasnovan na klasi sa strogom konvencijom imenovanja koji koristi autoloader.

Stoga prije korištenja dodatka trebate instancirati ili koristiti statičke funkcije.

Dodatak možete čak nazvati:

Na primjer:

"/plugins/($parts)/($parts).php"); pauza; ) // ...)?>

Što se tiče događaja:

Morate registrirati ovaj događaj statički kako biste izbjegli dinamičke promjene.

Baza podataka bit će pravo mjesto za to. Možete imati tablice događaja i metode install () i uninstall () u klasi dodataka za dodavanje određenih događaja ili metoda vezanja drugim događajima. Ovo je jedan upit prema bazi podataka, a ako želite izvući više iz toga, dodajte ga u memcached ili flat ini datoteku.

Meni dobro radi. Na ovaj način uspio sam dobiti težak sustav koji je potrošio 8 MB po zahtjevu da se spusti na 1 MB, s potpuno istim popisom značajki, bez predmemoriranja. Sada možemo dodati još značajki i održavati sustav "čistim"

nadam se da ovo pomaže

Najbolji način je početi kodirati s njima. Uzorci dizajna izvrstan su koncept koji je teško primijeniti samo čitajući o njima. Uzmite nekoliko primjera implementacija koje ćete pronaći na Internetu i izgradite ih oko njih.

Izvrstan resurs je stranica Podaci i objekti. Prolaze kroz predloške i daju vam konceptualne primjere i primjere iz stvarnog svijeta. Njihov referentni materijal je također odličan.

Ovo je glavna datoteka u vašoj WordPress temi. Smješteno u / wp-content / themes / (ovdje je naziv vaše teme) /functions.php.
Definira važna svojstva teme, prilagođava udice, izgled i funkcionalnost, a dodaje i neke značajke koje su vam potrebne. Ova se datoteka učitava svaki put kada otvorite bilo koju WordPress stranicu, pa se može koristiti za izmjenu bilo kojeg elementa web stranice. S tim u vezi, mnogi savjeti a la " kako promijeniti nešto u WordPressu bez dodataka »Često se brinu o promjenama u functions.php, umjesto stvaranja zasebnog dodatka za ovu funkcionalnost ili korištenja gotovog rješenja. To često dovodi do preopterećenja ove datoteke informacijama, što otežava raščlanjivanje koda i dodatno otežava ispravljanje. Ali ovo nije najopasnija stvar. Najopasnije je to prilikom promjene aktivne teme izgubit će se dio ili sva potrebna funkcionalnost stranice.

Po čemu se functions.php razlikuje od dodatka

Ništa. U svojoj srži, functions.php je vrsta globalnog nepreklopnog dodatka koji je vezan uz trenutnu temu. Kako se povezuje možete vidjeti u WordPressu u wp-settings.php. Kao što možete vidjeti iz izvornog koda, učitava se nakon svih dodataka, međutim, to ne daje nikakve nedostatke ili prednosti, osim možda mogućnosti nadjačavanja nečega u povezanim dodacima. Ni to neće utjecati na brzinu izvršavanja koda. To utječe samo na sadržaj dodataka i functions.php. Stoga budite oprezni pri odabiru aktivnih dodataka za svoju temu i odreknite se nepotrebnih, od koje vam malo koristi, a zatim možete olakšati svoju web lokaciju i ubrzati njen rad.

Kada koristiti funkcije.php

Vodite se sljedećim pravilom: ako je funkcionalnost izravno povezana s trenutnom temom, ali ne i s radom web stranice, napišite je u functions.php.

Na primjer, moglo bi biti

  • Postavljanje sličica
  • Postavljanje veličina bočne trake
  • Postavljanje mjesta za widgete
  • Najava mjesta pod navigacijskim izbornikom
  • Postavke teme
  • Dodatne značajke vaše teme

Kada izbjegavati korištenje functions.php

Ako bi funkcionalnost trebala funkcionirati čak i pri promjeni aktivne teme, trebali biste se pobrinuti da je stavite u zaseban dodatak.
To uključuje:

  • Definicija brojača posjećenosti (Google Analytics, Yandex.Metrika, Liveinternet)
  • Postavljanje dodatne funkcionalnosti administratorske ploče (na primjer)
  • Konfiguriranje izvornog koda ()
  • Definiranje kratkih kodova
  • registracija

Popisi su nepotpuni, sadržaj možete sami definirati.

Gdje mogu dodati ovaj kôd ako nije u functions.php? Za njih možete napisati posebne dodatke, međutim, postoji zanimljiviji i jednostavniji način.

mu-dodaci kao alternativa funkcijama.php

Zanimljiva funkcionalnost došla nam je u modernim verzijama WordPressa iz WordPress MU (Multi-User), tzv MU dodaci... Njegova suština je bila sljedeća. Administrator WordPress MU ponekad je trebao definirati dodatke za cijelu mrežu web mjesta. To se nije moglo postići uobičajenom funkcionalnošću, pa je uveden poseban odjeljak: / wp-content / mu-plugins /, gdje su definirani. Još jedna zanimljivost je da se datoteke dodataka iz ovog direktorija učitavaju prije svih ostalih, što omogućuje unaprijed definiranje nekih konstanti ili postavki.
Kasnije je WPMU ukinut, njegov kôd je integriran s glavnim bloganjem, a sada svaki WordPress može koristiti funkcionalnost MU-dodataka, što sada znači Mora se koristiti, odnosno obvezno za uporabu.

Kako se koriste mu-dodaci

Prvo morate stvoriti poseban odjeljak / wp-content / mu-plugins /
U njega smo stavili potrebne datoteke dodataka. Za razliku od konvencionalnih dodataka, nema potrebe pridržavati se posebne sintakse, a funkcionalnost se može izravno deklarirati

Ovdje je, na primjer, stvorena datoteka s kodom brojača posjećenosti.
Unutra ova datoteka izgleda ovako

// ... Umjesto ovog retka umetnite kôd brojača ...

U admin području će izgledati ovako Potrebno

8 odgovora

Možete koristiti obrazac Promatrač. Jednostavan funkcionalni način da se to postigne:

Zaključak:

Ovo je moja LUDA aplikacija 4 + 5 = 9 4 * 5 = 20

Bilješke:

U ovom primjeru izvornog koda morate prijaviti sve svoje dodatke prije stvarnog izvornog koda koji želite obnoviti. Uključio sam primjer kako postupati s jednom ili više vrijednosti prenesenih u dodatak. Najteži dio ovoga je pisanje stvarne dokumentacije koja navodi koji su argumenti proslijeđeni svakoj udici.

Ovo je samo jedan od načina za stvaranje sustava dodataka u PHP -u. Postoje bolje alternative, predlažem da za više informacija provjerite WordPress dokumentaciju.

Nažalost, čini se da se donje crte zamjenjuju entitetima HTML Markdown? Mogu ponovno objaviti ovaj kôd kada se ova greška popravi.

Uređivanje: Nema veze, pojavljuje se samo kad uređujete

Recimo da vam ne treba uzorak Promatrača jer zahtijeva da promijenite metode klase za obavljanje zadatka slušanja, a želite nešto zajedničko. Recimo da ne želite koristiti proširenje nasljeđivanja jer već možete naslijediti svoju klasu od neke druge klase. Ne bi li bilo sjajno imati opći način da se bilo koja klasa uključi bez napora? Evo kako:

_Class = get_class (& $ RefObject); $ this -> _ RefObject = $ RefObject; ) javna funkcija __set ($ sProperty, $ mixed) ($ sPlugin = $ this -> _ Class. "_". $ sProperty. "_setEvent"; if (is_callable ($ sPlugin)) ($ mixed = call_user_func_array ($ sPlugin, $ mješovito);) $ ovo -> _ RefObject -> $ sProperty = $ mixed;) javna funkcija __get ($ sProperty) ($ asItems = (array) $ this -> _ RefObject; $ mixed = $ asItems [$ sProperty] ; $ sPlugin = $ this -> _ Class. "_". $ sProperty. "_getEvent"; if (is_callable ($ sPlugin)) ($ mixed = call_user_func_array ($ sPlugin, $ mixed);) return $ mixed;) public function __call ($ sMethod, $ mixed) ($ sPlugin = $ this -> _ Class. "_". $ sMethod. "_beforeEvent"; if (is_callable ($ sPlugin)) ($ mixed = call_user_func_array ($ sPlugin, $ mixed );) if ($ mixed! = "BLOCK_EVENT") (call_user_func_array (niz (& $ this -> _ RefObject, $ sMethod), $ mixed); $ sPlugin = $ this -> _ Class. "_". $ sMethod . "_afterEvent"; if (is_callable ($ sPlugin)) (call_user_func_array ($ sPlugin, $ mixed);)))) // kraj klase Klasa Klasa Pluggable extends Plugin () // kraj klase Pl uggable ////////////////////// 2 DIO 2 //////////////////// razredni pas (javni $ Name = ""; kora javne funkcije (& $ sHow) (echo "$ sHow
\ n ";) javna funkcija sayName () (echo"
\ nMoje ime je: ". $ this-> Ime."
\ n ";)) // kraj klase Dog $ Dog = new Dog (); //////////////////// 3. DIO 3 /////// // /////////// $ PDog = new Pluggable ($ Dog); function Dog_bark_beforeEvent (& $ mixed) ($ mixed = "Woof"; // Nadjačaj govoreći "mijaukanje" s "Woof"//$ mixed = "BLOCK_EVENT"; // ako želite blokirati događaj return $ mixed;) funkcija Dog_bark_afterEvent (& $ mixed) (echo $ mixed; // prikaži nadjačavanje) funkcija Dog_Name_setEvent (& $ mixed) ($ mixed = " Coco "; // nadjačati" Fido "s" Coco "return $ mixed;) funkcija Dog_Name_getEvent (& $ mixed) ($ mixed =" Different "; // nadjačati" Coco "s" Different "return $ mixed;) // ////////////////// // DIO 4 //////////////////// $ PDog-> Name = "Fido "; $ PDog-> Bark (" mijaukanje "); $ PDog-> SayName (); odjek" Moje novo ime je: ". $ PDog-> Ime;

Prvi dio je ono što možete uključiti pozivom require_once () na vrhu PHP skripte. Učitava klase da bi se nešto moglo spojiti.

U drugom dijelu, gdje učitavamo klasu. Bilješka. Nisam trebao učiniti ništa posebno za klasu koja se značajno razlikuje od obrasca Observer.

U 3. dijelu, gdje ćemo prebaciti našu klasu na "pluggable" (tj. Održavati dodatke koji nam omogućuju nadjačavanje metoda i svojstava klase). Tako, na primjer, ako imate web aplikaciju, možete imati registar dodataka i ovdje možete aktivirati dodatke. Obratite pozornost i na funkciju Dog_bark_beforeEvent (). Ako postavim $ mixed = "BLOCK_EVENT" prije izraza return, to će blokirati psa od lajanja, a također će blokirati Dog_bark_afterEvent jer neće biti događaja.

U četvrtom dijelu to je uobičajeni opcode, ali imajte na umu da ono što mislite da neće funkcionirati ovako. Na primjer, pas ga ne izgovara imenom "Fido" već "Coco". Pas ne kaže mijaukanje, već vau. A kad kasnije želite pogledati ime psa, ustanovit ćete da je to "Razno", a ne "Coco". Svi su ovi nadomjesci uvedeni u 3. dio.

Pa kako to funkcionira? Pa, isključimo eval () (koji svi kažu "zlo") i isključimo da nije uzorak Promatrača. Dakle, način rada je sa skrivenom praznom klasom nazvanom Pluggable koja ne sadrži metode i svojstva koje koristi klasa Dog. Tako će se, dok se to dogodi, za nas upotrijebiti čarobne metode. Stoga se u dijelovima 3 i 4 povezujemo na objekt izveden iz klase Pluggable, a ne na samu klasu Dog. Umjesto toga, dopustili smo da klasa dodataka umjesto nas "dotakne" objekt Dog. (Ako je ovo neki dizajn za koji ne znam, javite mi.)

Najčešće se koristi metoda zakačenja i slušača, ali postoje i druge stvari koje možete učiniti. Ovisno o veličini vaše aplikacije i o tome tko želi vidjeti kôd (ovo će biti FOSS skripta ili bilo što drugo u kući) uvelike će utjecati na to kako želite riješiti dodatke.

kdeloach ima lijep primjer, ali njegova implementacija i funkcija kuke pomalo su nesigurni. Zamolio bih vas za više informacija o prirodi php aplikacije za vašu e -poštu i o tome kako vidite dodatke.

1 to kdeloach od mene.

Evo pristupa koji sam koristio, koji pokušava kopirati iz mehanizma Qt signal / utor, svojevrsni uzorak promatrača. Objekti mogu emitirati signale. Svaki signal ima identifikator u sustavu - sastoji se od id + objekta pošiljatelja Svaki signal može biti vezan za prijamnike, što je jednostavno "poziv", koristite klasu sabirnice za slanje signala svima zainteresiranima za primanje Kada nešto se dogodi, šaljete signal. Ispod je primjer i primjer implementacije

prijaviti se (); ?>

Smatram da je najlakši način slijediti Jeffove savjete i pogledati postojeći kod. Pokušajte pogledati Wordpress, Drupal, Joomla i druge poznate PHP-CMS-ove kako biste vidjeli kako izgledaju i osjećaju se njihovi API-ji. Na ovaj način čak možete doći do ideja o kojima prije niste razmišljali kako biste stvari učinili malo debljima.

Izravniji odgovor bio bi pisanje generičkih datoteka koje bi uključili u datoteku include kako bi se osigurala upotrebljivost. To će biti kategorizirano i NIJE navedeno u jednoj MASSIVE datoteci "hooks.php". Budite oprezni jer ono što na kraju završi je da datoteke koje uključuju na kraju imaju sve više ovisnosti i funkcionalnosti. Pokušajte ograničiti ovisnost o API -ju. Tj. Manje datoteka za uključivanje.

Postoji lijep projekt koji se zove