Edasilükatud kujutise laadimine - WordPressi jaoks laisk koormuse pluginad. Parim viis PHP rakenduste pluginate lahendamiseks Legistamise plugina php

  • 20.06.2020

Funktsioonifaili - meelelahutuslik assistent saidi funktsionaalsuse laiendamisel! Tõepoolest, kui seda kasutatakse selle otstarbeks, aga paljud blogi / saidi omanikud suurepäraselt omakorda functions.php Solanka meeskonnale.

Igal juhul on olemas teostatavus ja piirangud (piirangud, sagedamini loogilisemad) ja seetõttu mõned käivitatavad kood, mille eesmärk on kohandada WP kerneli (mitte teema) parameetreid, mis on õigesti mallist välja ...

Kui vestlus on kohapealse funktsionaalsuse moderniseerimisel, artiklite "ilma pluginateta ..." kindlasti nõustuda kõik koodiplokid legendaarse funktsioone.php. See ei ole õige!

Kõik puhtalt tehnilised laiendused (mis ei ole seotud otseselt stiilis malliga), on nende registreerimise jaoks korraldatud pistikute ülekandmiseks loogilisem.

Loo see! Ja ka ülemmäär eeliste ja miinused (Koim on oluliselt vähem) ...


Sektsioonid Artiklid:

kuidas luua oma plugin

alljärgnevas tekstis õppime, kuidas luua oma plugina nagu te käte: tegeleda kõik üksikasjad, nüansid. Me õpime, mida plusse ja miinuseid (miinused on vähem! Ja pigem ei ole see kõikidel puudustel, vaid üks või muu iga administraatori teostatavus)

mis vahe on funktsioone.php faili vahel pluginast

Miks peaks mõned kood seotud otse saidi funktsionaalsusega, edastage eraldi plugina?

Kõige funktsioone faili, selle eesmärk ja välimus ei erine plugina (lihtsalt - subjekti plugin))! - Selle peamine ülesanne on rikastada kasulikku funktsionaalsust (aktiivne) mall.

Näiteks "navigeerimine", kus loogiliselt menüü nupud on kaunistatud CSS, stiil aktiivse teema - võib olla õiged lahkuda juure malli.

Mis on kasu - jagada funktsioone faili eraldi failide või eraldi plugina?

Näiteks kõige banaalne - kas sa otsustasid muuta malli!? ... Selle tulemusena - kõik funktsionaalsed arengud kaovad, sest kogu kasulik kood asub funktsioone faili (ma nägin sellist faili suurust 750klo)

Muidugi saate uue teema funktsioonide dokumentatsiooni üle kanda, kuid - tass kõike, ilma redigeerimiseta, mis võtab ära palju kasulikku aega, ei saa teha: ahv ja töö)

Ja siis:

saidi faili allalaadimine

Lühidalt: Allalaadimise kord saidi kerneli faile meie näites on aktiivne saidi pluginad (pluginad kausta) ja nende sisu ning seejärel funktsioone.php faili sisu töödeldakse. See kõik millisekundid ja on ebatõenäoline, et seal on tõsiselt rääkida võitnud lehekülgede kiirusest.

Kuigi tundub, et sellise laadimise järjekord paigaldatavad arendajad, kus teine \u200b\u200bkoht on määratud funktsioonide faili (nagu arvatavasti Kergemini element), ainult pluginate laialdase kasutamise fakt, sageli massiivne sisu ...

Keegi hüüata: teine \u200b\u200bplugin ...? see on raske!

Ja ma ütlen, et see ei mõjuta seda pigem ... pigem vastupidi, kui see on läbimõeldud saidi loomiseks.

Veelgi enam, mõne koodi üleandmise kasulikkus on ilmselgelt ilmne, nimelt saidi laadimiskiirus ei sõltu aktiivsete plug-ins, vaid nende sisust! Niisiis, miks mitte vähendada funktsiooni faili, mis nagu mainitud, laaditakse veidi hiljem ..? Ja pealegi, see on täieõiguslik tohutu plug-in malli tasemel! Nii et kus on enamiku tema koodi koht?

Minu arvates (aktiivne, töötavad) mall peab sisaldama ainult selle parameetreid konkreetselt.

ekskursioon aritmeetikale ...

  1. see laaditakse hiljem, küsitakse, miks mitte üle kanda, kus kooditöötlus toimub peamiselt ja vastavalt WP kerneli parameetrite administraatorite poolt lugeda kiiremini ja töödeldava saidi käivitamise etapis.
  2. teatud teostatavuse ja saidi funktsionaalsuse teostatavus ja loogiline organisatsioon.
  3. muud, mis ei ole oluline!

