PHP kód a WordPressben – bevált gyakorlatok. Hasznos kódrészletek (töredékek) a WordPresshez Példák kódírásra wp-ben

Merem feltételezni, hogy az életedben előfordultak olyan esetek, amikor valamit hozzá akartál tenni (javítani) a WP oldalad témájában, vagy valamelyik plugin funkcionalitásában. Ráadásul a fejlesztők ezt a lehetőséget nem építették bele szabvány azt jelenti menedzsment. És a lelked nem ismer fel semmilyen korlátozást, és képzeletrepülést kíván

A kód szerkesztésének fő nehézsége az, hogy az elvégzett változtatások sajnos nem tartanak sokáig, és valószínűleg a következő frissítéssel törlődnek. Ha úgy látja a megoldást, hogy távol tartja magát a frissítésektől, le merem lebeszélni erről a veszélyes, nemtörődöm döntésről, mivel a frissítések fontos változások a biztonság és a hibajavítások, valamint gyakran az új funkciók terén is.

Emiatt célszerű olyan módszereket alkalmazni, amelyek megállják a helyüket dinamikusan változó világunkban, és egyben értékes időt takarítanak meg.

Figyelmeztetések!

Az interneten gyakran találhat tippeket, amelyek a fájl módosítását javasolják. függvények.php- ha van lehetőség nélkülözni - jobb, ha nem érinti meg ezt a fájlt. Az alábbi módszerekből megtudhatja, hogyan kell ezt megvalósítani. Mindenesetre létre kell hoznia egy gyermektémát, és érintetlenül kell hagynia a szülőtémát.

Függvény előtagként mindig egyéni kódot használjon a következő formában: _előtag(a megváltozott függvény nevére). Ez a művelet megóvja Önt a téma vagy a bővítmény más funkcióival való ütközéstől.

Tehát hogyan kell kódot hozzáadni egy WP webhelyhez?

1) Egyedi bővítmény

Így kódrészleteket is beilleszthet, és azok nem törlődnek a frissítés során, illetve szerkeszthetők, a jövőben aktiválhatók, vagy fordítva - szükség esetén deaktiválhatók.

Ez egyszerű: először létre kell hoznia egy könyvtárat a beépülő modul számára, és megfelelően el kell neveznie, például moy-plugin (csak kötőjelet használjon, perjelet ne)

Ezután létrehozzuk a fő bővítményfájlt. Amint érti, tartalmaznia kell a nevet, a leírást és az alapvető információkat, valamint egy kódot, amely segít megvédeni a bővítményt a behatolóktól. És ezt a fájlt nevezzük, mondjuk my-plugin.php-nek. A .php kiterjesztése megmutatja a WP-t, hogy milyen nyelven készült adott fájl.

Bármelyikben létrehozhat egy fájlt a fent leírt módon szöveg szerkesztő, például a Jegyzettömbben, amelyet már gondosan telepítettek az operációs rendszerbe Windows rendszer(Szövegszerkesztés Macen). a szerkesztő Microsoft Word jobb, ha nem használjuk, mert formázza a szöveget, és ebben a helyzetben egyáltalán nincs rá szükségünk.

Tehát itt van a hozzáadandó kód:

És ez alatt a kód alatt hajtsd végre a változtatásokat, amelyeket kreatív lelked megkíván. Nem kell záró PHP címkéket hozzáadnia a végéhez. Ebben az esetben a cím, leírás és URL megjelenik az adminisztrációs panelen. És természetesen a "ClubWP" információkat saját adataival is helyettesítheti.

Ezután már csak a létrehozott zip-archívumba kell csomagolnia, és elküldeni a webhely ftp-jére. A jövőben így bármilyen módosítást végrehajthat a bővítményen.

Egyszerű módon létrehozhat egy egyszerű bővítményt az Ön igényeinek megfelelően.

2) Code Snippets beépülő modul

Ha a fent leírt módszer nehéz számodra, vagy nagyon gyakorlatias ember vagy, és megszoktad, hogy gyorsabban érj el eredményeket, a kódrészleteket kifejezetten az Ön számára készítettük. A fent leírt funkcióhoz hasonlóan a beépülő modul hozzáadja a kódot, és a téma használata nélkül tovább szerkesztheti azt.

