Lazy Load Images - Lazy Load pluginy pre WordPress. Najlepší spôsob, ako povoliť doplnky pre aplikáciu PHP Sluggish php plugin

  • 20.06.2020

Súbor funkcií je zábavným pomocníkom pri rozširovaní funkčnosti stránok! najmä ak sa používa na zamýšľaný účel - mnoho majiteľov blogov / webov však dokáže úžasne premieňať functions.php na módne slovo.

V každom podnikaní existujú účelnosť a obmedzenia (obmedzenia, často logické), a preto nejaký spustiteľný kód určený na úpravu parametrov jadra WP (nie tém), bolo by správnejšie presunúť sa mimo šablónu ...

Pokiaľ sa jedná o modernizáciu funkčnosti stránky, v článku „bez doplnkov ...“ sa určite odporúča vložiť všetky bloky kódu do legendárnych funkcií.php. Nie je to správne!

Logickejšie je preniesť všetky čisto technické rozšírenia (ktoré nesúvisia priamo so štýlom šablóny) do pluginu organizovaného na ich registráciu.

Poďme to vytvoriť! a tiež hovorte o výhodách a nevýhodách (ktorých je oveľa menej) ...


Sekcie článku:

ako vytvoriť váš plugin

z textu nižšie sa naučíme, ako si vytvoriť svoj vlastný plugin vlastnými rukami: pochopíme všetky podrobnosti, nuansy. Zistíme, aké sú klady a zápory (nevýhod je menej !! a skôr to nie sú vôbec nevýhody, ale tá či oná výhodnosť pre každého správcu)

aký je rozdiel medzi súborom functions.php a doplnkom

Prečo by sa mal nejaký kód súvisiaci priamo s funkčnosťou stránky preniesť do samostatného doplnku?

Samotný funkčný súbor, jeho účel a konzistencia sa nijako nelíšia od doplnku (jednoducho doplnku v téme))! - jeho hlavnou úlohou je obohatiť konkrétnu (aktívnu) šablónu o užitočnú funkčnosť.

Napríklad „navigácia“, kde je logicky ponuka tlačidiel štylizovaná pomocou CSS podľa štýlu aktívnej témy - mohlo by byť správnejšie ponechať ju v koreňovom adresári šablóny.

Aká je výhoda - rozdeliť funkčný súbor na samostatné súbory alebo samostatný doplnok?

Napríklad najbežnejšie - rozhodli ste sa zmeniť šablónu!? ... v dôsledku toho sa stratí všetok funkčný vývoj, pretože všetok užitočný kód sa nachádza vo funkčnom súbore (kedysi som videl takú veľkosť súboru 750KILO)

Dokumentáciu funkcií môžete samozrejme preniesť do novej témy, ale predovšetkým to nemôžete urobiť bez úprav, ktoré vám zaberú veľa užitočného času: opice a práca)

A potom:

poradie načítania súborov stránok

V skratke: poradie načítania základných súborov lokality je v našom príklade nasledovné - aktívne doplnky webu (z priečinka doplnkov) a ich obsah sa načítajú o niečo skôr a až potom sa načíta súbor functions.php s obsahom. spracované. Všetko je to v milisekundách a ťažko stojí za to vážne hovoriť o samotnom zvýšení rýchlosti stránky.

Aj keď sa zdá, že jedným z dôvodov takéhoto poradia načítania stanoveného vývojármi, kde je druhé miesto dané funkčnému súboru (ako napr. pravdepodobneľahší prvok), len skutočnosť rozšíreného používania doplnkov, často masívneho obsahu ...

Niekto volá: iný plugin ...? je to ťažké!

A hovorím, že to neovplyvní žiadnu rýchlosť ... skôr - naopak, ak k vytvoreniu stránky pristupujete premyslene.

Výhoda prenosu určitého kódu je navyše zrejmá v inom prípade, konkrétne: rýchlosť načítania stránky nezávisí od počtu aktívnych doplnkov, ale od ich obsahu! Prečo teda nezmenšiť funkčný súbor, ktorý sa, ako už bolo spomenuté, načíta o niečo neskôr ..? a je tiež plnohodnotným masívnym PLUGINOM na úrovni šablóny! Kam teda patrí väčšina jeho kódu?

Podľa môjho názoru by (aktívna, pracovná) šablóna mala obsahovať iba svoje konkrétne parametre.