Lisaks sellele, nagu öeldi, on funktsioonide fail sama plugina, "Ma küsin uuesti, miks on kõik, mis teda teda karistaks? Ja saidiga töötamise protsessis segaduses tohutu, raske lugeda dokumendi, mis muide on uskumatult ja põhjendamatult tegeleb selle sisu.

Valguse plugina loomiseks on lihtsam ja loogiline loogiline loomine ja unustamine ...

Lühidalt öeldes otsustab kõik: kuulata oma kogemusi või mõne koolituse artikli arvamust.

Siis järgib WordPressi raamatukogusid, kuid mitte artiklitest ... Artiklitest on võimalik joonistada ainult ühe idee ...

Kuidagi siin-s)

... neile, kes on huvitatud:

uurige kõiki kerneli reegleid (ja muide, laadimisraamatute kirjeldamine)) võib olla WordPressi koodide imeline.

... ühes järgmistest artiklitest on lihtsalt selline phkerker! ... ja lingid kasulikele lehtedele.


! .. Uuenduste allkirjastamine veebisaidil -
... lõhkuda teadmatusest ..!

kuidas luua täiendavate failifunktsioonide plugin.php

Muidugi postitatud plug-in on lihtne lahendus, kuid uuring peaks algama Azovist!

Lisaks sellele, et saavutada artiklis võetud eesmärgid, ei vaja võimasid pluginaid!

Me läheme hosting paneeli vastuvõtva (või FTP tööriistad) avada failihaldur.

Avage kausta pluginad ja looge selles veel üks kataloog (meie plugina failide kaust). Nimi on absoluutselt mis tahes ladina keeles. Mul on nimi "test" näitena.

Pange tähele, et plug-in administraatori nimi on selline, mis on kirjutatud plugininime: testiteave päis (vt kommentaare).

Avage loodud kaust ja looge sellesse meisterplugina faili:

... pealkirjaga öelge minu-functions.php ja tuua sellised read oma kehale (ja faili nimi võib olla absoluutselt igas)

Rida kommentaarides - Teave plugina kohta, mis kuvatakse administraatori paneelil (plug-menüüs).

Kohe pärast kausta ja faili loomist ilmub teie plugin adminis. Vaata.

EXE-s saate selle mõneks ajaks aktiveerida - kuid midagi ei juhtu, plugin on ikka veel tühikäigul.

See on kõik!! Lihtne plugin loodi ja tähelepanuväärne, oma kätega oma kasutuse jaoks (AS Matroskiny kass ütles öelda).

Selle esitluse kardinal läheb ...
... Rambid tolmu kurb valede ...

Aga muide ja kasuliku kino telesarjast "ilma pluginateta" - vaata, arvan, et funktsioonifaili video koodis soovitatud kood?

Kindlasti olete korduvalt kohanud, et teil on vaja lisada mõnda koodi oma saidile WordPressis uue funktsionaalsuse lisamiseks. Ma räägin nüüd Google'i analüütikute skriptide kohta, mida sisestate oma teema päisesse osa. Ei. I umbes nende väikeste fragmentide koodi, mida te leidsite foorumite internetis ja kohe jooksis lisada neid oma faili functions.php..

Olgem ausad, sest sa vähemalt kord tegid seda õigesti? Ja see on arusaadav, sest see on kirjutatud foorumis - lisage see kood funktsioone.php teie teema WordPressis.

Tõde on see, et lisage iga Internet leidnud Code Functions.php - mitte alati hea mõte. Turvalisem otsus loob selle koodiga oma kohandatud Mini plugin.

Selles õppetund me ütleme, millistel juhtudel saate lisada koodi funktsioone.php ja kus see on parem kasutada eraldi plugin. Samuti näitame, kuidas saate luua kohandatud plug-in ja lisada oma koodi.

Mis on funktsioone.php.

Kui te kunagi ronis teie WordPressi saidi failidesse, võiksite komistuda mitmetesse funktsioone.php-failidesse. Functions.php-fail, mida me selles õppetundis räägime, on kaustas: WP-contenthemesbach_memfunctions.php.

Ilmselgelt on see fail, mis salvestab kõik teie konkreetse teema funktsioonid ja seaded, \\ t aktiivne hetkel. Pöörake tähelepanu sõna "aktiivne", sest selles ja seal on peamine sõnum see õppetund.