A bővítmény telepítése után egy új „Snippets” ablak jelenik meg az adminisztrációs panelen, amelyben ennek megfelelően új kódrészleteket adhat hozzá. Amelyhez megadhatja a kódot és a céljára vonatkozó információkat.

Így a következőket teheti: engedélyezheti vagy letilthatja az egyéni kódot bővítmények formájában. Nagyon kényelmes és praktikus, mert. néha ütközések lehetségesek a témákkal és a bővítményekkel, és ezt könnyen megértheti, és letilthatja a generált kódot.

3) A gyermektéma Functions.php szerkesztése

Ha a beépülő modulok használata nem felel meg Önnek, és közvetlenül a webhely témáján kell módosítania, akkor ez a módszer az Ön számára. Emlékeztetlek arra, hogy ezt csak gyermektémákkal teheted meg.

A módszer használatához felajánlom a sablonomat függvények.php gyerek téma. Csomagolja ki és szerkessze a fájlt stílus.css(sablonnév és URL-importálás)

P.S. Igyekezzen minden tőle telhetőt, hogy megkönnyítse az életét a jövőben a hibák kijavításában és az egyéni kód szerkesztésében, amikor szükség van rá.

Egy nap úgy döntöttél, hogy létrehozod saját weboldaladat vagy blogodat, és a WordPress-t választottad a menedzsment rendszernek... Ahogy telt az idő, a webhelyed egyre olvashatóbbá válik, majd rájöttél, hogy a még nagyobb népszerűséghez hozzá kell adni néhány funkciót. a webhelyre, vagy csak automatizálja ezt a műveletet.

Bemész a wordpress pluginjainak "raktárába", és azt tapasztalod, hogy a szükséges plugin nincs ott. Mit kell tenni? Hogyan legyen? Ha legalább egy kicsit ismeri a php programozás alapjait, az elrendezést, akkor nem lesz nehéz Írjon saját beépülő modult a WordPresshez.

És most menjünk a „konyhába”, hogy elkészítsük a bővítményünket.

P.s. Ha nem ismered a php-t és az elrendezést… ne keseredj el, kérj meg valakit, hogy írja meg neked a szükséges funkciókat 🙂

Mielőtt elkezdené írni egy beépülő modult, át kell tekintenie a WordPress dokumentációját, amely leírja a bővítmények írásának alapelveit és néhány kódpéldát.

Nem fogom megismételni ezeket az információkat, hanem azonnal a kód írásához fogok.

Írjunk egy egyszerű beépülő modult, amely lehetővé teszi, hogy elmentse és megjelenítse a webhelyével kapcsolatos véleményeket. Természetesen vannak már ilyen bővítmények, de például ez is jól megy.

Az első dolgunk, hogy egyedi nevet találjunk ki a bővítményünknek - " AdvUserReviews«.

Ezután hozzunk létre egy új könyvtárat „advuserreviews” néven a webhely „/wp-content/plugins/” könyvtárában. Ebben létrehozzuk az "advuserreviews.php" fájlt. Ez lesz a fő fájl, amely felelős az általános inicializálásért. (Lehetőleg UTF-8 kódolást használjon a fájlokhoz).

A fájl legelején meg kell adnia a bővítmény alapvető adatait

Most, ha a vezérlőpultra lép, láthatja, hogy a rendszer talált egy új bővítményt, és felajánlja annak aktiválását. De még túl korai ehhez.

Az új bővítményünket OOP stílusban fogjuk megírni, és minden adatfeldolgozás egy fájlban lesz. Hozzuk létre a fájl fő keretét.

// Közvetlen hívás leállítása if(preg_match("#" . basename(__FILE__) . "#", $_SERVER["PHP_SELF"])) ( die("Nem hívhatja meg közvetlenül ezt az oldalt."); ) if (!class_exists("AdvUserReviews")) ( class AdvUserReviews ( // Belső adatok tárolása public $data = array(); // Objektum konstruktor // A fő változók függvényének inicializálása AdvUserReviews() ( ) ) ) global $rprice; $rprice = new AdvUserReviews();

Most adja hozzá a következő kódot az objektumkonstruktorhoz:

AdvUserReviews() függvény ( global $wpdb; // A beépülő modulunk inicializálási állandójának deklarálása DEFINE("AdvUserReviews", true); // Beépülő modulunk neve $this->plugin_name = plugin_basename(__FILE__); // A beépülő modulunk URL-je $ this->plugin_url = trailingslashit(WP_PLUGIN_URL."/".dirname(plugin_basename(__FILE__))); // Táblázat értékeléseink tárolására // a $wpdb változót globálisan kell deklarálni $this->tbl_adv_reviews = $wpdb->prefix "adv_reviews"; // A beépülő modul aktiválásakor végrehajtott függvény register_activation_hook($this->plugin_name, array(&$this, "activate")); // A beépülő modul deaktiválásakor végrehajtott függvény register_deactivation_hook($this ->plugin_name, array (&$this, "deactivate")); // A beépülő modul eltávolításakor végrehajtott függvény register_uninstall_hook($this->plugin_name, array(&$this, "uninstall")); )

Az objektumkonstruktorban 3 "hogot" vagy "horgot" használunk (mi ez?): register_activation_hook, register_deactivation_hookÉs register_uninstall_hook- ezek azok a funkciók, amelyek a plugin aktiválásakor, deaktiválásakor és eltávolításakor hajtódnak végre.

Most végre hajtsuk végre ezeket a funkciókat közvetlenül.

/** * Beépülő modul aktiválása */ function activate() ( globális $wpdb; request_once(ABSPATH . "wp-admin/upgrade-functions.php"); $table = $this->tbl_adv_reviews; // A mysql verzió meghatározása if ( version_compare(mysql_get_server_info(), "4.1.0", ">=")) ( if (! empty($wpdb->charset)) $charset_collate = "ALAPÉRTÉKES KARAKTER BEÁLLÍTÁS $wpdb->karakterkészlet"; if (! empty( $wpdb->collate)) $charset_collate .= " COLLATE $wpdb->collate"; ) // Az áttekintési táblázatunk szerkezete $sql_table_adv_reviews = " TÁBLÁZAT LÉTREHOZÁSA `.$wpdb->prefix."adv_reviews` (`ID` INT(10) NEM ALAPBEÁLLÍTOTT NULL AUTO_INCREMENT, `review_title` VARCHAR(255) NOT NULL ALAPÉRTÉKES "0", `review_text` TEXT NOT NULL, `review_date` TIMESTAMP NOT NULL ALAPÉRTELMEZETT CURRENT_NAME CURRENT_TIME_0,CHAR_ULLER`user`0. VARCHAR(200) NULL, PRIMARY KEY (`ID`))".$charset_collate.";"; // Ellenőrizze, hogy létezik-e a tábla if ($wpdb->get_var("show tables like "".$table."" " ) != $table) ( dbDelta($sql_table_adv_reviews); ) ) /** * Deact plugin invocation */ function deactivate() ( true return; ) /** * Távolítsa el a bővítményt */ function uninstall() ( global $wpdb; $wpdb->query("DROP TABLE IF EXISTS ($wpdb->prefix)adv_reviews"); )

Változó $wpdb felelős az adatbázis lekérdezéséért. Funkció dbDelta elemzi az aktuális táblaszerkezetet, összehasonlítja a kívánt táblaszerkezettel, és szükség szerint hozzáadja vagy módosítja a táblát.

Ennek megfelelően a bővítmény aktiválásakor egy táblázatstruktúra jön létre a vélemények tárolására. A beépülő modul deaktiválásakor nem történik semmilyen művelet, de amikor töröljük, töröljük a táblázatunkat. A részletesebb műveletek a forráskódból érthetők meg.

Elkészült az új plugin alapstruktúrája. Most el kell kezdenünk írni a funkcionális részt. Ehhez a következő kódsorokat kell hozzáadnunk az osztálykonstruktorhoz:

// Ha az admin. felület if (is_admin()) ( // Stílusok és szkriptek hozzáadása add_action("wp_print_scripts", array(&$this, "admin_load_scripts")); add_action("wp_print_styles", array(&$this, "admin_load_styles")); // Menü hozzáadása a bővítményhez add_action("admin_menu", array(&$this, "admin_generate_menu")); ) else ( // Stílusok és szkriptek hozzáadása add_action("wp_print_scripts", array(&$this, "site_load_scripts") )) ; add_action("wp_print_styles", array(&$this, "site_load_styles")); add_shortcode("show_reviews", array (&$this, "site_show_reviews")); )

Nézzük meg közelebbről a kódnak ezt a részét. Kezdjük az adminisztrációs panellel.
Funkció " is_admin» ellenőrzi, hogy éppen milyen üzemmódban dolgozunk - a helyszínen vagy a vezérlőpulton.
Ezután számos kampót használnak a funkciókhoz:

  • wp_print_scripts- Adja hozzá a szükséges javascript fájlokat
  • wp_print_styles- Adja hozzá a szükséges stílusokat
  • admin_menu- Új menü hozzáadása a vezérlőpulthoz

Minden horog megfelel az osztályunkban megvalósított metódusnak. amelyben a szükséges műveleteket elvégzik.
Fontolja meg a stílusok és szkriptek összekapcsolásának kódját

/** * Töltse be a szükséges szkripteket az adminisztrációs oldalhoz * az adminisztrációs panelen */ function admin_load_scripts() ( // Szkriptek regisztrálása wp_register_script("advReviewsAdminJs", $this->plugin_url . "js/admin-scripts.js") ; wp_register_script( "jquery", $this->plugin_url . "js/jquery-1.4.2.min.js"); // Szkriptek hozzáadása az oldalhoz wp_enqueue_script("advReviewsAdminJs"); wp_enqueue_script("jquery"); ) /** * A szükséges stílusok betöltése az adminisztrációs oldalhoz * az adminisztrációs panelen */ function admin_load_styles() ( // Stílusok regisztrálása wp_register_style("advReviewsAdminCss", $this->plugin_url . "css/admin-style.css") ; // Stílusok hozzáadása wp_enqueue_style( "advReviewsAdminCss"); )

Itt a következő funkciókat használjuk.

Minden művelet az átadott "action" paramétertől függ, illetve a "szerkesztés" - a vélemény szerkesztése, "elküldése" - a szerkesztett vélemény mentése és a "törlés" - a vélemény törlése.

Az adatcsere a megjelenítő oldalakkal az objektum "adat" tulajdonságán keresztül történik. Ezeknek az oldalaknak a forráskódja a cikk végén található modullal együtt felkerül az archívumba. Ide nem illesztem be őket, hiszen a téma már elég nagyra sikeredett.

Ezzel befejeződik az adminisztrációs panel, és továbblép a felhasználók visszajelzéseinek megjelenítésére és hozzáadására.

Ahhoz, hogy a wordpress megmondja, mikor hívja meg a bővítményünket, regisztrálnunk kell egy "rövid kódot", amit az osztályunk konstruktorában meg is tettünk. Bővebben róla.

Add_shortcode("show_reviews", array (&$this, "site_show_reviews"));

Most a webhely bármely oldalán elhelyezheti ezt a kódot, és az általunk megadott (második paraméterként átadott) függvény végrehajtására kényszerül. Alább látható ennek a függvénynek a forráskódja.

/** * Webhelyértékelések listája */ public function site_show_reviews($atts, $content=null) ( globális $wpdb; if (isset($_POST["action"]) && $_POST["action"] == " add-review") ( $this->add_user_review(); ) // Válassza ki az összes véleményt az adatbázisból $this->data["reviews"] = $wpdb->get_results("SELECT * FROM `" . $this- >tbl_adv_reviews . "`", ARRAY_A); ## Kimeneti pufferelés bekapcsolása ob_start (); include_once("site_reviews.php"); ## Adatok lekérése $output = ob_get_contents (); ## Pufferelés kikapcsolása ob_end_clean (); return $output ; ) privát függvény add_user_review() ( globális $wpdb; $inputData = array("review_title" => strip_tags($_POST["review_title"]), "review_text" => strip_tags($_POST["review_text"]) , " review_user_name" => strip_tags($_POST["review_user_name"]), "review_user_email" => strip_tags($_POST["review_user_email"]),); // Új vélemény hozzáadása a webhelyhez $wpdb->insert( $this-> tbl_adv_reviews, $inputData); )

Elvileg nincs itt semmi bonyolult - SQL-lekérdezés történik az adatok kiválasztásához, de ha az „action” paramétert átadjuk, akkor először új felülvizsgálatot adunk hozzá. De figyelni kell a kimeneti pufferelésre. A beillesztett oldal adatainak eléréséhez szükséges.

Ez tulajdonképpen minden. Most láthatod, mit kaptunk. A töltse le a bővítményt és a forráskódokat itt lehet.

Természetesen ez csak egy példa a bővítmény létrehozására, de egyszerű vendégszobaként is működik, ha kissé módosítják, például védelmet adnak a botokkal és a lapozással szemben. Jó kódolást :)

Weboldal űrlapja:

Plugin vezérlőpult:

Szerkesztés áttekintése:

A következők is érdekelhetik:


A kódolvashatóság nagyon fájdalmas téma, ezért kellő figyelmet kell fordítani rá. Ebben a cikkben 16 trükköt ismerhet meg, amelyek segítenek előrehaladni ebben a témában.

1. Megjegyzések és dokumentáció

Az IDE-k egyre népszerűbbek a fejlesztői világban, mint praktikus eszközöket biztosítanak a kód kommentálásához és dokumentálásához.

Íme egy példa:

Íme egy másik példa a saját módszer meghívására:

Ebben a példában a kommentelési stílus PHPDoc-on alapul, az általam használt IDE pedig az Aptana.

2. Behúzás

Feltételezem, hogy már ismeri a behúzás fontosságát a kódban. Általában több kódformázási stílus létezik.

Függvény foo() ( if ($talán) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Függvény foo() ( if ($talán) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Függvény foo() ( if ($talán) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Én személy szerint leggyakrabban a 2-es stílust használom, de néha az 1-es stílust használom. De persze minden ízlés dolga. Valószínűleg nincs olyan „legjobb” stílus, amely mindenkinek megfelelne. Ezeket a szabályokat elsősorban azoknak kell betartaniuk, akik csapatban dolgoznak, vagy nyílt forráskódú projektek írásában vesznek részt.

Vannak olyan stílusok is, amelyek egyesítenek bizonyos jellemzőket. Például a PEAR kódolási szabványok, ahol a "(") kapcsos zárójel ugyanazon a sorban marad a feltételes utasításokban, de függvényekbe burkolódik.

KÖRTÉS stílus:

Függvény foo() ( // egy új sorban if ($maybe) ( // ugyanabban a sorban do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Vegye figyelembe azt is, hogy ez a stílus 4 szóközt használ tabulátorok helyett.

Többet megtudhat a különböző stílusokról.

3. Kerülje a felesleges megjegyzéseket

Igen, a kód kommentálása jó; azonban nem kell túlzásba vinni. Íme egy példa:

// országkód lekérése $ország_kód = get_country_code($_SERVER["TÁVOLI_CÍM"]); // ha az ország USA if ($country_code == "US") ( // az echo form_input_state(); )

Ha a kód működése nyilvánvaló, akkor valószínűleg nem szabad felesleges megjegyzéseket írnia.

Ha még nem elérhető, akkor egy kicsit lerövidítheti őket:

// az űrlap megjelenítése, ha az ország US $country_code = get_country_code($_SERVER["REMOTE_ADDR"]); if ($ország_kód == "US") ( echo form_input_state(); )

4. Kódcsoportosítás

Egyes feladatok leggyakrabban több sor kódot igényelnek. Ezért a legjobb, ha az ilyen feladatokat külön, szóközökkel elválasztott blokkokban egyesítjük.

Íme egy egyszerű példa:

// fórumok listájának lekérése $forums = array(); $r = mysql_query("SELECT azonosító, név, leírás a fórumokból"); while ($d = mysql_fetch_assoc($r)) ( $forums = $d; ) // sablon betöltése load_template("fejléc"); load_template("fórum_lista",$fórumok); load_template("lábléc");

Ha minden blokk eleje előtt megjegyzést fűz hozzá, az tovább javítja a kód olvashatóságát.

5. Elnevezési séma

Néha még a PHP nyelvben is találhatunk következetlenségeket a függvények elnevezésében. És itt van számos példa:

  • strpos() vs str_split()
  • imagetypes() vs image_type_to_extension()

Számos népszerű stílus létezik:

  • camelCase: Minden új szó első betűje nagybetűs.
  • aláhúzás: Aláhúzás a szavak között: mysql_real_escape_string().

Ha ezeket a technikákat keveri, előbb-utóbb kínos helyzetbe kerülhet. Ha olyan projekten dolgozik, amely ezen technikák valamelyikét használja, akkor kövesse a példát. Ez továbbra is a programozási nyelvtől függhet. Például a legtöbb Java-fejlesztő a camelCase-t használja, míg a PHP-fejlesztők az aláhúzásjeleket részesítik előnyben.

De még itt sem volt hibrid nélkül. Egyes fejlesztők aláhúzásjeleket használnak az osztályok és metódusok elnevezésében (az osztályokon kívül), más esetekben pedig a camelCase-t:

Osztály Foo_Bar ( nyilvános függvény someDummyMethod() ( ) ) függvény procedural_function_name() ( )

Még egyszer elmondom, hogy nincs jobb stílus. Csak ragaszkodni kell valamihez.

6. SZÁRAZ elv

SZÁRAZ (Ne ismételd magad) Más néven DIE: A sokszorosítás gonosz.

Minden rendszer fő feladata, legyen az webes alkalmazás vagy valami más, az ismétlődő feladatok automatizálása. Ezt az elvet mindig és mindenhol követni kell, különösen, ha Ön fejlesztő. Ugyanazt a kódrészletet nem szabad újra és újra megismételni.

Például a legtöbb webalkalmazás egy vagy több oldalból áll. Nyilvánvaló, hogy ezek az oldalak ugyanazokat az elemeket tartalmazzák. Fejléc, lábléc – a legszembetűnőbb példák. Meglepődne, hogy hány ember ismétli meg ezeket az elemeket minden oldalon.

$this->load->view("includes/header"); $this->load->view($main_content); $this->load->view("includes/footer");

7. Kerülje a mély beágyazást

A kód olvashatósága drasztikusan csökken, ha mély egymásba ágyazás van.

Függvény do_stuff() ( // ... if (írható($mappa)) ( if ($fp = fopen($file_path,"w")) ( if ($stuff = get_some_stuff()) ( if (fwrite($ fp,$stuff)) ( // ... ) else ( return false; ) ) else ( return false; ) ) else ( return false; ) ) else ( return false; ) )

A helyzet javítása érdekében újra kell gondolnia a kód működését, és optimalizálnia kell:

Függvény do_stuff() ( // ... if (!írható($mappa)) ( return false; ) if (!$fp = fopen($file_path,"w")) ( return false; ) if (!$stuff = get_some_stuff()) ( return false; ) if (fwrite($fp,$stuff)) ( // ... ) else ( return false; ) )

8. Vonalhossz korlát

Mindenki tudja, hogy az olvasás folyamata sokkal kellemesebbé válik, ha a szöveget oszlopokra osztják. Ez a fő oka annak, hogy újságjaink így néznek ki:

Hasonló technika alkalmazható kódunkra is:

// rossz $my_email->set_from(" [e-mail védett]")->add_to(" [e-mail védett]")->set_subject("Láncolt módszerek")->set_body("Néhány hosszú üzenet")->send(); // ok $my_email ->set_from(" [e-mail védett]") ->add_to(" [e-mail védett]") ->set_subject("Módszerek láncolt") ->set_body("Néhány hosszú üzenet") ->send(); // bad $query = "SELECT id, username, first_name, last_name, status FROM users LEFT JOIN user_posts USING (users.id, user_posts.user_id) WHERE post_id = "123""; // bad $query = "SELECT id, username, first_name, last_name, status FROM users LEFT JOIN user_posts USING(users.id, user_posts.user_id) WHERE post_id = "123"";

A legtöbb fejlesztő ragaszkodik a 80 és 120 karakteres korláthoz.

9. Fájlok és mappák rendezése

Technikailag az összes alkalmazás kódját egy fájlba helyezheti :) De mit fog tenni, ha valamit módosítani vagy hozzáadni kell.

Emlékszem az első projektjeimre, amelyekhez fájlokat csatoltam. A szervezetem azonban nagyon sántított. Létrehoztam egy "inc" mappát, amibe több fájlt is elhelyeztem: db.php és functions.php. A pályázat írása közben ez a mappa dagadt és dagadt volt, és a végén nehéz volt megérteni, hogy mi hol van.

A probléma megoldásához jobb különféle keretrendszereket használni, vagy legalább ragaszkodni a szerkezetükhöz. Így néz ki a projekt a CodeIgniteren:

10. Változónevek

Általában a változóneveknek teljesen értelmesnek kell lenniük – ez ideális esetben. Az ideiglenes változók kivételt képezhetnek.

Nézzünk néhány példát:

// $i for ciklusokhoz ($i = 0; $i< 100; $i++) { // $j для вложенных циклов for ($j = 0; $j < 100; $j++) { } } // $ret для возвращаемых переменных function foo() { $ret["bar"] = get_bar(); $ret["stuff"] = get_stuff(); return $ret; } // $k и $v для foreach foreach ($some_array as $k =>$v) ( ) // $q, $r és $d a mysql-hez $q = "SELECT * FROM table"; $r = mysql_query($q); while ($d = mysql_fetch_assocr($r)) ( ) // $fp fájlokkal való munkavégzéshez $fp = fopen("file.txt","w");

11 - Írjon kulcsszavakat SQL-ben nagybetűkkel

A legtöbb webalkalmazás adatbázisokkal működik együtt. Ha magad írod az SQL lekérdezéseket, akkor azokat is ennek megfelelően kell formázni... Nincs itt semmi bonyolult. Csak írja be a kulcsszavakat nagybetűkkel.

12. Külön kód és adat

Ez egy másik alapelv, amely segít tisztább programokat írni. Ez abban rejlik, hogy az egyik helyen készíti el az adatokat (mondjuk modelleket), és egy másik helyen kommunikál velük.

Amikor a PHP elindult, inkább egy sablonrendszerhez hasonlított. Az ezen a nyelven futó projektek vegyes HTML- és PHP-kódot tartalmaztak. Most minden megváltozott, és mindenkinek át kell lépnie a pályázatírás új szintjére.

Kialakíthatsz magadnak valamilyen különleges stílust, vagy használhatod az eddigi legnépszerűbb eszközöket.

Népszerű PHP keretrendszerek:

Sablonrendszerek:

Népszerű CMS

13. Speciális szintaxis a sablonokhoz

Ha nem akarja használni a sablonrendszert, akkor nagy valószínűséggel ki kell alakítania saját stílusát a PHP kód HTML-be való beillesztésére.

És itt van egy példa:

Helló, felhasználónév; ?>
|

Üzenőfalam

cím; ?>

Fórumok $fórumként): ?>

azonosító, $fórum->cím) ?> (szálak->count(); ?>szálak)

leírás; ?>

Ez a technika lehetővé teszi a felesleges zárójelek elkerülését. Ezenkívül az ilyen kód jól illeszkedik a HTML-környezetbe.

14. Procedurális és objektum-orientált megközelítések

Az objektum-orientált programozás segít ragaszkodni egy többé-kevésbé világos szerkezethez, de ez nem jelenti azt, hogy el kellene térni a pályázatírás eljárási elveitől.

Az objektumok kiválóan alkalmasak az adatok ábrázolására. Példa:

Class User ( public $felhasználónév; publikus $utónév; public $last_name; public $email; public function __construct() ( // ... ) public function create() ( // ... ) public function save() ( / / ... ) nyilvános függvény delete() ( // ... ) )

Az eljárási módszereknek megvannak a sajátos előnyei.

Nagybetűs függvény($string) ( $ret = strtoupper($string); $ret .= strtolower(substr($string,1)); return $ret; )

15. Olvassa el a nyílt forráskódot

A nyílt forráskódú projekteket jellemzően nagyszámú fejlesztő ír. Ebből a szempontból az írott kód tanulmányozása hasonló projektekben segíthet a tapasztalatszerzésben. Szóval ne pazarolja az idejét erre.

16. Refaktorálás

Az újrafaktorálás a kód megváltoztatása a funkcionalitás elvesztése nélkül. Az olvashatóság javítására is használható, nincs hely a hibák javítására vagy a funkciók bővítésére. Csak egy kicsit módosítod a kódod szerkezetét.

Remélem, hogy ez a cikk hasznos volt számodra! Lemaradtam valamiről? Ossza meg tapasztalatait!

A WordPress.com nem engedélyezi a potenciálisan veszélyes kód használatát a blogban, de lehetőség van a forráskód közzétételére megtekintés céljából. Létrehoztunk egy címkét, amely megőrzi a forráskód formázását, és bizonyos nyelveknél szintaktikai kiemelést is biztosít. Példa:

#button (betűsúly: félkövér; szegély: 2px tömör #fff; )

A fenti kódrészlethez hasonló eredmény eléréséhez csomagolja be a kódot a következő címkékbe:

A kódod

A "language" paraméter határozza meg a nyelvi és szintaxis kiemelési szabályokat. A következő értékek támogatottak:

  • actionscript3
  • hideg fúzió
  • csharp
  • Delphi
  • erlang
  • fsharp
  • Groovy
  • javascript
  • javafx
  • matlab
  • powershell
  • piton
  • scala

Ha a "language" paraméter értéke nincs beállítva, akkor a "text" érték kerül felhasználásra (szintaktikai kiemelés nélkül).
A "code" címkék közötti kód automatikusan kódolásra kerül a megjelenítéshez, így nem kell aggódnia a HTML elemektől vagy hasonlóktól.

Konfigurációs lehetőségek

A címkék számos konfigurációs lehetőséget is támogatnak, amelyek segítségével személyre szabhatja a megjelenést és az érzést. Használatuk teljesen opcionális.

  • automatikus linkek (igaz/hamis) – A kódban szereplő minden URL hiperhivatkozásként jelenik meg. Alapértelmezett érték: true.
  • összecsukás (igaz/hamis) – Ha igazra van állítva, a kódterület összecsukódik az oldal betöltésekor. A kibontásához kattintson rá. Ez nagy kódrészletek esetén hasznos. Az alapértelmezett érték false.
  • első sor (szám) – Megadja azt a számot, amelynél a sorszámozás kezdődik. Alapértelmezett érték: 1.
  • gutter (igaz/hamis) - Ha hamisra van állítva, a sorszámok elrejtve lesznek. Alapértelmezett érték: true.
  • kiemelés (vesszővel elválasztott számok) - A kiemelendő sorszámok, például "4,7,19".
  • hmtlscript (igaz/hamis) – Ha igazra van állítva, a HTML/XML kód kiemelése történik. Ez akkor hasznos, ha vegyes kódot, például PHP-t tesz közzé HTML-ben. Csak néhány nyelven működik. Alapértelmezett érték: false.
  • light (igaz/hamis) – Ha igazra van állítva, a sorszámok és az eszköztár elrejtésre kerülnek. Ez akkor hasznos, ha egy vagy kétsoros kódrészletet tesz közzé. Alapértelmezett érték: false.
  • padlinenumbers (igaz/hamis/egész) – Lehetővé teszi a sorszámok nullákkal való kitöltésének szabályozását. A True érték az automatikus kiegészítést állítja be, a false érték letiltja a kiegészítést, a szám pedig egy fix számú karaktert állít be a sorszámokhoz.
  • eszköztár (igaz/hamis) - Ha hamisra van állítva, nem jelenik meg gombokkal ellátott eszköztár, amikor a kód fölé viszi az egérmutatót. Alapértelmezett érték: true.
  • tördelési vonalak (igaz/hamis) – Ha hamisra van állítva, a sortördelés le lesz tiltva. Ha hosszú sorok vannak, egy vízszintes görgetősáv jelenik meg.
  • title (karakterlánc) – a kód címe. Hasznos lehet az összecsukási opcióval kombinálva.

Példák a fenti paraméterek használatára:

Ez a sor nincs kiemelve. Ez a sor kiemelve van. Ez a sor kiemelve van. Ez a sor nincs kiemelve. Ez egy rövid kódrészlet, sorszámokkal, legfeljebb 4 karakteres nullákkal. //Ebben a példában a sor tördelése le van tiltva. A szöveg teljes elolvasásához a görgetősávot kell használnia. Ezenkívül ez a példa letiltja a sorszámozást, és elrejti az eszköztárat.

És ez egy nagyobb kódrészlet. Itt a PHP van kiválasztva, és a 12-es sor ki van emelve.

Példa a WordPress.com kódra

Példa a WordPress.com kódra

Ez a sor kiemelve van. Nagyon-nagyon-nagyon-nagyon-nagyon-nagyon-nagyon-nagyon-nagyon-nagyon-nagyon-nagyon-nagyon-nagyon-nagyon-nagyon-nagyon-nagyon-hosszú sor.
Ez egy példa az intelligens lapokra.
wordpress.com

Kösz
Ennek a funkciónak a megvalósításához a SyntaxHighlighter projektet (szerző: Alex Gorbatchev) használják. A felhasználók beállíthatják a megfelelőt

Ü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 szkript közvetlenül fájlokban fut le.

Nyilvános oldalak esetében (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 beépülő modulok 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 designt, akkor a functions.php fájlokon és egyebeken keresztül vé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 kicseréli standard funkció, amely egy szöveges WordPress widget munkáját biztosítja, amely funkció 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 a bejegyzésekbe való beszúrást wordpress kód legtisztább formájában, től .

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";

Rossz

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.



Betöltés...
Top