itthon / Dolgozzon az interneten / A legjobb módja a beépülő modulok engedélyezésének PHP alkalmazásokhoz. PHP-kód beágyazása a WordPress-be widgeteken keresztül Ismeretlen php-bővítmény

A legjobb módja a beépülő modulok engedélyezésének PHP alkalmazásokhoz. PHP-kód beágyazása a WordPress-be widgeteken keresztül Ismeretlen php-bővítmény

7. verzió PHP 2015-ben látta meg a napvilágot. A programozási nyelv fejlesztésének új fordulója számos lehetőséget hozott mindazok számára, akik használják PHP. Előnyök új verzió sebességet kell kiemelni. Tehát a fejlesztők szerint a szkriptek sebessége be PHP 7, összehasonlítva előző verziók, majdnem megduplázódott. Ebben a tekintetben sok olyan webhely tulajdonosa, amelyen régebbi verziók vannak telepítve PHPújra szeretne váltani.

Miért érdemes ellenőrizni a kompatibilitást?

Meg kell jegyezni, hogy mielőtt megváltoztatná a verziót a tárhely vezérlőpultján PHP egy újabb és gyorsabb verzióhoz, ellenőriznie kell a WordPress webhely kompatibilitását, nevezetesen a témákat és a bővítményeket. Ez az igény abból adódik, hogy általában az új verziókban szoftver néhány funkció hozzáadódik, néhány pedig teljesen megszűnik. Ha egy beépülő modul vagy téma olyan funkciókat vagy módszereket használ, amelyek nem léteznek az új verzióban, akkor ez egy hibaüzenet, amely megzavarhatja a webhely egészét.

Hogyan lehet ellenőrizni a PHP 7.0 kompatibilitást?

PHP kompatibilitás-ellenőrző beépülő modul

A PHP Compatibility Checker beépülő modul lehetővé teszi a teljes webhely átvizsgálását, és jelzi, hogy mely összetevői (témák, bővítmények) nem kompatibilisek a kiválasztott verzióval PHP. Először telepítenie és aktiválnia kell, majd lépjen az adminisztrációs panelre Eszközök -> PHP-kompatibilitás.

Mint látható, a bővítmény nagyon világos beállításokat kínál. Az ellenőrzés megkezdéséhez ki kell választania egy verziót PHP, a kompatibilitás érdekében, amellyel ellenőrizni szeretné a webhelyet (blokk php verzió). Kényelmes funkció A beépülő modul az ellenőrzött összetevők állapotának kiválasztására szolgál. Két lehetőség közül választhat: vagy ellenőrizze az aktív témák és bővítmények között, vagy az inaktívak között (mező Beépülő modul / téma állapota). A teszt elindításához nyomja meg a gombot Vizsgálja meg újra a webhelyet.

A teszt eredménye letölthető ide is szöveges fájl gomb megnyomásával Jelentés letöltése.

Viszonylag gyakran teszek közzé különféle WordPress-részleteket, amelyek nagyban megkönnyítik az életet. És szinte mindig arra koncentrálok, hogyan kell őket helyesen összekötni.

Persze egyszerűbb és ismerősebb a hagyományos úton haladni, és a töredéket hülyén beszúrni a fájlba függvények.php az aktív témád. De 10-ből 9 esetben célszerűbb és helyesebb lesz a kódrészletet külön bővítménybe helyezni. Végső lehetőségként adja hozzá webhelye speciális funkcionális bővítményéhez. úgynevezett. Webhely-specifikus WordPress beépülő modul, amelyben a webhely összes további funkciója tárolódik.

Miért van rá szükség

majd elmagyarázom egyszerű példa. Tegyük fel, hogy egy olyan webhelyet fejlesztett ki, amely összetett szerkezetű, sok egyéni adattípussal, taxonómiával, szűrővel, menüvel rendelkezik, rengeteg egyéni mező és felhasználói beállítás támogatásával. Minden testreszabást, ahogy ebben az esetben illik, a fájlba helyezte el függvények.php. Minden rendben van, de eltelik egy kis idő, és az újratervezés feladata lesz. Szeretnél változtatni vagy fejlődni új téma. Aztán elkezdődnek a problémák. Mivel az oldal összes funkciója integrálva van régi téma, ki fog kapcsolni vele.

Hogyan legyen

Meg kell értened egy egyszerű igazságot. A téma jellemzőit tartalmazó fájl csak a webhely kialakításához kapcsolódó funkciókat tartalmazhat. Pontosabban arra a témára, amelynek függvényfájlját szerkesztik. És az egész ún. A "Mechanika", a webhely működő funkcionalitása és minden testreszabása beépülő modulokba kerüljön. Vagy egy pluginben. Majd ha megváltoztatja a témát, az érintetlen marad.

Egyéni WordPress Functions beépülő modul létrehozása

Valójában minden nagyon egyszerűen történik.

  • Hozzon létre egy mappát a WordPress beépülő modulok könyvtárában. Például: /wp-content/plugins/mysite-plugin/;
  • Hozzon létre egy fájlt ebben a mappában, nevezze el, például my-plugin.php;
  • Illessze be a következő kódot ebbe a fájlba:
  • Nyissa meg a bővítménykezelési beállításokat, és aktiválja az új beépülő modult.

A cím, a leírás és a kód megjegyzései helyettesíthetők a sajátjával. Most elhelyezheti az összes szükséges kódrészletet és testreszabást ebben a bővítményben. Anélkül, hogy az aktív téma következő változtatásával elveszítené a webhely funkcionalitását.

Itt meg lehet állni, de nem lenne teljesen korrekt, ha nem beszélnék az ún. MU bővítmények.

MU beépülő modulok (Bővítmények használata kötelező)

Az MU beépülő modulok nagyon hasznosak olyan esetekben, amikor egy beépülő modul letiltása elfogadhatatlan, és okozhat kritikus hibák az oldal működésében. Például az ügyféloldalakon. Az ügyfél helytelen műveleteinek elkerülése érdekében a webhelykezelő konzolon.