Miks alati kasutada funktsioone.php on halb mõte

Ärge mõistke valesti, kasutage funktsioone.php väikeste koodi tükkideks paari joonega - see on täiesti normaalne olukord. Me räägime sellest, kas see on soovimatu kasutada funktsioone.php ladu absoluutselt kõigi lisatud koodi jaoks. See ei ole universaalne lahendus igale olukorrale.

Põhjus №1.

Kui teie disaini teema jaoks kuvatakse värskendus, kaotate kõik, mida lisate funktsioone.php-failis. Ma tean, mida sa lihtsalt arvasid - aga kas see on lihtsalt selliste olukordade jaoks?

Muidugi on. Aga seal on ka palju inimesi, kellel pole aimugi, mida tütar teema on. Või on inimesi, kes teie poole pöördusid, et aidata lisada oma teemal koodi.

Seetõttu on see põhjus selles nimekirjas. Kui lisate koodi funktsioone.php ilma tütarettevõtja kasutamata, see on teie esimene murettekitav kella.

Põhjus # 2.

Isegi kui seadistate õigesti ja kasutate tütarettevõtjat. Mis juhtub, kui soovite minna teise disaini teema? Loodan, et olete lisanud iga funktsiooni muudatuse kohta kommentaari.php-fail, sest ilma selleta on üleminek teisele teemale äärmiselt valus. Ma arvan, et sa mõtlesid mõtte.

Põhjus number 3.

Kui olete lisanud koodi funktsioone.php-le, mis täiesti ootamatult murdis teie saidi täielikult ja näete tühja valget ekraani - vajate FTP-klienti allalaadimiseks "riknenud" funktsioone.php, muutke seda ja laadige alla saidile tagasi. Rõõm on ise.

Kui saate kasutada funktsioone.php

Functions.php nõuetekohane kasutamine tütarettevõtte jaoks, mis on praegu aktiivne lubatud valik. Kuid pidage meeles, ma keskendusin sellele sõnale " aktiivne"?

Kui lisate koodi osad, mis on mõttekas ainult selle teemaga töötavad, saate functs.php (tütarettevõttes) turvaliselt kasutada. Siin on mõned näited, kui see on asjakohane:

  • Teise stiilis faili (.css) lisamine teie teema jaoks
  • Salvestuse väljakuulutamise pikkuse muutmine (postitage väljavõte), nii et sait tundub parem
  • Lisades kohandatud fondid praeguse teema jaoks
  • Lokaliseerimisfaili lisamine praeguse teema tõlkimiseks

Teisisõnu, iga kord, kui lisate või muudate midagi konkreetse praeguse teemaga seotud või muuta, saate funktsioone turvaliselt kasutada .Php.

Kui see on parem teha ilma funktsioonideta.php

Kasuta funktsioone.php lisada rohkem globaalseid asju ja funktsioone, mida te teoreetiliselt saab tulla mugav ja teise teema jaoks - see on halb mõte.

Siin on paar näidet, kui see on parem teha ilma funktsioonita.php:

  • Kohandatud vidinate loomine, mida sageli kasutate
  • Kohandatud lühikeste lühikaade loomine
  • Koodi lisamine, mis ei sõltu registreerimise teemal (Google Analytics Code jne)

Sellistel juhtudel on parem salvestada see kood sõltumata teie disaini teemast. Ja saate seda teha kohandatud pluginate abil.

Kas olete nüüd mõelnud - murdke oma pea plugina loomise üle, kui saate functs.php redigeerida? See on liiga raske! Uskuge mind, see ei ole. Seda tehakse väga lihtsalt ja kiiresti.

Kuidas luua fuctions.php asemel kohandatud plugin

Kohandatud plugina loomiseks koodi salvestamiseks vajate:

  1. Looge oma koodiga tekstifail ja salvestage see AS .fp-fail
  2. Pakett vastuvõetud.php-fail v.zip arhiiv
  3. Seadke see arhiiv tavalise WordPressi pluginana menüüs Pluginad → Lisa uus

See on kõik, vaid 3 meedet.

Samm 1. LUGEMINE.PHP faili oma koodiga

Avage arvutis Notepad ja sisestage järgmine tekst:

Muidugi saate oma nime seadistada plugina nime joonis:

Salvestage fail ja andke sellele mingi ainulaadne nimi, nii et WordPress ei sega oma plugin juba installitud. Näiteks: Wpcafe-custom-functions.php.