exkurzia do aritmetiky ...

  1. načítané neskôr, otázkou je, prečo ho nepresunúť na miesto, kde sa najskôr vykonáva spracovanie kódu, a podľa toho sa úpravy základných parametrov WP zadané správcom načítajú rýchlejšie a spracujú sa v zodpovedajúcej fáze stránky spustiť?
  2. povestná účelnosť a logická organizácia funkčnosti stránky.
  3. pohodlie, čo nie je nedôležité!

Okrem toho, ako už bolo povedané, funkčný súbor je ten istý doplnok - opäť sa opýtam, prečo do toho strčiť všetko, čo do neho dostanete? a pri práci so stránkou sa pomýlite v obrovskom a ťažko čitateľnom dokumente o kóde, ktorý je mimochodom svojím obsahom neskutočne a neoprávnene nafúknutý.

Je jednoduchšie a logickejšie vytvoriť ľahký doplnok, nakonfigurovať a zabudnúť ...

Jedným slovom, každý sa rozhodne sám: či si vypočuje svoju vlastnú skúsenosť, alebo názor autora určitého vzdelávacieho článku.

Zatiaľ čo učenie nasleduje v knižniciach WordPress, ale nie podľa článkov ... z článkov je možné získať iba jeden alebo iný nápad ...

Nejako, pane)

... pre záujemcov:

všetky pravidlá jadra (a mimochodom poradie načítania adresárov jadra) sa môžete naučiť vynikajúcim spôsobom v kódoch WordPress.

... v jednom z nasledujúcich článkov práve taká kadička! ... a odkazy na užitočné stránky.


! .. prihlásením sa na odber aktualizácií stránok -
... rozlúčka s nevedomosťou ..!

ako vytvoriť doplnkový súbor ďalších funkcií.php

Predmetný plugin je samozrejme jednoduché riešenie, ale štúdia by mala začať od nuly!

Na dosiahnutie cieľov uvedených v článku navyše nie sú potrebné žiadne výkonné doplnky!

Prejdite na ovládací panel hostiteľa (alebo FTP) a otvorte správcu súborov.

Otvorte priečinok doplnkov a vytvorte v ňom ďalší adresár (priečinok pre naše súbory doplnkov). Absolútne akékoľvek meno, v latinčine. Ako príklad mám názov „test“.

Upozorňujeme, že názov doplnku v paneli správcu bude rovnaký, ako je uvedený v informačnej hlavičke Názov doplnku: test (pozri komentáre).

Otvorte vytvorený priečinok a vytvorte v ňom hlavný súbor doplnku:

... s menom, povedzme my-functions.php a pridajte také riadky do jeho tela (a názov súboru môže byť úplne akýkoľvek)

Riadky v komentároch - informácie o doplnku, ktorý sa zobrazí v paneli správcu (ponuka doplnkov).

Ihneď po vytvorení priečinka a súboru sa váš doplnok zobrazí na paneli správcu. Pozri sa.

Ako ex ju môžete na chvíľu aktivovať - ​​ale nič sa nestane, plugin je stále nečinný.

To je všetko!! vznikol jednoduchý plug-in a čo je pozoruhodné, vlastnými rukami a pre svoj prospech (ako hovorievala mačka Matroskin).

V tomto padá opona šou ...
... smutný prach padá na rampy ...

A mimochodom, užitočný film zo série „bez doplnkov“ - pozrite sa, popremýšľajte, či by sa mal kód navrhnutý vo videu ponechať vo funkčnom súbore ??

Určite ste sa opakovane stretli s tým, že musíte pridať kúsok kódu pre svoj web WordPress, aby ste mohli pridať novú funkcionalitu. Teraz nehovorím o skriptoch Google Analytics, ktoré vložíte do hlavičkovej časti svojej témy. Nie. Hovorím o tých malých fragmentoch kódu, ktoré ste našli na fórach na internete a okamžite ste ich bežali pridať do svojho súboru functions.php.

Povedzme si úprimne, toto si už urobil aspoň raz, však? A je to pochopiteľné, pretože to bolo napísané na fóre - pridajte tento kód do súboru functions.php svojej témy WordPress.

Pravdou je, že každý kód, ktorý nájdete na internete, je pridaný do súboru functions.php nie vždy dobrý nápad... Bezpečnejším riešením by bolo vytvoriť si svoj vlastný mini doplnok s týmto kódom.

V tomto výučbe vám povieme, v ktorých prípadoch môžete pridať kód do súboru functions.php a v ktorých je lepšie použiť samostatný doplnok. Ukážeme vám tiež, ako si môžete sami vytvoriť vlastný doplnok a pridať k nemu svoj kód.