A MU-bővítmények kötelezőek. WordPress-bővítmények, amelyek egy speciális könyvtárba vannak telepítve, és mindig aktívak. Az MU bővítmények nem jelennek meg a webhely-bővítmények általános listájában, külön fül van számukra. Ezeket csak az MU-plugin fájl közvetlen törlésével lehet letiltani a könyvtárból.

Az MU bővítmények előnyei

  • A MU bővítményeket nem kell aktiválni, mindig aktívak, a webhelykezelő konzolban nem tilthatók le;
  • A MU beépülő modul csatlakoztatása és aktiválása egyszerűen csak feltölthető a mu-plugins könyvtárba;
  • Az MU beépülő modulok ábécé sorrendben töltődnek be, mielőtt a normál beépülő modulok betöltődnek.

Kérjük, vegye figyelembe, hogy az MU-bővítmények alkönyvtárai a hagyományos bővítményekkel ellentétben nem támogatottak. Végső megoldásként létrehozhat egy bővítményt, és írhat bele egy egyszerű betöltőt, amely betölti a bővítményeket a könyvtárakból. Többé-kevésbé így:

Végül

Mint látható, a funkcionális bővítmények használatában nincs alapvetően nehéz. És használatuk előnyei nyilvánvalóak. Gyakran hallottam olyan véleményt, hogy a bővítmények hihetetlen terhelést okoznak az oldalon. Sok felhasználónak vannak előítéletei a bővítmények használatának veszélyeivel kapcsolatban. Ez nem teljesen igaz. Károkat okozhatnak a baloldali bővítmények, amelyeket senki sem tudja, ki fejlesztett ki, és senki sem tudja, honnan tölti le. A bővítmény rossz optimalizálása, elavult használata PHP függvényekés a WordPress. A károk nagyszámú, egyidejűleg működő bővítményből származhatnak. Főleg duplikált funkciókkal. A bővítmények, a témával rendelkező bővítmények banális ütközése is lehetséges. És hozzáértő és ésszerű megközelítéssel, A beépülő modulok kivételes előnyöket biztosítanak webhelyének.

Iratkozzon fel táviratomra, és elsőként kapja meg az új anyagokat, beleértve a amelyek nincsenek az oldalon.

A beépülő modulok egy módot kínálnak az alkalmazások funkcionalitásának kiterjesztésére anélkül, hogy megváltoztatnák a forráskódját. A beépülő modul által megvalósított funkciók az alkalmazásfrissítések telepítése után is működnek, ha a fájljai felülírásra kerülnek. A beépülő modul forráskódja független fájlokba van rendezve, amelyek csak az alkalmazáshoz kapcsolódnak.

Lokalizáció

A beépülő modulok lokalizálása ugyanúgy történik, mint az alkalmazáshonosítás (dokumentáció). Helyezze a *.po és *.mo fordítási fájlokat a locale mappába, és adja meg a kulcsokat a kódban az alábbiak szerint:

  • wp("karakterlánc") PHP-ben (a _w() metódus helyett, amely csak az alkalmazás lokalizációjával működik, a _wp() metódust érdemes használni, amely betölti a bővítmény lokalizációját),
  • [`string`] Smarty sablonokban (itt nincs különbség az alkalmazás lokalizációjától).

A beépülő modul neve és leírása (név és leírás a konfigurációs fájlban) a beépülő modul alapértelmezett lokalizációjával van lefordítva, így nem kell megadni a "name" => _wp("PLUGIN NAME") értéket, csak adja meg a "name" értéket. =>"PLUGIN NAME" .

Lokalizáció használata statikus módszerekben

Abban az esetben, ha a külső környezetben, például a tervezési téma kódjában a plugin osztályok nyilvános statikus metódusait hívjuk, a plugin lokalizációja nem kerül automatikusan beépítésre, és a _wp() függvény nem adja vissza az újsort a várt módon. Ahhoz, hogy ilyen módszerekben használhassuk a beépülő modulok lokalizációját, a _wp() függvény összes hívását egy speciális konstrukcióban kell elhelyezni kiemelten az alábbi példában:

Az appMyPlugin osztály kiterjeszti a waPlugin-t ( nyilvános statikus függvény displayData() ( //mindkét sorban adja meg az alkalmazás és a beépülő modul azonosítóját waLocale::loadByDomain(array("app_id", "plugin_id")); waSystem::pushActivePlugin("plugin_id ", " app_id"); $eredmény = _wp("..."); waSystem::popActivePlugin(); return $eredmény; ) )

Adatbázis

Ha a beépülő modul saját táblákat használ az adatbázisban, akkor a táblaneveknek a __ alakú töredékével kell kezdődniük, például: shop_ebay_ táblanév.

Plugin csatlakozás

Ahhoz, hogy az írott bővítmény működjön, bele kell foglalnia az alkalmazás rendszerkonfigurációs fájljába wa-config/apps/ APP_ID/plugins.php a következő sor hozzáadásával:

"plugin_id" => igaz

Példa erre a fájlra a Blog alkalmazáshoz (wa-config/apps/blog/plugins.php):

true, "tag" => true, "category" => true, "gravatar" => true, "favorite" => true, "troll" => true,);

Ugyanabban a fájlban letilthatja a szükségtelen bővítményeket.

install.php és uninstall.php

Ha a beépülő modul telepítésekor néhány nem szabványos műveletet kell végrehajtania (például új mezőket kell hozzáadnia a meglévő alkalmazástáblákhoz), akkor az ilyen műveletek logikáját le kell írni a lib/config/ konfigurációs fájlban. install.php. Példa egy további mező hozzáadására a táblázathoz a bővítmény telepítésekor:

$modell = new waModel(); try ( $model->query("SELECT `custom_field` FROM `shop_product` WHERE 0"); ) catch (waDbException $e) ( $model->exec("ALTER TABLE `shop_product` ADD `egyéni_mező` INT(11) ALÁÍRHATATLAN NULL ALAPÉRTELMEZETT NULL");)

Írja le a beépülő modul eltávolításakor végrehajtandó műveleteket ugyanúgy a lib/config/ fájlban uninstall.php .

Létrehozása és törlése saját Az install.php és az uninstall.php fájlokban nincs szükség a plugin-táblázatok leírására – a táblák automatikusan létrejönnek és törlődnek egy másik konfigurációs fájl: db.php tartalma alapján. cm. " ".

Példa

A plugin platform a Blog alkalmazással együtt került be a keretrendszerbe, ezért további tanulmányozás céljából javasoljuk ennek az alkalmazásnak a telepítését és a hozzá írt bővítmények áttekintését (a beépülő modulok telepítése a Telepítőn keresztül történik). A "Blog"-hoz különféle célokra és gyakorlati alkalmazásokra írtak bővítményeket: frontendre, backendre, a felhasználói felület lehetőségeinek bővítésére, adatok feltöltésére stb.

Üdvözlet, barátok. Ma kitaláljuk, hogyan lehet bármilyen PHP-kódot működni a WordPress widgetekben, cikkekben és oldalakon. Alapértelmezés szerint ilyen funkció ebben a CMS-ben nem érhető el, és a maximum, amire a felhasználó számíthat, az a HTML kód bevezetése.

Miért nem működik alapértelmezés szerint a PHP kód?

Úgy tűnik, hogy a fejlesztők miért nem jutalmaztak egy ilyen népszerű és kényelmes motort hasznos funkciókkal a PHP kódok automatikus végrehajtásához. Először gondolkodtam rajta, de arra a következtetésre jutottam, hogy egy ilyen házirendet biztonsági pozícióból hajtanak végre, mert a PHP nem megfelelő használata widgetekben vagy belső rekordokban helyrehozhatatlan következményekkel járhat - valami elromlik az adatbázisban és az egész oldal morogni fog.

Ezért a PHP-vel való munka a programozók vagy az ebben a kérdésben többé-kevésbé haladó emberek kegyén múlik – minden szkriptet közvetlenül fájlokban hajtanak végre.

Nyilvános oldalakon (ahol több szerző is van) a PHP végrehajtása a cikk törzsében növeli a szándékos szabotázs kockázatát, mivel bármely szerző teljes hozzáférést kaphat az oldalhoz a cikkszerkesztő ablakon keresztül.

A veszély mértéke szerint ezt az egész helyzetet 3 szintre osztanám:

  1. Nehéz mindent úgy hagyni, ahogyan a fejlesztők szándékozták – nehéz biztonságosan, véletlenül vagy szándékosan károsítani az oldalt.
  2. PHP futtatásának engedélyezése widgetekben – közepes súlyosságú, csak a webhely rendszergazdája férhet hozzá.
  3. A kód használata mindenhol veszélyes, hiszen bárki kezelheti az oldalt, aki jogosult cikkeket és oldalakat szerkeszteni (moderátorok, szerzők).

Mire való a PHP a widgetekben?

A kérdés egyéni, hiszen ezzel a programozási nyelvvel bármit meg lehet valósítani. Ennek a bejegyzésnek a megírására személy szerint egy olyan ügyféltől kapott megrendelést kaptam, akinek jelenleg készítem a webhelyét. Ezen az oldalsávon külön widgetben kellett megjeleníteni a hírek listáját egy címsorból - "Hírek". A szabványos WordPress widgetekben nincs ilyen lehetőség.

A kérdés az volt, hogy keressünk-e megfelelő képességekkel rendelkező bővítményt, vagy használjunk egyszerű PHP-kódot. A szkript egy ilyen feladathoz nagyon kicsi, és nem akartam feltölteni az oldalt egy olyan extra beépülő modullal, amelyet sehol máshol nem használnak.

Általánosságban elmondható, hogy a PHP futtatásának lehetővé tételével 2 problémát tudunk megoldani:

  • Cserélje ki a webhely beépülő moduljainak egy részét szkriptekre, és ily módon csökkentse a tárhelyterhelést;
  • Olyan funkciókat valósítson meg, amelyekhez még nem létezik bővítmény.

Az első szakaszban a widgetekről fogok beszélni, majd egy külön blokkban a kód megjelenítéséről a tartalomban.

PHP-bővítmények a widgetekben

A bővítmények előnye: A WordPress téma megváltoztatásakor a sablonhoz hozzáadott funkciók működése nem szakad meg, minden tovább működik a webmester beavatkozása nélkül. A sablonhoz a téma megváltoztatásakor hozzáadott horgokat kézzel kell átvinni az újba.

A fenti példámban weboldalt készítek egy ügyfélnek, és ha ő maga akarja megváltoztatni a dizájnt, akkor a functions.php fájlokon és egyebeken keresztül elvégzett beállítások eltűnnek, ezért a lehető legegyszerűbbé teszem neki kell kezelnie az oldalt, bővítményekre támaszkodva (főleg, hogy a forgalom kicsi és a terhelés nem lesz nagy).

PHP kód widget

Munkám során régóta használom ezt a bővítményt, amely egy, a normál szövegeshez hasonló widgetet ad az elérhető widgetek listájához, amely a szöveg és a HTML mellett csak PHP feldolgozására képes.

A PHP Code Widget megtalálható a hivatalos WordPress adattárban, név szerint könnyen megtalálható. Hogyan telepítsünk ilyen bővítményeket.

Nincs szükség semmilyen beállításra, a widget a plugin telepítése és aktiválása után azonnal megjelenik a listában. Húzza a "PHP kódot" az oldalsávra, és adja hozzá a szkriptet.

PHP a WordPress widgetben plugin nélkül

Ebben az esetben szükségünk van egy horogra, amely a WordPress szöveges widgetet biztosító szabványos függvényt helyettesíti egy olyan funkcióval, amely lehetővé teszi a PHP feldolgozását.

Ez a hook hozzáadódik az aktuális téma functions.php fájljához (a legvégén a záró kapcsos zárójel előtt?>). Ezt követően az új widget opciók, mint a plugin esetében, nem jelennek meg, a PHP kódok normál szövegben kezdenek dolgozni.

Kész kód:

Add_filter("widget_text"," text_html_php_widget ",100); function text_html_php_widget($text) ( if(strpos($text,"".$text); $text = ob_get_contents(); ob_end_clean(); ) return $text; )

Az első sor egy szűrő, amely minden hívásnál lecseréli a standard text widget függvényt egy újra, text_html_php_widgetre, majd a legújabb függvény leírása következik.

Miért a PHP kód a WordPress cikkekben és bejegyzésekben?

A posztokon belül sokkal ritkábban van szükség futtatható PHP kódra, mint a widgetekben, ezért a cikk első részében az oldalsávot külön is figyelembe vettem, hogy elkerülhető legyen a potenciálisan veszélyes függvények felesleges beillesztése.

De még a hozzászólásokban is szükség van szkriptek használatára. A leggyakoribb példa a webhelytérkép bővítmény nélküli kimenete. Igaz, használhat egy másik technikát a térképhez - készítsen egy speciális oldalsablont (ez egy külön téma).

Egyszer szükségem volt PHP kimenetre a következő célra:

Készítettem egy videós oldalt. A sorozat epizódjai szezononkénti lejátszási listákban jelentek meg, és az évad minden lejátszási listája alatt meg kellett jeleníteni az epizódok listáját az oldalára mutató hivatkozással. Úgy néz ki, mint egy oldaltérkép, csak bonyolultabb – a következtetést az egyes címsorok felsorolásából kellett levonni. Minden hivatkozást manuálisan lehetett írni HTML kóddal, de több száz sorozat van, és az eljárás sivár. Sőt, ha új sorozat jelenik meg, manuálisan hozzá kell adni egy linket - ez kényelmetlen. Ezért úgy döntöttem, hogy PHP függvényeket használok a megvalósításhoz.

Beépülő modul a PHP végrehajtásához Exec-PHP tartalomban

Annak ellenére, hogy ezt a bővítményt 7 éve nem frissítették, kiváló munkát végez. És okkal választottam - nem használ rövid kódokat, mint a versenytársak, de lehetővé teszi, hogy tiszta kódot illesszen be a WordPress bejegyzésekbe, kezdve .

Az Exec-PHP beépülő modul a tárolóban található, és a motor adminisztrációs paneljének menüjéből telepíthető.

A beállítások közül csak egy van - engedély / tilalom kód végrehajtására szöveges widgetben, nincs lehetőség a bejegyzésekben és az oldalakon végzett munka letiltására, ha el kell távolítania - deaktiválja a bővítményt.

A PHP kód cikkbe való beillesztéséhez HTML módba kell kapcsolni ("Szöveg" fül). A vizuális mód valószínűleg elrontja a kódot.

PHP-kód végrehajtása a WordPress cikkekben beépülő modul nélkül

A widgetekkel analóg módon a bővítményt lecserélhetjük egy speciális funkcióra, amely lehetővé teszi a végrehajtást PHP szkriptek tartalomban. Sajnos nem találtam olyan opciót, amelyben a kód automatikusan működne, mint a plugin esetében, reagálva a címkékre. Rövid kód szükséges. A PHP tudásom nem volt elég az önálló íráshoz kívánt funkciót, sim-re úgy hozom, ahogy van. A rövid kóddal végzett munkának van egy jelentős hátránya, amely bonyolítja a munkát, amelyet az alábbiakban tárgyalok.

Hogyan kell dolgozni az alábbi funkcióval

  1. Illessze be a téma functions.php fájljába;
  2. A cikkben a megfelelő helyre beszúrunk egy konstrukció - futtatható kódot anélkül

Funkció:

/* Php indítása a WordPress cikkekben és oldalakon: kód */ függvény start_php($matches)( eval("ob_start();".$matches."$inline_execute_output = ob_get_contents();ob_end_clean(););"); return $inline_execute_output ; ) függvény inline_php($content)( $content = preg_replace_callback("/\((.|\n)*?)\[\/startphp\]/", "start_php", $content); $content = preg_replace( "/\((.|\n)*?)\[\/startphp\]/", "$1", $tartalom); return $content; ) add_filter("a_tartalom", "inline_php");

Hiba

Ha a beszúrt PHP kódban HTML beillesztés vagy szöveg található, akkor az nem fog működni. Minden szöveget vagy címkét az echo paranccsal kell beilleszteni, ami nem mindig kényelmes. Vagyis a kódnak tisztán PHP-shny 100 helyes formátumúnak kell lennie.

Jobb

Echo "Ez működni fog";

Nem jó

Echo "Ez a sor helyes"; Ez nem fog menni

Az Exec-PHP beépülő modulban nincs ilyen probléma - a szöveg és a HTML is lefut, de a PHP kód minden elemét be kell keretezni a megfelelő címkékbe.

Sok webmester számára az ebben a cikkben leírt téma végtelen lehetőségeket nyit meg a kreativitás számára - megvalósíthatja azt, amit korábban nem, valamint megszabadulhat sok beépülő modultól, helyettesítve azokat különböző szűrőkkel, funkciókkal és horgokkal.

Ebben az útmutatóban részletesen megvizsgáljuk a létrehozás módját WordPress bővítmény saját adminisztrációs oldallal. Minden beépülő modul jellemző tulajdonsága, hogy kódját elválasztja a WordPress alapkódjától. Ha valami történik a beépülő modullal, a webhely többi része működni fog.

  • Szöveg szerkesztő

Az útmutató lépéseinek végrehajtásához szüksége lesz szöveg szerkesztő, mint például a Notepad++ vagy a NetBeans IDE. FTP-hozzáférésre is szüksége van fiókot a tárhelyen és a .

Ez a WordPress bővítmény útmutató azoknak íródott, akik már rendelkeznek . Útmutatás alapján alkotunk új funkció, hívás meglévő funkciókat A WordPress ezeket paraméterként használja.

Mi az a WordPress beépülő modul?

WordPress beépülő modul egy önálló kód, amely javítja és kiterjeszti a WordPress funkcionalitását. A PHP, HTML, CSS, JavaScript/jQuery vagy számos más programozási nyelv tetszőleges kombinációjával a WordPress beépülő modulok új funkciókat adhatnak a webhely bármely részére, beleértve a Felügyeleti konzolt is. Módosíthatja a WordPress alapértelmezett viselkedését, vagy teljesen eltávolíthatja a szükségtelen viselkedést. A beépülő modulok megkönnyítik a WordPress testreszabását az Ön és igényei szerint.

Mivel a WordPress beépülő modul egy külön kód, nem metszi közvetlenül a WordPress alapkód egyetlen részével sem. A bővítmény bármelyikre másolható vagy telepíthető WordPress telepítése. Alternatív (és nagyon csüggedt) A WordPress módosításának módja egy új függvény írása wordpress fájl függvények.php, amely a könyvtárban található /wp-includes/ vagy egy fájlba függvények.php, amely a témája része. Ez számos lehetséges problémához vezethet.

A WordPress és témái rendszeresen frissülnek. És miközben WordPress gyermektémát használ, a következő frissítés felülírja a fájlt függvények.php, és az általad hozzáadott új kód törlésre kerül, és újra és újra hozzá kell adni. Újabb kínos pillanat adódhat, ha sok függvényt írsz, és az egyikben olyan hiba van, amit sehogy sem tudsz nyomon követni, előfordulhat, hogy az aktuális fájlt le kell cserélni az eredetire, de ebben az esetben minden más funkciót feláldozni. Ez maga után vonja nagyszámú PHP hibák az oldalon, mert a már eltávolított függvények hívása továbbra is más helyekről történik.

A WordPress frissítésekor a beépülő modulok soha nem kerülnek automatikusan felülírásra vagy eltávolításra. Ha hibák vannak a WordPress beépülő modul kódjában, egyszerűen letilthatja azt a Kezelői konzolban, amíg a hiba kijavítva van. Abban az esetben, ha a bővítmény komoly hibával rendelkezik, a WordPress néha automatikusan letilthatja azt, hogy az egész webhely működjön.

Mi az a horog?

A WordPress beépülő modulok az alapkóddal ún horgok (horgok, angolról. horog – horog). Nekik, akárcsak a horgoknak, bármilyen számunkra érdekes funkció teljesítését „akaszthatja”. A WordPressben kétféle horog létezik:

  1. Akció- vagy eseményhorgok (egyéni funkció hozzáadása/eltávolítása egyes eseményekhez).
  2. Szűrőkampók vagy szűrőkampók (a funkciók által feldolgozott adatok megváltoztatásához).

Események és eseményhorgok

Egy WordPress webhely bármely oldalának meglátogatása sok PHP-függvényt (úgynevezett események - akciók). A funkciók kötöttek eseménykampók. Az eseményhook mechanizmust a WordPress biztosítja. tudsz add hozzá funkcióikat bármely eseményhez az események listájából a horogmechanizmus segítségével, és ezek akkor indulnak el, amikor ez az esemény aktiválódik. te is tudsz töröl már meglévő funkciókat az eseményhookok bármely listájáról. Az eseményhorgok egy adott esemény végrehajtásához kötődnek. Például a címke bezárása előtt bármelyik oldalon a horog esemény meghívásra kerül wp_head()és számos, ehhez a horoghoz kötött funkció elindul wp_head().

Függvények hozzáadása eseményhookhoz az add_action() segítségével

Nak nek add hozzá funkció bármely eseményhook esetén, a WordPress beépülő modulnak meg kell hívnia WordPress funkció jogosult add_action() legalább két paraméterrel.

// "init" eseményhook, amelyet azután hívnak meg, hogy a WordPress befejezte az alapkód betöltését add_action("init", "add_Cookie"); // Süti beállítása ezzel aktuális idő függvény add_Cookie() ( setcookie("utolsó_látogatás_idő", dátum("r"), idő()+60*60*24*30, "/"); )

  • horog-események(akció horog), amelyhez a funkciónkat fogjuk kötni.
  • A második kötelező paraméter a név funkciókat amelyet elindítunk.
  • kiemelten fontos (kiemelten fontos) a futtatni kívánt funkciót. Tetszőleges számú funkciót köthet egyetlen eseményhookhoz, és bármilyen sorrendben elérheti őket. Az alapértelmezett indítási prioritás 10, a funkciója közvetlenül a WordPress beépített funkciói után fog futni. A 11-es prioritású függvény fut ezután, és így tovább.
  • érvek száma, azt jelenti, hogy az egyéni függvény hány paramétert képes elfogadni. Alapértelmezés szerint a paraméterek száma 1.

Minta beépülő modul kód a lábléc utáni szöveg megjelenítéséhez minden oldalon

Ez a WordPress beépülő modul elfogja a Hook eseményt wp_footer(), amelyet közvetlenül a záró címke előtt hívnak meg minden oldalon, és hozzáad egy új funkciót mfp_Add_Text(). Mivel a WordPress beépülő modul nincs témához kötve, a funkció akkor is működik, ha a témát másikra cseréli. Ezt a példát elmentheti magának. PHP fájl, töltse fel a könyvtárba wp-content/plugins/és aktiválja a Kezelői konzolban a változások megtekintéséhez.

"; } ?>

Íme az eredmény:

Jegyzet: A PHP a teljes script tartalmát egyben betölti a végrehajtás előtt, ami azt jelenti, hogy hívható add_action() függvénydefiníciója előtt: hívás add_action() függvényeivel a fájl elején a betöltési sorrendben, majd az alábbiakban ebben a sorrendben határozza meg a függvényeket. A kód ilyen strukturálása megkönnyíti a fájl olvashatóságát.

Függvények eltávolítása eseményhorogokból a remove_action() segítségével

Mert eltávolítás az eseményhookhoz társított funkciót kell használnia Remove_action(). Az alábbi példa segít megérteni, hogyan működik a függvények hozzáadása és eltávolítása eseményhookhoz.

// Hook az "init" eseményhez, amely a WordPress mag és a "remove_My_Meta_Tags" függvény betöltése után kerül meghívásra add_action("init", "remove_My_Meta_Tags"); // Távolítsa el az "add_My_Meta_Tags" függvényt a wp_head eseményhook függvényből remove_My_Meta_Tags() ( remove_action("wp_head", "add_My_Meta_Tags"); )

fut Remove_action() legalább kettőben paramétereket.

  • Az első kötelező paraméter a cím. horog-események(akció horog), amelyhez a függvény csatolva volt
  • A második kötelező paraméter a név funkciókat törölni szeretnéd
  • A harmadik (opcionális) paraméter az eltávolítandó függvény prioritása. Ennek a beállításnak meg kell egyeznie azzal a prioritással, amelyet akkor állítottak be, amikor az eseményt hozzáadták az eseményhookhoz. Ha nincs megadva, ne engedélyezze ezt az opciót.

Példa: Tegyük fel, hogy azt szeretné, hogy az előző példában a láblécben szereplő szöveg ne jelenjen meg hétfőnként. Ennek egyik módja a PHP dátumfüggvényének használata a hét aktuális napjának lekérésére egy feltételes utasítás átadásával ha akkor…és ellenőrizze, hogy az aktuális nap hétfő-e, majd hívjon Remove_action(), ha hétfő van. A hét napja szerinti ellenőrzés és törlés funkciót a használatnak nevezzük add_action(), amely egy korábban bekövetkezett eseményhez kapcsolódik (pl. wp_head), mint amelyhez a fő lábléc szöveges műveletünk kapcsolódik ( wp_footer). Ha olyan eseményt választunk, amely később következik be wp_footer, nem lesz törlés, mert az oldal már létrejön.

Az oldal láblécének betöltése után a szövegem hozzáadódik!

"; ) // Az "mfp_Remove_Text()" függvény meghatározása, előző függvényünk eltávolítása a "wp_footer" eseményfüggvényből mfp_Remove_Text() ( if (date("l") === "Monday") ( // Cél a "wp_footer" " action , távolítsa el belőle az "mfp_Add_Text" függvényt remove_action("wp_footer", "mfp_Add_Text"); ) ) ?>