Jah, ärge unustage, kui salvestate, et valida failide tüüp "Kõik failid" ja lisage Extension.php:

Samm 2. create.zip arhiiv

Ma arvan, et siin pole selgitust. Lihtsalt create.zip arhiiv oma faili tahes mugava archiver.

3. samm. Installige tavalise plugina

Kõige lihtsam osa. Lihtsalt minge WordPress Admininka sisse Pluginad → Lisa uus Ja laadige alla oma arhiiv kõige tavalise pluginana.

Niipea kui te selle aktiveerides, näete oma uut plugin kõigi teiste installitud pluginate loendis:

Kuidas lisada oma koodi

Koodifragmendi lisamiseks sisestage see lihtsalt loodud faili.php-le. Või saate alati teha teise eraldi plugina kahe erineva funktsiooni jaoks.

Näiteks näeb see välja nagu teie fail.php, kui soovite teha lühikirja "Hello World!":

Need kommentaarid ei mõjuta teie koodi toimimist ja plug-in. Aga teil on lihtsam navigeerida nendega ja pidage meeles, et see muudab iga lisamise funktsiooni.

Lihtsalt mähkige oma kommentaar Süntaksi kaldus ja tärniga: /* sinu kommentaar */

Pärast muudatuste tegemist oma koodi saab taaskäivitada.php faili kaudu FTP või lihtsalt luua uus one.zip arhiiv ja alla laadida uue plugina ja kustutada vana.

Muud viisid EDKES.PHP vältimiseks

Suured ja suured, kui olete oma võimeid piisavalt kindel ja tean, kuidas lisada Code Functions.php, ei tohiks teil olla raskusi ja kohandatud pluginad. Siin pole midagi keerulist.

Aga me mõistame suurepäraselt hästi, kui sul ei ole soovi segadusse segadusse jama. Sellegipoolest on see WordPress. Seetõttu saate kasutada tasuta koodi snippets pluginat, mis muudab teie lisakoodi lisamise lihtsaks:

Selle plugina abil saate koodiga lisada erinevaid jooni, anna neile nimi, kirjeldus, aktiveerida ja ühendada selektiivselt ühe või mõne teise väljavõtte koodi.

Teine lahe funktsioon on see, et saate importida / eksportida oma koodi fragmente saitide vahel.

TULEMUSED

See võib tunduda ebaoluline tühiasi, kuid teie lisakoodi õige asukoht võimaldab teil vahetada teiste disainiteemade vahel ilma probleemideta. Võite lisada ka või ühendada ühe funktsionaalsuse individuaalselt, kui jagate iga lisafunktsiooni individuaalsete pluginate vahel.

Niisiis, see meetod väärib tähelepanu.

cMS MySQL (4)

Püüan luua põhilise plugina süsteemi, mis sarnaneb sageli CMS-is, näiteks WordPressiga. Teil on plugina kaust, mis on seotud põhisüsteemi operatsiooniga, kasutades teateid sündmused S. Disaini malli kasutamine Vaatleja. või Sündmus .

Probleem on selles, et süsteem ei saa teada mis sündmusi Plugin soovib tegutseda - seetõttu peaks süsteem igale lehekülje taotlusele iga plugina laadima, et teada saada, kas see plugin on mingil hetkel tõesti vajalik. On ütlematagi selge, et see on palju investeerinud ressursse - wordPressi puhul, mis lisab iga taotluse jaoks mitu täiendavat MB mälu!

Kas on olemas alternatiivseid viise?

Näiteks on olemas võimalus selle üks kord alla laadida ja seejärel vahetada tulemusi, nii et teie süsteem teaks, kuidas pluginad laisk boot? Teisisõnu, süsteem laaditakse konfiguratsioonifaili, milles kõik sündmused on näidatud, et plugin soovib siduda ja seejärel salvestab need APC-sse või midagi tulevaste taotluste jaoks?

Kui see toimib ka halvasti, siis võib-olla on spetsiaalne faili struktuur, mida saab kasutada mõistlike eelduste saamiseks, kui päringu täitmiseks ei ole vaja mõningaid pluginaid.

Vastused.

Mul on plug-in juhtimise tööriist, kuid ma kasutan seda ainult menetluspäraste pluginate ja kogu kaasasoleva hulgaga laaditakse tavaliselt kohe. Aga API puhul, mis põhineb sündmustel ja laiskast allalaadimist, võin ma esitada väikeste ümbriste abil pluginate juhtimiseks ja tegelike laienduste automaatseks laadimiseks.