Čo je functions.php

Ak ste niekedy prechádzali svojimi webovými súbormi WordPress, možno ste narazili na niekoľko súborov functions.php. Súbor functions.php, o ktorom si povieme v tejto príručke, sa nachádza v priečinku: wp-contentthemesyour_themefunctions.php.

Je zrejmé, že ide o ten istý súbor, ktorý ukladá všetky funkcie a nastavenia pre konkrétnu tému, momentálne aktívny... Venujte pozornosť slovu „aktívny“, pretože to bude hlavné posolstvo tejto lekcie.

Prečo je zlý nápad vždy používať functions.php

Nechápte ma zle, je úplne normálne používať functions.php na malé kúsky kódu v niekoľkých riadkoch. Hovoríme o tom, že je nežiaduce používať functions.php ako úložisko pre úplne všetko, čo pridáte kód. Nie je to univerzálne riešenie pre každú situáciu.

Dôvod č. 1.

Ak bude pre vašu tému vydaná aktualizácia, stratíte všetko, čo ste pridali do súboru functions.php. Viem, na čo ste práve mysleli - ale je tu pre tieto situácie to pravé?

Samozrejme. Ale je tiež veľa ľudí, ktorí vôbec netušia, čo je detská téma. Alebo sú ľudia, ktorí vás požiadali, aby ste im pomohli pridať kúsok kódu k ich téme.

Preto je tento dôvod na tomto zozname. Ak pridáte kód do súboru functions.php bez použitia podradenej témy, je to vaše prvé prebudenie.

Dôvod č. 2.

Aj keď ste podradenú tému nakonfigurovali a použili správne. Čo sa stane, ak chcete prejsť na inú dizajnovú tému? Dúfam, že ste pridali komentár ku každej zmene, ktorú urobíte v súbore functions.php, pretože bez toho by bol prechod na inú tému mimoriadne bolestivý. Myslím, že máš nápad.

Dôvod číslo 3.

Ak ste do súboru functions.php pridali kód, ktorý úplne neočakávane rozbije váš web, a uvidíte prázdnu bielu obrazovku - budete potrebovať FTP klienta, ktorý nahrá „nefunkčný“ functions.php, upraví ho a nahrá späť na web. Takéto potešenie pre seba.

Kedy použiť functions.php

Správne použitie functions.php pre momentálne aktívnu podradenú tému je platná možnosť. Pamätajte však, že som sa zameral na toto slovo “ aktívny"?

Ak pridáte kúsky kódu, ktoré majú zmysel iba pri práci s touto konkrétnou témou, môžete bezpečne použiť functions.php (v podradenej téme). Tu je niekoľko príkladov, kde by to mohlo byť vhodné:

  • Pridanie ďalšej šablóny štýlov (.css) pre vašu tému
  • Zmeňte dĺžku úryvku príspevku, aby stránka vyzerala lepšie
  • Pridávanie vlastných typov písma pre aktuálnu tému
  • Pridanie lokalizačného súboru na preloženie aktuálnej témy

Inými slovami, kedykoľvek pridáte alebo zmeníte čokoľvek, čo súvisí s konkrétnou aktuálnou témou, pokojne použite functions.php.

Kedy je lepšie zaobísť sa bez functions.php

Používanie funkcií.php na pridanie ďalších globálnych vecí a funkcií, ktoré by vám teoreticky mohli byť užitočné pre inú tému, je zlý nápad.

Tu je niekoľko príkladov, kedy je lepšie robiť bez functions.php:

  • Vytváranie vlastných widgetov, ktoré budete často používať
  • Vytváranie vlastných krátkych kódov
  • Pridanie kódu nezávislého od témy (kód Google Analytics atď.)

V takýchto prípadoch je najlepšie ponechať si tento kód bez ohľadu na vašu tému. A môžete to urobiť pomocou vlastných doplnkov.

Teraz premýšľate - lámete si hlavu nad vytvorením pluginu, kedy môžete upraviť functions.php? Je to príliš ťažké! Verte tomu, že to tak nie je. To sa deje veľmi rýchlo a ľahko.

Ako nastaviť vlastný doplnok namiesto functions.php

Ak chcete vytvoriť vlastný doplnok na ukladanie kódu, potrebujete:

  1. Vytvorte textový súbor so svojím kódom a uložte ho ako súbor .php
  2. Výsledný súbor .php zabaľte do archívu .zip
  3. Nainštalujte si tento archív ako bežný doplnok WordPress v ponuke Pluginy → Pridať nové