Szűrők és szűrőkampók

Szűrési funkciók lehetővé teszi a más függvények által visszaadott adatok megváltoztatását, és először le kell őket fogni szűrő horgok. A szűrőhorgok némileg eltérnek az eseményhorgoktól. Azonban úgy működnek, mint az eseményhorogok – a forgatókönyv különböző pontjain és kontextus szerint hívhatók meg. Teljes lista A szűrőkörök és a híváskontextus a WordPress Plugin API/Szűrőreferencia oldalon találhatók.

Szűrők hozzáadása az add_filter() használatával

Nak nek add hozzá Bármilyen függvényt a szűrő horoghoz, a beépülő modulnak meg kell hívnia egy WordPress nevű függvényt add_filter(), legalább két paraméterrel.

// A "the_content" szűrő horog elfogása (bármely bejegyzés tartalma), az "mfp_Fix_Text_Spacing" függvény futtatása add_filter("the_content", "mfp_Fix_Text_Spacing"); // A kettős szóköz függvény automatikus javítása mfp_Fix_Text_Spacing($the_Post) ( $the_New_Post = str_replace(" ", " ", $the_Post); return $the_New_Post; )

  • Az első kötelező paraméter a név szűrőkampó(szűrő horog), amelyre a függvényt szeretnénk felakasztani.
  • A második paraméter a név szűrőfunkciók (szűrő funkció), futni akarunk.
  • A harmadik paraméter (opcionális) az kiemelten fontos (kiemelten fontos) a futtatni kívánt függvényt. Tetszőleges számú funkciószűrőt adhat hozzá egy szűrőkampóhoz. Az alapértelmezett prioritás a 10, amely beállítja az egyéni függvénysort bármely beépített függvény után. A 11-es prioritású függvény fut ezután, és így tovább.
  • A negyedik paraméter (opcionális) az érvek száma, ami azt jelenti, hogy az egyéni függvény hány paramétert képes elfogadni. Alapértelmezés szerint a paraméterek száma 1.