/ ** * API: Ükskõik * versioon: 0.1 * Pealkiri: Plugin Näide * Kirjeldus: ... * Config: * Sõltub: autoplugin * / $ pluginad ["Pealkiri_event"] \u003d "Peitaventclass"; $ pluginad ["sekundaarne"] \u003d massiiv ("CLASS2", "Tagasihelistamine"); ?\u003e

Selles näites eeldan, et plug-in API on lihtne nimekiri. See näide funktsiooni-plugina-123.php skripti kohta ei tee midagi, kuid laadimisel lisage massiivi. Seega, isegi kui teil on tosin plug-in funktsioone, see toob kaasa ainult täiendava hulka_once igale.

Kuid peamine rakendus / või pistik-in API võib lihtsalt luua nimetatud klasside (või uue $ EVENTSCB juhtumeid See viib omakorda kaasa autolaadija tegeliku ülesande koormuse. Seega on teil kahekordne süsteem, kus üks osa kontrollib nimekirja, teine \u200b\u200bon tõeline kood.

Seega kujutan ikka veel lihtsat config.php, mis lihtsalt loetleb pluginaid ja seadeid:

"Kasutaja / ümbris-htmlpurifier.php"); $ CFG ["Pretty"] \u003d 1;

Jällegi, võttes arvesse, et see on lihtsalt kesta / andmete stsenaariumid, mille kirjeldus on plug-in kontrollitavuse. Võite kasutada ka tegelikku registrit_even () API ja määratleda täiendava ümbrise funktsiooni igas. Kuid klassi nimede loend tundub lihtsaim valik.

Eespool nimetatud juhtimisvahend tundub roostes ja kole: http://milki.include-once.org/genicloogiins/
Kuid seda ei kasutata, kui teil on vaja ainult nimekirja (SQL tabelit) ja seadete haldamist. Need üldkulud on mõeldud ainult plug-in metaandmete kaunis trükkimiseks ja Salvesta config.php loetavaks.

Lõpuks:

sPL_AUTOLOAD () Sissehelistage ja lihtne sündmus -\u003e klassikeelne registreerimine, üks skript-kest igaüks, pöördub lihtsalt kõik korraga.

Ma päästaksin plugina klassi nime koos oma allkirjastatud sündmustega konfiguratsioonifailis ja seejärel salvestasid näiteks analüüsitud konfiguratsioonifaili APC-s. Siis, kui sündmus käivitub, saab süsteem laisk laadida vastavate plug-inside klasside laadimine vastavalt vajadusele.

WordPress ja muud CMS-süsteemid on väga halvad näited.

Me peame mõistma, et modulaarne, peaaegu alati tähendab, et see on raskem.

Parim skeem, millega ma selle olukorra lahendamiseks kunagi töötanud, on klassipõhine plugin, millel on range nimega kokkulepe autolaadija abil.

Seega peate enne plugina kasutamist looma eksemplari või kasutage staatilisi funktsioone.

Võite isegi helistada pluginale:

nt:

"/pruginins/(Stabrs)/ (lists).php"); Murda; ) /// ...)?\u003e

Nagu sündmuste puhul:

Dünaamilise muutuse vältimiseks peate selle sündmuse staatiliselt registreerima.

Andmebaas on selle jaoks õige koht. Sul on sündmused ja paigaldada () ja desinstallimine () meetodeid pluginklassis, et lisada teatud sündmused või sidumismeetodid teistele sündmustele. See on andmebaasi üks päring ja kui soovite sellest rohkem saada, lisage see membrakestele või korterisse INI-faili.

Töötab minu jaoks hästi. Seega õnnestus mul saada raskesse süsteemi, mis tarbib 8 MB-d, et langeda kuni 1 MB, millel on täpselt sama funktsioonide loetelu ilma eelneva vahemäluta. Nüüd saame lisada rohkem funktsioone ja säilitada süsteemi "puhas"

loodan, et see aitab

Parim viis on nendega kodeerimine. Disainimallid on suurepärane kontseptsioon, mida on raske neid lihtsalt lugeda. Võtke mõned näited rakendustest, mida leiate internetis ja loovad nende ümber.

Suurepärane ressurss on "Andmete ja objekti" lehekülg. Nad sirvivad mustreid ja annavad teile nii kontseptuaalsete kui ka tegelike näidete. Nende võrdlusmaterjal on ka suurepärane.