To je všetko, iba 3 akcie.

Krok 1. Vytvorte súbor .php pomocou svojho kódu

Otvorte v počítači program Poznámkový blok a vložte nasledujúci text:

Môžete samozrejme použiť svoje meno pre doplnok v riadku Názov doplnku:

Uložte súbor a dajte mu jedinečný názov, aby WordPress nezamieňal váš plugin s už nainštalovanými. Napríklad: wpcafe-custom-functions.php.

Áno, nezabudnite zvoliť typ súboru „Všetky súbory“ a pri ukladaní pridať príponu .php:

Krok 2. Vytvorte archív .zip

Myslím si, že tu nie je potrebné žiadne vysvetlenie. Stačí vytvoriť archív .zip so súborom v ľubovoľnom pohodlnom archíve.

Krok 3. Nainštalujte ako bežný doplnok

Najľahšia časť. Stačí prejsť do svojej správcovskej oblasti WordPress na adrese Pluginy → Pridať nové a nahrajte svoj archív ako bežný doplnok.

Po jeho aktivácii by sa mal váš nový doplnok zobraziť v zozname všetkých ostatných nainštalovaných doplnkov:

Ako pridať kód

Ak chcete pridať útržok kódu, vložte ho do súboru .php, ktorý ste vytvorili. Alebo môžete kedykoľvek vytvoriť ďalší samostatný doplnok pre dve rôzne funkcie.

Takto by napríklad vyzeral váš súbor .php, ak by ste chceli vytvoriť skratku „Hello World!“:

Tieto komentáre nijako neovplyvňujú výkonnosť vášho kódu a rýchlosť vykonávania doplnku. Ale s nimi sa vám bude ľahšie navigovať a pamätať si, čo robí každá pridaná funkcia.

Stačí zabaliť komentár do lomky a hviezdičky: /* tvoj komentár */

Po vykonaní zmien v kóde môžete znova načítať súbor .php cez FTP alebo jednoducho vytvoriť nový archív .zip a nahrať ho ako nový doplnok a starý odstrániť.

Iné spôsoby, ako sa vyhnúť úpravám functions.php

Všeobecne platí, že ak ste si dostatočne istí svojimi schopnosťami a viete, ako pridať kód do súboru functions.php, nemali by ste mať ťažkosti ani s vlastnými doplnkami. Nie je tu nič ťažké.

Ale rozumieme úplne dobre, ak nemáte chuť sa s tým všetkým radiť ručne. Stále je to WordPress. Preto sa vám môže hodiť bezplatný doplnok Code Snippets, ktorý uľahčuje pridanie vášho dodatočného kódu na web:

Pomocou tohto doplnku môžete pridať rôzne útržky kódu, selektívne im dať názov, popis, aktivovať a deaktivovať jeden alebo druhý kúsok kódu.

Ďalšou vynikajúcou funkciou je, že môžete útržky kódu importovať / exportovať medzi webmi.

Výsledky

Môže sa to zdať ako drobný detail, ale správne umiestnenie vášho dodatočného kódu vám umožní v budúcnosti ľahko prepínať medzi inými témami. Môžete tiež povoliť alebo zakázať jednu alebo druhú funkciu osobitne, ak každú ďalšiu funkciu rozdelíte medzi samostatné doplnky.

Táto metóda si teda naozaj zaslúži pozornosť.

cms mysql (4)

Snažím sa vytvoriť základný zásuvný systém podobný tomu, ktorý často nájdete v CMS, ako je WordPress. Máte priečinok doplnkov, ktoré sú spojené s hlavnou operáciou systému pomocou upozornení o vývoj od roku pomocou dizajnového vzoru Pozorovateľ alebo Udalosť .

Problém je v tom, že systém o tom nemôže vedieť aké udalosti plugin chce konať - takže systém musí načítať každý plugin pre každú požiadavku na stránku, aby zistil, či je tento plugin v určitom okamihu skutočne potrebný. Netreba dodávať, že ide o veľa zbytočných zdrojov - v prípade WordPress, ktorý na každú požiadavku pridá až niekoľko ďalších MB pamäte!

Existujú alternatívne spôsoby, ako to urobiť?

Existuje napríklad spôsob, ako to celé načítať naraz a potom výsledky uložiť do medzipamäte, aby váš systém vedel, že sú lenivé načítanie doplnkov? Inými slovami, načíta systém konfiguračný súbor so zoznamom všetkých udalostí, ktoré chce doplnok zaviazať, a potom ich uloží do APC alebo podobne pre budúce požiadavky?