Példa. WordPress beépülő modul a bejegyzés kivonatának/kivonatának módosításához

A WordPressnek van egy funkciója, amely kivonat (idézet) egy bejegyzésből, ez az úgynevezett get_the_excerpt(), és egyben szűrőkampó is. A függvény, amely megjeleníti a kivonathívásokat get_the_excerpt(), ennek eléréséhez itt alkalmazzák a szűrőt, és a kódrészletet módosítják a megjelenítés előtt. Ez a WordPress beépülő modul egy szűrőfüggvényt határoz meg, amely egy szövegrészletet beviteli paraméterként vesz fel, hozzáad egy szöveget az elejére, és minden egyes meghívásakor új értéket ad vissza. get_the_excerpt(). A függvény visszatérése óta get_the_excerpt() Az érték az aktuális szövegrész, automatikusan függvényparaméterként kerül megadásra $old_Excerpt, használatával hívják add_filter(). Az Ön által meghatározott függvény új értéket kell visszaadnia.

Kivonat:" . $old_Excerpt; return $new_Excerpt; ) ?>

Végeredmény:


Szűrők eltávolítása a remove_filter() használatával

A szűrő eltávolításához csak meg kell hívnia a függvényt Remove_filter(). Például adjunk hozzá ismét egy egyszerű feltételt, és töröljük a szöveget, ha ma csütörtök van.