See on teie WordPressi teema peamine fail. Asub / WP-sisu / teemad / (siin on teema teema) /functions.php.
See määratleb teema olulisi omadusi, konksud, välimus ja selle funktsionaalsus on kohandatud ja mõned lisatakse mõned vajalikud funktsioonid. See fail on koormatud iga kord, kui avate mis tahes WordPressi lehekülje, nii et saate selle kohaga muuta ühtegi elementi. Sellega seoses paljud nõuanded a la " kuidas muuta midagi WordPressis ilma pluginateta »Sageli puudutavad täpselt muutusi funktsioone.php, selle asemel, et luua eraldi plug-in funktsiooni või kasutada valmislahust. Sageli toob see kaasa selle faili teabe ülekoormuse, muutub kood raskeks lahti võtta, ja veelgi raskem teha parandusi teha. Aga see ei ole kõige ohtlikum. Kõige ohtlikum on see kui uuring on muutunud, osa või kõik vajalikud saidi funktsionaalsus kaob.

Mis vahe on funktsioonide vahel.php plugina vahel

. Sisuliselt on funktsioone.Php mingi globaalne unikaalne plugin, mis on seotud praeguse teemaga. Kui see ühendab WordPressiga, saate WP-Settings.php näha. Nagu saab näha lähtekoodi, selle allalaadimine toimub pärast kõigi plug-ins, aga see ei anna mingit puudusi ega eeliseid, välja arvatud võime tühistada midagi pluginas ühendatud. Koodeksi kiirus ei mõjuta see kedagi. Ainult pluginate ja funktsioonide sisu.php mõjutab. Seetõttu olge ettevaatlik, kui valite aktiivse plug-i jaoks oma teema jaoks ja loobuge tarbetut, tarbetut teile, siis saate oma saidi hõlpsasti hõlpsasti hõlbustada ja kiirendada oma tööd.

Kui teil on vaja kasutada funktsioone.php

Järgige järgmist reeglit: kui funktsionaalsus on otseselt seotud praeguse teemaga, kuid mitte saidi tööga, kirjutage see funktsioone.php.

Näiteks võib see olla

  • Miniatuuride seadmine
  • Suuruste seadistamine Schidbarov
  • Vidinate kohtade seadmine
  • Navigeerimismenüü kohtade kuulutamine
  • Teemad Seaded
  • Teie teema lisafunktsioonid

Kui vältida funktsioone kasutades.php

Kui funktsionaalsus peaks töötama isegi aktiivse teema muutmisega, tasub hoolitseda selle esitamise eest eraldi pluginale.
Seda saab seostada:

  • Osavõtjate loendurite määratlus (Google Analytiys, Yandex.metika, LiveInternet)
  • Reguleerige täiendavat administraatori funktsionaalsust (näiteks)
  • Lähtekoodi seadistamine ()
  • Shortcodes'i määratlus
  • kontrollima

Mittetäielikud nimekirjad, saate oma sisu ise määratleda ise.

Kust teha see kood, kui mitte funktsioone.php? Neile saab kirjutada spetsiaalseid pluginaid, aga on palju huvitavam ja lihtsam.

mu-pluginad alternatiivina funktsioone.php

WordPressi kaasaegsetes versioonidesse WordPress MU (MULTI-kasutaja) kaasaegsed versioonid tuli huvitavaks funktsionaalsuseks Mu pluginad.. Selle olemus oli järgmine. WordPress Mu administraator peab mõnikord vaja määratleda kogu saitide võrgustiku pluginaid. Tavaline funktsionaalsust ei olnud võimalik saavutada, nii et nad tutvustasid erilist osa: / WP-sisaldus / mu-plugin /, kus nad määrati. Teine huvitav, plug-in faile selle kataloogi laaditakse enne kõik teised, mis võimaldab ette määrata mõned konstandid või seaded.
Hiljem WPMU kaotati, selle kood integreeriti peamine blogi ja nüüd võib iga WordPress kasutada mu-pluginate funktsionaalsust, mis on nüüd dešifreeritud Peab kasutama.See tähendab, et see on kohustuslik.

Kuidas kasutada mu-pluginad

Kõigepealt peate looma spetsiaalse sektsiooni / wp-sisu / mu-poginsi /
Selles paneme soovitud plug-in faile. Erinevalt tavapärastest pistikprogrammidest ei ole vaja taluda spetsiaalset süntaksit ja funktsionaalsust saab välja kuulutada otse

Siin on näiteks faili loodud osalemisjuhendiga.
Selle faili sees näeb välja selline