Ak to tiež nefunguje dobre, potom možno existuje špeciálna štruktúra súborov, pomocou ktorej je možné vykonať kvalifikované odhady, kedy na splnenie požiadavky nie sú potrebné určité doplnky.

Odpovede

Mám nástroj na správu doplnkov, ale používam ho iba s procedurálnymi doplnkami a pri všetkých zahrnutých sa zvyčajne načítava okamžite. Ale pre API založené na udalostiach a lenivé načítanie som si vedel predstaviť použitie plytkých obalov na správu doplnkov a uchýlenie sa k automatickému načítaniu skutočných rozšírení.

/ ** * api: čokoľvek * verzia: 0.1 * nadpis: príklad pluginu * popis: ... * config: * záleží: otherplugin * /$ plugins ["title_event"] = "TitleEventClass"; $ plugins ["secondary"] = pole ("Class2", "callback"); ?>

V tomto príklade predpokladám, že plugin API je jednoduchý zoznam. Tento príklad skriptu feature-plugin-123.php nerobí nič iné, iba ho pridáva do poľa pri načítaní. Týmto spôsobom, aj keď máte tucet doplnkov funkcií, výsledkom bude pre každého ďalší dodatočný súbor include_once.

Ale hlavné API aplikácie alebo pluginu môže namiesto toho iba inštancovať spomínané triedy (buď nové $ eventcb; pre raw-call_user_func_array alebo call_user_func_array pre spätné volania). Týmto sa načíta skutočná úloha do automatického ukladača. Takže máte duálny systém, kde jedna časť spravuje zoznam, druhá je skutočný kód.

Stále si teda predstavujem jednoduchý config.php, ktorý jednoducho uvádza doplnky a nastavenia, ako je tento:

„user / wrapper-for-htmlpurifier.php“); $ cfg ["pretty"] = 1;

Opäť s prihliadnutím na to, že ide iba o obaly údajov / skripty s popisom pluginu pre správu. Môžete tiež použiť skutočné API register_even () a v každom z nich definovať ďalšiu funkciu wrapper. Ale zoznam skvelých mien sa javí ako najjednoduchšia voľba.

Vyššie uvedený nástroj na správu vyzerá hrdzavo a škaredo: http://milki.include-once.org/genericplugins/
Ale nepoužíva sa, ak chcete iba zoznam (tabuľku sql) a správu nastavení. Táto réžia slúži iba na peknú tlač metadát doplnku a udržanie čitateľného súboru config.php.

Nakoniec:

spl_autoload () zahrnúť_cesta a jednoduchý prípad event-> classname, každý po jednom wrapper skripte, stačí zahrnúť všetky naraz.

Uložil by som názov triedy doplnku spolu s jeho podpísanými udalosťami do konfiguračného súboru a potom napríklad uložil analyzovaný konfiguračný súbor do APC. Keď potom dôjde k udalosti, systém môže podľa potreby lenivo načítať príslušné triedy doplnkov.

Wordpress a ďalšie systémy CMS sú veľmi zlým príkladom.

Musíme pochopiť, že modulárny takmer vždy znamená, že je ťažší.

Najlepšou schémou, s akou som na riešenie tejto situácie kedy pracoval, je plugin založený na triedach s prísnou konvenciou pomenovania, ktorý používa autoloader.

Pred použitím doplnku je teda potrebné vytvoriť inštanciu alebo použiť statické funkcie.

Môžete dokonca zavolať doplnok:

napr .:

„/plugins/($parts)/($parts).php"); prestávka; ) // ...)?>

Čo sa týka udalostí:

Túto udalosť musíte staticky zaregistrovať, aby ste sa vyhli dynamickým zmenám.

Databáza bude na to správne miesto. V triede doplnkov môžete mať tabuľky udalostí a metódy install () a uninstall (), pomocou ktorých môžete pridávať konkrétne udalosti alebo viazať metódy na iné udalosti. Toto je jeden databázový dotaz, a ak z neho chcete získať viac, pridajte ho do memcached alebo plochého ini súboru.

Funguje mi dobre. Takže sa mi podarilo získať ťažký systém, ktorý spotreboval 8 MB na žiadosť, aby klesol na 1 MB, s úplne rovnakým zoznamom funkcií, bez predbežného ukladania do pamäte cache. Teraz môžeme pridať ďalšie funkcie a udržiavať systém „čistý“

Dúfam, že to pomôže