// Hook szűrő get_the_excerpt, függvény futtatása mfp_Add_Text_To_Excerpt add_filter("get_the_excerpt", "mfp_Add_Text_To_Excerpt"); // Ha ma csütörtök van, távolítsa el a_excerpt() szűrőt if (date("l") === "Csütörtök") ( remove_filter("get_the_excerpt", "mfp_Add_Text_To_Excerpt"); ) // Fogjon meg egy kivonatot, adjon hozzá szöveget, és visszaad egy új kivonat függvényt mfp_Add_Text_To_Excerpt($old_Excerpt) ( $new_Excerpt = " Kivonat:" . $old_Excerpt; return $new_Excerpt; )

Most, hogy már alapvető ismereteink vannak a szűrőkörökről és eseményekről, hozzunk létre egy egyszerű WordPress-bővítményt, amely új hivatkozást és oldalt ad a Felügyeleti konzolhoz.

1. lépés – A beépülő modul mentése

A WordPress bővítmény létrehozásának első lépése egy könyvtár létrehozása az összes fájl tárolására. Az összes plugin a következő könyvtárban van tárolva: / wp-content/plugins/. A létrehozott könyvtárnak egyedi és érthető névvel kell rendelkeznie, amely nem esik átfedésbe más beépülő modulokkal. Csatlakozzon tárhelyfiókjához FTP-n keresztül. A WordPress fő könyvtárából lépjen a következőre: wp-tartalom majd be bővítmények. Egy könyvtár belsejében bővítmények hozzon létre egy új könyvtárat my-first-plugin.