// ... Selle liini asemel sisestage loendurid kood ...

A-adminis näeb ta välja Vajalik

8 vastust

Võite kasutada vaatleja malli. Lihtne funktsionaalne viis seda teha:

Väljund:

See on minu hull rakendus 4 + 5 \u003d 9 4 * 5 \u003d 20

Märkused:

Selles näites peab lähtekood deklareerima kõik oma pluginate enne tegeliku lähtekoodi, mida soovite laiendada. Lisasin näite näide sellest, kuidas ühe või mitme plugina edastatud väärtuse käsitseda. Kõige raskem osa sellest on kirjutada tegelik dokumentatsiooni, mis loetleb, millised argumendid edastatakse igale konksule.

See on vaid üks võimalus luua plug-süsteemi PHP-s. Lisateabe saamiseks on parimaid alternatiive, ma soovitan teil tutvuda WordPressi dokumentatsiooniga.

Vabandame, tundub, et allkehad asendatakse HTML Markdown Objects? Ma võin selle koodi uuesti avaldada, kui see viga fikseeritakse.

Redigeeri: NeverMind, see ilmub ainult siis, kui redigeerite

Niisiis, ütleme, et te ei vaja vaatleja muster, sest see nõuab, et muudate klassi meetodeid kuulamisülesande tegemiseks ja soovite midagi ühist saada. Ja ütleme, et te ei soovi kasutada pärandit, sest te saate oma klassi mõnest teisest klassist juba pärida. Oleks tore olla üldine võimalus teha iga klassi ühendatud ilma palju pingutusteta? Siin on, kuidas:

_Class \u003d get_class (& $ refolject); $ See -\u003e _ RefOBject \u003d $ Refoljeje; ) Avalik funktsioon __SET ($ Sproperty, $ segatud) ($ SPLUGIN \u003d $ see -\u003e _ klass. "_". $ Sproperty. "_Seevent"; If (on $ segatud);) $ see -\u003e _ refoobject -\u003e $ sproperty \u003d $ segatud;) avaliku funktsiooni __get ($ sproperty) ($ AsiTems \u003d (Array) $ see -\u003e _ refoobject; $ unisex \u003d $ AsiTems [$ sproperty] ; $ sPLUGIN \u003d $ see -\u003e _ klassi. "_". $ sproperty. "_getevent"; if (is_callable ($ splugin)) ($ Mixed \u003d call_user_func_array ($ splugin, $ segatud);) Tagasi $ Mixed;) avaliku funktsiooni __call ($ Smethod, $ Mixed) ($ splugin \u003d $ see -\u003e _ klassi. "_". $ SMETHOD. "_BeForeEvent"; if (is_callable ($ splugin)) ($ unisex \u003d Call_user_Func_Array ($ splugin, $ Mixed );) if ($ unisex! \u003d "block_event") (call_user_func_array (massiiv (ja $ -\u003e _ refoobject, $ smethod), $ segatud); $ splugin \u003d $ see -\u003e _ klassi. "_". $ SMETHOD. "_Afterevent"; if (is_callable ($ Splugin)) (Call_user_Func_Array ($ Splugin, $ Mixed);)))) // END CLAS PLUGIN CLUGGABLE laieneb PLUGIN () // END KLASSI PL Uggable ////////////////////////////////////////////////////////////////////////////// ///////////////// // Name \u003d ""; Avalik funktsioon Bark (& $ Show) (Echo "$ Show
n ";) avaliku funktsiooni SayName () (Echo"
Nmy nimi on: ". $ See-\u003e Nimi."
\\ N ";)) // End klassi Koer $ Koer \u003d New Dog (); ///////////////// // // osa 3 //////// //////////// $ pdog \u003d uus kaasatavad ($ koer); Funktsioon Dog_bark_beforeEvent (& $ Mixed) ($ Mixed \u003d "Auh"; // alistamine Öeldes "MEOW" sõnaga "Auh" / / $ Mixed \u003d "block_event"; // kui soovite blokeerida korral tulu $ segatud;) Funktsioon Dog_Bark_Afterevent (& $ Mixed) (Echo $ Mixed; // näidata tühistamine) Funktsioon Dog_name_seTevent (& $ Mixed) ($ Mixed \u003d "Coco"; // alistada "fido" sõnaga "COCO" RETURN $ Mixed;) Funktsioon Dog_Name_GeTevent (& $ Mixed) ($ unisex \u003d "erinevad"; // alistamine "Coco" sõnaga "eri" Mine $ Mixed;) / //////////////// // ////////////////////// $ PDOG-\u003e NAME \u003d "FIDO"; $ PDog-\u003e PUUKOORE ( "MEOW"); $ PDog-\u003e Sayname (); Echo "Minu uus nimi on:". $ PDOG-\u003e NIMI;