Najlepší spôsob je začať s nimi programovať. Dizajnové vzory sú skvelým konceptom, ktorý sa ťažko uplatňuje len pri ich čítaní. Vezmite si niekoľko príkladov implementácií, ktoré nájdete na internete, a vytvorte ich.

Skvelým zdrojom je stránka Údaje a objekty. Prechádzajú šablónami a poskytujú vám koncepčné aj skutočné príklady. Ich referenčný materiál je tiež skvelý.

Toto je hlavný súbor vo vašej téme WordPress. Nachádza sa v / wp-content / themes / (tu je názov vašej témy) /functions.php.
Definuje dôležité vlastnosti témy, upravuje háčiky, vzhľad a funkčnosť a tiež pridáva niektoré funkcie, ktoré potrebujete. Tento súbor sa načítava zakaždým, keď otvoríte ktorúkoľvek stránku WordPress, takže ho možno použiť na úpravu ľubovoľného prvku webu. V tejto súvislosti veľa rád a la “ ako niečo zmeniť na WordPress bez doplnkov »Často sa netýka vytvárania samostatného doplnku pre túto funkcionalitu alebo použitia hotového riešenia, ktoré súvisia s vykonaním zmien v functions.php. To často vedie k informačnému preťaženiu tohto súboru, čo sťažuje analýzu kódu a ešte viac sťažuje opravy. Ale to nie je najnebezpečnejšia vec. Najnebezpečnejšie je to pri zmene aktívnej témy dôjde k strate časti alebo celej potrebnej funkčnosti stránky.

Ako sa program functions.php líši od doplnku

Nič. Function.php je vo svojej podstate akýmsi globálnym neprepínateľným doplnkom, ktorý je viazaný na aktuálnu tému. Ako sa pripája, si môžete pozrieť na WordPress vo wp-settings.php. Ako vidíte zo zdrojového kódu, načíta sa po všetkých doplnkoch, avšak to neprináša žiadne nevýhody ani výhody, okrem snáď možnosti prepísať niečo v pripojených doplnkoch. To tiež neovplyvní rýchlosť vykonávania kódu. Ovplyvnený je iba obsah doplnkov a functions.php. Preto pri výbere aktívnych doplnkov pre svoju tému buďte opatrní a vzdajte sa zbytočných, pre vás málo užitočných, potom môžete svoj web odľahčiť a urýchliť jeho prácu.

Kedy použiť functions.php

Riaďte sa nasledujúcim pravidlom: ak funkčnosť priamo súvisí s aktuálnou témou, ale nie s prevádzkou stránky, napíšte ju do súboru functions.php.

Napríklad by to mohlo byť

  • Nastavenie miniatúr
  • Nastavenie veľkostí bočného panela
  • Nastavovanie miest pre miniaplikácie
  • Oznamovanie miest v navigačnej ponuke
  • Nastavenia témy
  • Ďalšie funkcie vašej témy

Kedy sa vyhnúť použitiu functions.php

Ak by táto funkcia mala fungovať aj pri zmene aktívnej témy, mali by ste sa postarať o jej vloženie do samostatného pluginu.
Tie obsahujú:

  • Definícia počítadiel dochádzky (Google Analytics, Yandex.Metrika, Liveinternet)
  • Nastavenie ďalších funkcií správcovského panelu (napríklad)
  • Konfigurácia zdrojového kódu ()
  • Definovanie skratiek
  • prihlásiť sa

Zoznamy nie sú úplné, ich obsah môžete určiť sami.

Kde môžem pridať tento kód, ak nie je v functions.php? Môžete pre ne písať špeciálne doplnky, existuje však zaujímavejší a jednoduchší spôsob.

mu-pluginy alternatíva k functions.php

Zaujímavá funkcionalita k nám prišla v moderných verziách WordPress od WordPress MU (Multi-User), tzv Pluginy MU... Jeho podstata bola nasledovná. Správca WordPress MU niekedy potreboval definovať doplnky pre celú sieť webov. To pri bežnej funkčnosti nebolo možné, preto bola zavedená špeciálna sekcia: / wp-content / mu-plugins /, kde boli definované. Ďalšou zaujímavosťou je, že súbory doplnkov z tohto adresára sa načítajú pred ostatnými, čo umožňuje preddefinovať niektoré konštanty alebo nastavenia.
Neskôr bolo WPMU zrušené, jeho kód bol integrovaný do hlavných blogov a teraz akýkoľvek WordPress môže využívať funkcionalitu MU-pluginov, čo v súčasnosti znamená Musí použiť, to znamená povinné použitie.