A különálló bővítménykóddal rendelkező fájlokat tematikailag jobb alkönyvtárakba osztani a fő beépülő modul könyvtárán belül, ahelyett, hogy mindent egy könyvtárban tárolnának, így elkerülhető a félreértés, és jó szemantikai elválasztás lesz a beépülő modul forrásfájljai között. Különösen a fájlok jelentés szerinti szétválasztása lesz nagyon észrevehető, ha a bővítmény növekszik és bonyolultabbá válik. Ha a beépülő modul egyéni CSS-stílusokat használ, hozzon létre egy könyvtárat cssés mentse el az összes CSS-fájlt. Ha a WordPress beépülő modulja JavaScriptet használ, hozzon létre egy könyvtárat JavaScript.

2. lépés – Az első fájl létrehozása

A beépülő modul első fájlja nagyon fontos. Minden olyan információt tartalmaz, amelyre a WordPressnek szüksége van ahhoz, hogy megjelenítse a beépülő modult a jelenleg aktív beépülő modulok listájában.

A könyvtárában my-first-plugin hozzon létre egy új PHP fájlt, és nevezze el my-first-plugin.php. Jó gyakorlat, ha a beépülő modul fő fájlját a könyvtáréval azonos névvel látja el. Adjon hozzá egy nyitó PHP-címkét az első sorban. Nem kell záró címkét hozzáadnia a fájl végéhez (olvassa el a PHP kézikönyv oldalán található megjegyzést, hogy megtudja, miért). Ez a fájl elsősorban úgynevezett „fejléc megjegyzéseket” vagy fejléc megjegyzéseket tartalmaz majd olyan információkkal, amelyeket a WordPress elolvas és megjelenít. A fejléc megjegyzései egy többsoros PHP megjegyzés, minden sor speciális információkat határoz meg, speciális karakterekkel kezdve, így meghatározhatja, hogy ez a sor mire vonatkozik. Egy ilyen szerkezetnek csak az első fájlban és annak szerepelnie kell nincs szükség ismételje meg másokban.

Egy fájl megjegyzésének első sora my-first-plugin.php hozzá kell adnia a bővítmény nevét. Indítson el egy többsoros PHP megjegyzést karakterekkel való megnyitással /* a fájl második sorában, közvetlenül a PHP open tag után. A harmadik sorba írd Beépülő modul neve: Az első beépülő modulom. A következő két külön sorban megadhatja a bővítmény leírását és a szerző nevét, majd a következő sorból zárja be a megjegyzés blokkot a szimbólumokkal */ . A fájl most valahogy így néz ki:

A szerző neve.

3. lépés – Plugin funkciók írása

Ahogy fentebb említettük, a beépülő modul kódját megfelelő fájlokba és könyvtárakba kell különíteni. Mivel az első fájl fő funkciója, hogy információkat tartalmazzon a bővítményről, magát a WordPress beépülő modult helyezzük el más fájlokban és könyvtárakban, és a PHP „include” funkciójával érjük el őket. Az alkönyvtárban tárolt fájlokat közvetlenül a kódunkból hívjuk meg, és csak a mi kódunkból, így az alkönyvtár nevéhez nem kell előtag. Mindazonáltal erősen ajánlott egyedi előtag használata a fájlokhoz, függvényekhez és változókhoz, hogy elkerülje a más bővítményekkel való ütközést. Emiatt az előtagot fogjuk használni mfp, a „My First Plugin” rövidítése.

A bővítmény főkönyvtárában hozzon létre egy új alkönyvtárat magába foglalja. Minden olyan fájl, amely egy másik fájlban van, ebbe az alkönyvtárba kerül. Hozzon létre egy új PHP-fájlt egy alkönyvtárban magába foglaljaés mentse el másként mfp-functions.php A címke megnyitása az első sorban. Ez az új fájl tárolja a beépülő modul funkcióit.

Most vissza a my-first-plugin.php a fő plugin könyvtárban. Be kell adnunk egy fájlt mfp-functions.php az új funkciók használatához. Mivel ez a fő plugin fájl, a kapcsolat mfp-functions.php itt elérhetővé teszi a funkciókat a bővítmény bármely más fájljában. Használat igényel_egyszer hogy egyszer szerepeljen a függvényekkel rendelkező fájl, és megbizonyosodjon arról, hogy a beépülő modul csak akkor működik, ha a funkciók elérhetők. A beépülő modulok könyvtárából a legegyszerűbb módja a WordPress funkció használata plugin_dir_path(__FILE__), amely megadja a teljes elérési utat ahhoz a könyvtárhoz, ahol a WordPress bővítményünk található, majd használja . (pont) a korábban létrehozott alkönyvtár nevével egészül ki ( magába foglalja), majd az általunk létrehozott fájl neve ( mfp-functions.php).

Szerkesztés my-first-plugin.php az alábbiak szerint, majd mentse és töltse be újra, felülírva az előző verziót.

Vissza a mfp-functions.php egy alkönyvtárban magába foglalja.