Esimeses osas saate oma PHP-skripti ülaosas lubada päringu_once () helistamiseks. See laseb klasside midagi ühendatud.

2. osas, kus me klassi alla laadime. Märge. Ma ei pea tegema midagi erilist klassi, mis on oluliselt erinev vaatleja malli.

3. osas, kus me vahetame meie klassi "ühendatud" (s.o toetame pluginad, mis võimaldavad meil klassifitseerida klassi meetodeid ja omadusi). Niisiis, näiteks kui teil on veebirakendus, saate registreerida pluginate registrit ja saate siin pluginad aktiveerida. Pange tähele ka koer_bark_befereventi () funktsiooni kohta. Kui ma installiin $ segatud \u003d "Block_event" ees tagastamisoperaatori ees, blokeerib see koera Laya-st ja blokeerib ka dog_bark_afreventi, sest seal ei ole sündmust.

4. osas, et tavaline töökood, kuid märkige, et see, mida te arvate, ei tööta. Näiteks koer ei kuuluta seda nimega "Fido", kuid "Coco". Koer ei ütle "meow", vaid "väärt". Ja kui soovite näha koera nime hiljem, leiad, et see on "erinev" ja mitte "Coco". Kõik need ülekirjutused esitati 3. osas.

Niisiis, kuidas see toimib? Noh, lase neil välistada eval () (mida igaüks ütleb "kurja") ja välistavad, et see ei ole vaatleja muster. Seega on see, kuidas see toimib, on peidetud tühi klass, mida nimetatakse plugableble, mis ei sisalda koeraklass kasutavaid meetodeid ja omadusi. Seega, nagu see juhtub, on meie jaoks maagilised meetodid kaasatud. Seetõttu suhetes 3 ja 4, me suhtleme objektiga saadud klassi tuuable, mitte koera klassi ise. Selle asemel lubame meid koera objekti plugina klassi "puudutada". (Kui see on mingisugune disain, mida ma ei tea - andke mulle teada.)

Konksu ja kuulaja meetodit kasutatakse kõige sagedamini, kuid on ka teisi asju, mida saate teha. Sõltuvalt teie taotluse suurusest ja kes tahab näha koodi (see on foss skript või midagi maja) mõjutab oluliselt, kuidas soovite pluginad lahendada.

kDelaochil on meeldiv näide, kuid selle rakendamine ja konksu funktsioon on natuke ohtlik. Ma palun teil anda rohkem teavet oma kirja PHP iseloomu kohta ja kuidas näete pluginaid.

1 Minult kdeloachile.

Siin on lähenemisviis, mida ma kasutasin, on katse kopeerida QT-signaalidest / teenindusaegadest QT mehhanismi, mingi vaatleja malli. Objektid võivad signaale eraldada. Iga signaal on identifikaatoris süsteemis - see koosneb ID-ID-objekti-saatjast. Iga signaali saab seostada vastuvõtjaga, mis on lihtsalt "nimega", kasutate rehvi klassi, et edastada signaale kõigile, kes on huvitatud saada See, kui midagi juhtub, siis saadate signaali. Allpool on näide ja rakendamise näide.

logi sisse (); ?\u003e

Usun, et kõige lihtsam viis on järgida Jeff'i nõuandeid ja vaadata olemasolevat koodi. Proovige näha WordPressi, Drupal, Joomla ja muid kuulsaid PHP-CMS-i, et näha, mida nende API liidesed näevad ja tunnevad. Seega saate isegi saada ideid, mida te ei pruugi enne mõelda, et asjad veidi paksiks teha.

Otsesem vastus oleks kirjutada tavalisi faile, mida nad lisaksid kaasasolevasse faili, et pakkuda kasutusmugavust. See jagatakse kategooriatesse ja seda ei pakuta samas "konksu.php" massiivse faili. Olge ettevaatlik, sest mis lõpeb, et failid, mis nende hulka kuuluvad, on üha rohkem sõltuvused ja funktsionaalsus. Püüdke piirata ADDENT API-d. I.E vähem faile nende kaasamiseks.

Seal on puhas projekt nimetatakse