Ako používať mu-pluginy

Najskôr musíte vytvoriť špeciálnu sekciu / wp-content / mu-plugins /
Dali sme do toho potrebné súbory pluginov. Na rozdiel od bežných doplnkov nie je potrebné dodržiavať špeciálnu syntax a funkčnosť je možné deklarovať priamo

Tu bol napríklad vytvorený súbor s kódom dochádzkových počítadiel.
Vo vnútri tento súbor vyzerá takto

// ... Namiesto tohto riadku vložte počítadlo ...

V admin oblasti to bude vyzerať Nevyhnutné

8 odpovedí

Môžete použiť vzor Pozorovateľ. Jednoduchý funkčný spôsob, ako to dosiahnuť:

Výkon:

Toto je moja CRAZY aplikácia 4 + 5 = 9 4 * 5 = 20

Poznámky:

V tomto príklade zdrojového kódu musíte deklarovať všetky svoje doplnky pred skutočným zdrojovým kódom, ktorý chcete obnoviť. Zahrnul som príklad, ako spracovať jednu alebo viac hodnôt odovzdaných doplnku. Najťažšou časťou je napísanie skutočnej dokumentácie, ktorá obsahuje zoznam argumentov odovzdávaných každému háku.

Je to iba jeden spôsob, ako vytvoriť systém doplnkov v PHP. Existujú lepšie alternatívy. Navrhujem, aby ste si prečítali dokumentáciu k WordPressu, kde nájdete ďalšie informácie.

Je nám ľúto, zdá sa, že sa podčiarkovníky nahrádzajú entitami HTML Markdown? Keď bude táto chyba opravená, môžem tento kód preposlať.

Úpravy: Je to jedno, zobrazí sa iba pri úpravách

Povedzme, že vzor pozorovateľa nepotrebujete, pretože vyžaduje, aby ste zmenili metódy triedy na zvládnutie úlohy počúvania a chcete niečo spoločné. A povedzme, že nechcete používať rozšírenie dedenia, pretože svoju triedu už môžete dediť z inej triedy. Nebolo by skvelé mať všeobecný spôsob, ako bez námahy zapojiť ktorúkoľvek triedu? Tu je postup:

_Class = get_class (& $ RefObject); $ this -> _ RefObject = $ RefObject; ) verejná funkcia __set ($ sProperty, $ mixed) ($ sPlugin = $ this -> _ trieda. "_". $ sProperty. "_setEvent"; if (is_callable ($ sPlugin)) ($ mixed = call_user_func_array ($ sPlugin, $ mixed);) $ this -> _ RefObject -> $ sProperty = $ mixed;) verejná funkcia __get ($ sProperty) ($ asItems = (pole) $ this -> _ RefObject; $ mixed = $ asItems [$ sProperty] ; $ sPlugin = $ this -> _ Class. "_". $ sProperty. "_getEvent"; if (is_callable ($ sPlugin)) ($ mixed = call_user_func_array ($ sPlugin, $ mixed);) návrat $ 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 (array (& $ this -> _ RefObject, $ sMethod), $ mixed); $ sPlugin = $ this -> _ Class. "_". $ sMethod . "_afterEvent"; if (is_callable ($ sPlugin)) (call_user_func_array ($ sPlugin, $ mixed);)))) // end class Plugin class Pluggable extends Plugin () // end class Pl uggable ////////////////////// // // ČASŤ 2 //////////////////// trieda Pes (verejné $ Meno = „“; verejná funkčná kôra (& $ sHow) (ozvena "$ sHow
\ n ";) verejná funkcia sayName () (echo"
\ nMoje meno je: ". $ this-> meno."
\ n ";)) // end class Dog $ Dog = new Dog (); //////////////// // // ČASŤ 3 /////// // /////////// $ PDog = new Pluggable ($ Dog); function Dog_bark_beforeEvent (& $ mixed) ($ mixed = "Woof"; // Prepísať slovo „mňau“ pomocou „Woof“ / / $ mixed = "BLOCK_EVENT"; // ak chcete zablokovať návrat udalosti $ mixed;) funkcia Dog_bark_afterEvent (& $ mixed) (echo $ mixed; // ukázať prepísanie) funkcia Dog_Name_setEvent (& $ mixed) ($ mixed = " Coco "; // prepíše" Fido "funkciou" Coco "návrat $ mixed;) Dog_Name_getEvent (& $ mixed) ($ mixed =" Different "; // prepíše" Coco "príkazom" Different "návrat $ mixed;) // ////////////////// // ČASŤ 4 //////////////////// $ PDog-> Názov = "Fido" "; $ PDog-> Bark (" mňau "); $ PDog-> SayName (); echo" Moje nové meno je: ". $ PDog-> Meno;