Célszerű több függvényt kombinálni, és minden csoport fölé többsoros megjegyzést írni, amely leírja a csoportot, majd egy rövid egysoros megjegyzést az egyes leíró függvények elé. Így nem kell végigolvasnia az összes kódot, hogy megkeresse a függvényt, és felismerje, mit csinál. Nevezzük a függvényt mfp_Add_My_Admin_Link(). Ez hozzáad egy új felső hivatkozást a Kezelői konzolban a navigációs menühöz.

Összefoglalva a következő lépéseket követve írunk egy új függvényt:

  • A funkciót leíró megjegyzések írása
  • A függvényt hívjuk
  • Függvény írása

NÁL NÉL mfp-functions.php a következőket írjuk:

A függvényünkön belül a beépített WordPress függvényt kell használnunk add_menu_page() a menü nevének, címének, valamint azt, hogy kik láthatják. Ezután elmondjuk, hogy mit kell megjeleníteni, amikor az oldalra navigálunk. A menüben lévő hivatkozáshoz ikont is hozzáadhat, és az adminisztrációs panel navigációs menüjében beállíthatja annak pozícióját - mindkettőt tetszés szerint, így útmutatónkban nem állunk meg. Az oldalra mutató hivatkozás mellett egy alapértelmezett ikon jelenik meg. Linkünk a felügyeleti konzol navigációs menüjének alján fog megjelenni. Mindezek az információk paraméterekként kerülnek be add_menu_page().

Négy kötelező paraméter add_menu_page()- mindegyik egy új sorban a jobb láthatóság érdekében:

  1. Az oldal neve, amelyet a hivatkozásra kattintás után fog látni (megjelenik a böngésző lapján).
  2. A menühivatkozásban megjelenő szöveg (amely a Kezelői konzol navigációs listájában jelenik meg), ez lehet a beépülő modul neve.
  3. Felhasználói képességek követelményei a menü megtekintéséhez, ebben a példában csak a „manage_options” képességgel rendelkező felhasználók érhetik el az oldalt (ez most ne aggódjon).
  4. Melyik fájlt használjuk az oldal megnyitásakor (a következő lépésben hozzuk létre), amely egy alkönyvtárban kerül tárolásra magába foglaljaés hívják mfp-first-acp-page.php. Az itt megadott URL-cím „slug” néven ismert.

Mielőtt folytatnánk, fontos tudni, hogy van más mód is a funkció használatára. A negyedik paraméter egyszerűen egy szöveges karakterlánc lehet, amely az url-ben a következő után jelenik meg wp-admin/admin.php?page='. Ha beírja a 'my-plugin-page'-t, akkor az URL lesz 'wp-admin/admin.php?page=my-plugin-page'. A negyedik paraméter ekkor egy valamit kiadó függvény neve legyen. Írhat egy függvényt, amely például csak az „Üdvözöljük az 1. oldalon” szöveget írja ki. Sokkal egyszerűbb létrehozni egy PHP-fájlt, amely tartalmazza az oldalt.

Szerkesztés mfp-functions.php töröl // Ide kerül a kódom, cserélje ki ezzel add_menu_page()és adja át a paramétereket az alábbiak szerint:

Ennek a függvénynek a futtatásához egy WordPress nevű függvényt kell használnunk add_action() két paraméterrel, az útmutató „Funkciók hozzáadása Event Hook-hoz” című részében leírtak szerint. A folytatás előtt érdemes újra elolvasni ezt a részt.

  • Az első paraméter az akció horog, amelyet meg akarsz rögzíteni. Esetünkben az eseményhorog az admin_menu- ez azt jelenti, hogy a funkciónk akkor töltődik be, amikor elkezdődik az Admin menü generálása.
  • A második paraméter csak a futtatandó függvény neve. Az általunk írt függvényt hívjuk mfp_Add_My_Admin_Link. Vegye figyelembe, hogy ide nem írunk zárójeleket. Ne feledje, hogy a PHP a teljes szkriptet betölti a futás előtt, lehetővé téve az add_action() használatát a 2-es paraméterben megadott függvény meghatározása előtt.

A végső fájlunk így néz ki:

Töltse le a fájlt mfp-functions.php katalogizálni magába foglaljaés felülírja a régit.

4. lépés – Új rendszergazdai oldal létrehozása

Mostantól létrehozhat egy oldalt, amely akkor jelenik meg, ha a felügyeleti konzolban egy hivatkozásra kattint. Vissza az alkönyvtárba magába foglaljaés hozzon létre egy új PHP fájlt mfp-first-acp-page.php. A nyitó PHP címke nem szükséges ebben a fájlban, mivel csak HTML-t fogunk használni. Írja be a HTML kódot az alábbiak szerint, és töltse fel a fájlt.

Helló!

Ez a plugin első oldala :)

Adminisztrátori oldalak létrehozásakor a WordPress azt javasolja, hogy csomagolja be a HTML-kódot div címkékbe, és adja meg a „wrap” osztálynevet a fent látható módon. Ez biztosítja, hogy az összes tartalom a megfelelő helyen jelenjen meg, és ugyanúgy nézzen ki, mint a többi adminisztrátori oldal. Ha nem követi ezt az ajánlást, előfordulhat, hogy az oldal nem tűnik túl vonzónak.

Menjen vissza a WordPress beépülő modulok listájához a Kezelői konzolban, és aktiválja azt. Az oldal betöltése után tekintse meg az adminisztrációs panel navigációs menüjét. Itt egy új linket fog látni, melynek neve „Az első beépülő modulom”. Kattints rá, és megjelenik a natív admin oldala!

Következtetés

Gratulálunk, most hozta létre az első WordPress beépülő modulját, hozzáadott egy új hivatkozást az adminisztrációs menühöz, és új oldalt jelenített meg a Felügyeleti konzolban! Úgy tűnik, ez nem olyan sok, de ezek az első magabiztos lépések. Most a megszerzett ismeretek alapján igény szerint módosíthatja a WordPress funkcionalitását. További ismeretek a WordPressről