Prvá časť je to, čo môžete zahrnúť do volania require_once () v hornej časti skriptu PHP. Načíta triedy, aby sa dalo niečo zapojiť.

V časti 2, kde načítame triedu. Poznámka. Nepotreboval som robiť nič špeciálne pre triedu, ktorá sa výrazne líši od vzoru Observer.

V časti 3, kde prepneme našu triedu na „zásuvnú“ (tj. Udržiavame doplnky, ktoré nám umožňujú prepísať metódy a vlastnosti triedy). Ak máte napríklad webovú aplikáciu, môžete mať register doplnkov a tu môžete aktivovať doplnky. Všimnite si tiež funkciu Dog_bark_beforeEvent (). Ak pred príkazom na návrat nastavím $ mixed = "BLOCK_EVENT", zablokuje to štekanie psa a zablokuje sa aj Dog_bark_afterEvent, pretože nebude žiadna udalosť.

V časti 4 je to normálny operačný kód, nezabudnite však, že to, čo si myslíte, že nebude fungovať takto. Napríklad pes ho nevysloví menom „Fido“, ale „Coco“. Pes nehovorí mňau, ale koho. A keď sa budete chcieť neskôr pozrieť na meno psa, zistíte, že je to „Miscellaneous“ a nie „Coco“. Všetky tieto prepísania boli predstavené v časti 3.

Ako to teda funguje? Vylúčme teda eval () (ktorý každý hovorí „zlý“) a vylúčme, že to nie je vzor pozorovateľa. Funguje to teda so skrytou prázdnou triedou s názvom Pluggable, ktorá neobsahuje metódy a vlastnosti používané triedou Dog. Keď sa to stane, budú pre nás použité magické metódy. Preto v častiach 3 a 4 odkazujeme na objekt odvodený z triedy Pluggable, a nie na samotnú triedu Dog. Namiesto toho sme nechali triedu Plugin „dotknúť sa“ objektu Dog za nás. (Ak ide o dizajn, o ktorom neviem, dajte mi vedieť.)

Najčastejšie sa používa metóda háku a poslucháča, ale môžete urobiť aj ďalšie. V závislosti na veľkosti vašej aplikácie a na tom, kto chce vidieť kód (bude to skript FOSS alebo čokoľvek v domácnosti), bude mať veľký vplyv na to, ako chcete vyriešiť doplnky.

kdeloach má pekný príklad, ale jeho implementácia a funkcia hook sú trochu neisté. Požiadal by som vás o ďalšie informácie o podstate aplikácie php pre váš e-mail a o tom, ako vidíte doplnky.

1 na kdeloach odo mna.

Tu je prístup, ktorý som použil, pokúša sa kopírovať z mechanizmu signálu / slotu Qt, akýsi vzor pozorovateľa. Objekty môžu vysielať signály. Každý signál má v systéme identifikátor - skladá sa z id + objektu odosielateľa. Každý signál je možné viazať na prijímače, čo je jednoducho „volaný“, pomocou triedy zbernice zasielate signály každému, kto má záujem o ich príjem. niečo sa stane, vysielate signál. Ďalej je uvedený príklad a príklad implementácie

Prihlásiť sa (); ?>

Najjednoduchší spôsob je nasledovať Jeffovu radu a pozrieť sa na existujúci kód. Skúste sa pozrieť na Wordpress, Drupal, Joomla a ďalšie známe PHP-CMS, aby ste zistili, ako vyzerajú a vyzerajú ich API. Týmto spôsobom môžete dokonca získať nápady, na ktoré by vás možno predtým nenapadli, aby boli veci trochu hrubšie.

Priamejšou odpoveďou by bolo napísať všeobecné súbory, ktoré by zahrnuli do súboru na zahrnutie, aby sa zabezpečila použiteľnosť. Toto bude kategorizované a NIE je poskytované v jednom MASÍVNOM súbore „hooks.php“. Buďte opatrní, pretože nakoniec dôjde k tomu, že súbory, ktoré obsahujú, majú nakoniec čoraz viac závislostí a funkcií. Pokúste sa obmedziť závislosť API. I.E menej súborov na zahrnutie.

Je tu elegantný projekt s názvom