PHP kod u WordPress-u - najbolje prakse. Korisni umetci (isječci) koda za WordPress Primjeri pisanja koda u wp

Usuđujem se pretpostaviti da je u vašem životu bilo slučajeva kada ste htjeli nešto dodati (ispraviti) u temu vašeg WP stranice, ili u funkcionalnost nekog dodatka. Štaviše, programeri nisu uključili ovu mogućnost standardnim sredstvima menadžment. A vaša duša ne prepoznaje nikakva ograničenja i zahtijeva let mašte 🙂 Kao što razumijete, postoji izlaz iz svake situacije, u ovom slučaju, morat ćemo ispraviti kod dodatka, teme...

Glavna poteškoća u uređivanju koda je to što promjene koje napravite, nažalost, ne traju dugo i vjerovatno će biti poništene sa sljedećim ažuriranjem. Ako vidite rješenje u izbjegavanju ažuriranja, usuđujem se da vas odvratim od ove opasne neplemenite odluke, budući da ažuriranja sadrže važne promjene u smislu sigurnosti i ispravki grešaka, a često i novih funkcija.

Kao rezultat toga, poželjno je koristiti metode koje će stajati u našem svijetu koji se dinamički mijenja i istovremeno uštedjeti vaše dragocjeno vrijeme.

Upozorenja!

Na Internetu često možete pronaći savjete koji predlažu da napravite izmjene u datoteci. functions.php- ako postoji bilo kakva mogućnost bez toga - bolje je ne dirati ovaj fajl. U metodama ispod, vidjet ćete kako to implementirati. U svakom slučaju, morate kreirati podređenu temu i ostaviti netaknutu nadređenu temu.

Kada dajete prefiks funkciji, uvijek koristite prilagođeni kod u obliku: _prefiks(na naziv promijenjene funkcije). Ova radnja će vas spasiti od sukoba s drugim funkcijama teme ili dodatka.

Kako onda dodati kod na WP stranicu?

1) Prilagođeni dodatak

Dakle, možete umetnuti isječke koda, koji neće biti izbrisani tokom ažuriranja, a možete ih i uređivati, aktivirati u budućnosti ili obrnuto - deaktivirati ako je potrebno.

To je jednostavno: prvo morate kreirati direktorij za svoj dodatak i nazvati ga na odgovarajući način, na primjer moy-plugin (koristite samo crticu, a ne zadnju kosu crtu)

Zatim kreiramo datoteku glavnog dodatka. Kao što razumete, trebalo bi da sadrži naziv, opis i osnovne informacije, kao i kod koji će pomoći u zaštiti dodatka od uljeza. I mi zovemo ovu datoteku, recimo my-plugin.php. Ekstenzija .php će pokazati WP na kojem jeziku je kreirana dati fajl.

Možete kreirati datoteku na gore opisan način u bilo kojem uređivač teksta, na primjer, u NotePadu, koji je već pažljivo instaliran u operativnom Windows sistem(TextEdit na Macu). urednik Microsoft Word bolje ga je ne koristiti, jer on formatira tekst, a nama u ovoj situaciji uopće nije potreban.

Dakle, evo koda za dodavanje:

A ispod ovog koda izvršite svoje promjene koje vaša kreativna duša zahtijeva. Ne morate dodavati završne PHP oznake na kraju. U ovom slučaju, naslov, opis i URL će biti prikazani na vašem administrativnom panelu. I, naravno, možete zamijeniti "ClubWP" informacije svojim vlastitim podacima.

Nakon toga, ostaje samo da kreirano spakujete u zip arhivu i pošaljete na ftp vašeg sajta. Ubuduće, na ovaj način ćete moći napraviti bilo kakve promjene na svom dodatku.

Na jednostavan način kreirat ćete jednostavan dodatak za svoje potrebe.

2) Dodatak za isječke koda

Ako vam je gore opisana metoda teška, ili ste vrlo praktična osoba i navikli ste na brže postizanje rezultata, Code Snippets je kreiran posebno za vas. Poput gore opisane funkcije, dodatak dodaje vaš kod uz mogućnost daljeg uređivanja bez upotrebe vaše teme.

Nakon instaliranja dodatka, na admin panelu će se pojaviti novi prozor "Snippets" u koji, shodno tome, možete dodati nove isječke. Za koji možete unijeti kod i informacije o njegovoj namjeni.

Dakle, možete: omogućiti ili onemogućiti prilagođeni kod u obliku dodataka. Vrlo zgodno i praktično, jer. ponekad su mogući sukobi s temama i dodacima, a to možete lako razumjeti i onemogućiti generirani kod.

3) Uređivanje Functions.php podređene teme

Ako vam upotreba dodataka ne odgovara i trebate promijeniti direktno temu svoje stranice, onda je ova metoda za vas. Podsjećam vas da ovo možete učiniti samo s dječjim temama.

Da bih koristio ovu metodu, nudim svoj šablon functions.php dječja tema. Raspakujte i uredite datoteku style.css(ime šablona i uvoz URL-a)

P.S. Dajte sve od sebe da olakšate svoj život u budućnosti, u smislu vašeg teškog dijela ispravljanja grešaka i uređivanja prilagođenog koda prema potrebi.

Jednog dana ste odlučili da napravite svoju web stranicu ili blog, a za sistem upravljanja ste odabrali WordPress... Kako je vrijeme prolazilo, vaša stranica postaje sve čitljivija, a onda ste shvatili da za još veću popularnost morate dodati neku funkcionalnost na stranicu ili jednostavno automatizirati neku tu radnju.

Odete u "skladište" dodataka za wordpress i otkrijete da dodatak koji vam treba nije tamo. sta da radim? Kako biti? Ako ste barem malo upoznati sa osnovama programiranja u php-u, layoutom, onda vam neće biti teško Napišite vlastiti dodatak za WordPress.

A sada idemo u "kuhinju" da pripremimo naš plugin.

P.s. Ako nemate znanja u php-u i layoutu... nemojte se uzrujati, zamolite nekoga da vam napiše potrebnu funkcionalnost 🙂

Pre nego što počnete da pišete dodatak, potrebno je da pogledate WordPress dokumentaciju, koja opisuje osnovne principe pisanja dodataka i neke primere koda.

Neću duplirati ovu informaciju, već ću odmah preći direktno na pisanje koda.

Hajde da napišemo jednostavan dodatak koji će vam omogućiti da sačuvate i prikažete recenzije o vašoj web lokaciji. Naravno, već postoje takvi dodaci, ali za primjer će biti sasvim u redu.

Prvo što ćemo učiniti je smisliti jedinstveno ime za naš dodatak - " AdvUserReviews«.

Zatim, napravimo novi direktorij pod nazivom "advuserreviews" u direktoriju "/wp-content/plugins/" vaše web stranice. I u njemu ćemo kreirati datoteku "advuserreviews.php". Ovo će biti glavni fajl koji će biti odgovoran za opštu inicijalizaciju. (Poželjno je koristiti UTF-8 kodiranje za datoteke).

Na samom početku datoteke morate navesti osnovne informacije o dodatku

Sada, ako odete na kontrolnu tablu, možete vidjeti da je sistem pronašao novi dodatak i nudi da ga aktivira. Ali još je prerano za to.

Naš novi dodatak ćemo napisati u OOP stilu i sva obrada podataka će biti u jednom fajlu. Kreirajmo glavni okvir datoteke.

// Zaustavi direktni poziv if(preg_match("#" . basename(__FILE__) . "#", $_SERVER["PHP_SELF"])) ( die("Nije vam dozvoljeno direktno pozvati ovu stranicu."); ) if (!class_exists("AdvUserReviews")) ( class AdvUserReviews ( // Pohranjivanje internih podataka public $data = array(); // Konstruktor objekta // Inicijalizacija funkcije glavne varijable AdvUserReviews() ( ) ) ) global $rprice; $rprice = novi AdvUserReviews();

Sada dodajte sljedeći kod u konstruktor objekata:

Funkcija AdvUserReviews() ( globalno $wpdb; // Deklarirajte konstantu inicijalizacije našeg dodatka DEFINE("AdvUserReviews", true); // Naziv našeg dodatka $this->plugin_name = plugin_basename(__FILE__); // URL za naš plugin $ this->plugin_url = trailingslashit(WP_PLUGIN_URL."/".dirname(plugin_basename(__FILE__))); // Tabela za pohranjivanje naših recenzija // varijabla $wpdb mora biti deklarirana globalno $this->tbl_adv_reviews = $wpdb->prefix "adv_reviews"; // Funkcija koja se izvršava kada je dodatak aktiviran register_activation_hook($this->plugin_name, array(&$this, "aktiviraj")); // Funkcija koja se izvršava kada je dodatak deaktiviran register_deactivation_hook($this ->plugin_name, array (&$this, "deactivate")); // Funkcija koja se izvršava kada se plugin deinstalira register_uninstall_hook($this->plugin_name, array(&$this, "uninstall")); )

U konstruktoru objekata koristimo 3 "kuke" ili "kuke" (šta je to?): register_activation_hook, register_deactivation_hook I register_uninstall_hook- ovo su funkcije koje se izvršavaju kada je dodatak aktiviran, deaktiviran i uklonjen.

Sada implementirajmo ove funkcije direktno.

/** * Aktivacija dodatka */ function activate() ( globalno $wpdb; require_once(ABSPATH . "wp-admin/upgrade-functions.php"); $table = $this->tbl_adv_reviews; // Odredite verziju mysql-a ako ( version_compare(mysql_get_server_info(), "4.1.0", ">=")) ( if (!prazno($wpdb->charset)) $charset_collate = "ZADANI POSTAV KARAKTERA $wpdb->charset"; if (!prazno( $wpdb->collate)) $charset_collate .= " COLLATE $wpdb->collate"; ) // Struktura naše tabele za pregled $sql_table_adv_reviews = " CREATE TABLE `".$wpdb->prefix."adv_reviews` (`ID` INT(10) UNSIGNED NULL AUTO_INCREMENT, `review_title` VARCHAR(255) NOT NULL DEFAULT "0", `review_text` TEKST NIJE NULL, `review_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `review NULL_user`review, `review 0 email VARCHAR(200) NULL, PRIMARNI KLJUČ (`ID`))".$charset_collate.";"; // Provjerite postoji li tabela if ($wpdb->get_var("prikaži tabele kao što je ".$table.") " ) != $table) ( dbDelta($sql_table_adv_reviews); ) ) /** * Deact pozivanje dodatka */ funkcija deactivate() (vrati true; ) /** * Ukloni dodatak */ function uninstall() ( globalni $wpdb; $wpdb->query("ISPUSTI TABLU AKO POSTOJI ($wpdb->prefix)adv_reviews"); )

Varijabilna $wpdb odgovoran je za upite bazi podataka. Funkcija dbDelta analizira trenutnu strukturu tabele, upoređuje je sa željenom strukturom tabele i dodaje ili modifikuje tabelu po potrebi.

Shodno tome, kada je dodatak aktiviran, kreira se struktura tabele za pohranjivanje recenzija. Kada je dodatak deaktiviran, ništa se ne događa, ali kada ga izbrišemo, brišemo našu tablicu. Detaljnije akcije se mogu razumjeti iz izvornog koda.

Osnovna struktura novog dodatka je spremna. Sada treba da počnemo da pišemo funkcionalni deo. Da bismo to učinili, moramo dodati sljedeće linije koda u konstruktor klase:

// Ako smo u admin. interfejs if (is_admin()) ( // Dodaj stilove i skripte add_action("wp_print_scripts", array(&$this, "admin_load_scripts")); add_action("wp_print_styles", array(&$this, "admin_load_styles")); // Dodajte meni za dodatak add_action("admin_menu", array(&$this, "admin_generate_menu")); ) else ( // Dodajte stilove i skripte 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")); )

Pogledajmo pobliže ovaj dio koda. Počnimo s administrativnim panelom.
funkcija " is_admin» provjerava u kojem režimu trenutno radimo - na stranici ili u kontrolnoj tabli.
Zatim se koristi nekoliko kukica za funkcije:

  • wp_print_scripts- Dodajte potrebne javascript datoteke
  • wp_print_styles- Dodajte potrebne stilove
  • admin_menu- Dodajte novi meni u kontrolnu tablu

Svaka kuka odgovara implementiranoj metodi u našoj klasi. u kojoj se izvode potrebne operacije.
Razmotrite kod za povezivanje stilova i skripti

/** * Učitajte potrebne skripte za administrativnu stranicu * u admin panel */ funkcija admin_load_scripts() ( // Registrirajte skripte 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"); // Dodajte skripte na stranicu wp_enqueue_script("advReviewsAdminJs"); wp_enqueue_script("jquery"); ) /** * Učitavanje potrebnih stilova za admin stranicu * u admin panel */ funkcija admin_load_styles() ( // Registrirajte stilove wp_register_style("advReviewsAdminCss", $this->plugin_url . "css/admin-style.css") ; // Dodaj stilove wp_enqueue_style( "advReviewsAdminCss"); )

Ovdje se koriste sljedeće funkcije.

Svaka radnja zavisi od proslijeđenog parametra "action", odnosno "edit" - uređivanje recenzije, "submit" - čuvanje uređene recenzije i "delete" - brisanje recenzije.

Podaci se razmjenjuju sa stranicama za prikaz preko svojstva "data" objekta. Izvorni kod ovih stranica biće objavljen u arhivi sa ovim modulom na kraju članka. Ovdje ih neću ubacivati, jer se tema već pokazala prilično obimnom.

Ovim se završava administrativni panel i prelazi se na prikaz i dodavanje povratnih informacija od korisnika.

Da bismo rekli wordpress-u kada da pozove naš dodatak, moramo registrovati "kratki kod", što je urađeno u konstruktoru naše klase. Više o tome.

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

Sada, na bilo koju stranicu web stranice, možete postaviti ovaj kod i on će prisiliti funkciju koju smo naveli (prošla kao drugi parametar) da se izvrši. Ispod je izvorni kod za ovu funkciju.

/** * Lista recenzija stranice */ javna funkcija site_show_reviews($atts, $content=null) ( globalno $wpdb; if (isset($_POST["action"]) && $_POST["action"] == " add-review") ( $this->add_user_review(); ) // Odaberite sve recenzije iz baze podataka $this->data["reviews"] = $wpdb->get_results("SELECT * FROM `" . $this- >tbl_adv_reviews . "`", ARRAY_A); ## Uključi baferovanje izlaza ob_start (); include_once("site_reviews.php"); ## Dobij podatke $output = ob_get_contents (); ## Isključi baferovanje ob_end_clean (); return $output ; ) privatna funkcija add_user_review() ( globalno $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"]),); // Dodajte novu recenziju na stranicu $wpdb->insert( $this-> tbl_adv_reviews, $inputData); )

U principu, ovdje nema ništa komplicirano - pravi se SQL upit za odabir podataka, ali ako se prođe parametar "action", tada se prvo dodaje novi pregled. Ali treba obratiti pažnju na baferovanje izlaza. Neophodan je da bi se dobili podaci o ubačenoj stranici.

To je zapravo sve. Sada možete vidjeti šta imamo. A preuzimanje dodataka i izvornih kodova možete ovdje.

Naravno, ovo je samo primjer kreiranja dodatka, ali će raditi i kao jednostavna soba za goste ako se malo izmijeni, na primjer, dodajući zaštitu od botova i paginacije. Sretno kodiranje :)

Obrazac web stranice:

Kontrolna tabla dodataka:

Pregledajte uređivanje:

Možda će vas zanimati i:


Čitljivost koda je veoma bolna tema i treba joj posvetiti dužnu pažnju. U ovom članku ćete naučiti o 16 trikova koji će vam pomoći da napredujete u ovoj temi.

1. Komentari i dokumentacija

IDE-ovi postaju sve popularniji u svijetu programera kao oni pružaju zgodne alate za komentarisanje i dokumentovanje koda.

Evo primjera:

Evo još jednog primjera pozivanja vlastite metode:

U ovom primjeru, stil komentiranja je baziran na PHPDoc-u, a IDE koji koristim je Aptana.

2. Udubljenje

Pretpostavljam da već znate koliko je važno uvlačenje u vašem kodu. Općenito, postoji nekoliko stilova oblikovanja koda.

Funkcija foo() ( if ($možda) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Funkcija foo() ( if ($možda) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Funkcija foo() ( if ($možda) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Lično, najčešće koristim stil broj #2, ali ponekad idem na #1. Ali sve je stvar ukusa, naravno. Najvjerovatnije ne postoji "najbolji" stil koji bi pristajao apsolutno svima. Ova pravila, prije svega, moraju poštovati oni koji rade u timu ili sudjeluju u pisanju projekata otvorenog koda.

Postoje i stilovi koji kombinuju neke karakteristike. Na primjer, standardi kodiranja PEAR, gdje vitičasta zagrada "(" ostaje na istoj liniji u uslovnim izjavama, ali je umotana u funkcije.

KRUŠKA stil:

Funkcija foo() ( // na novom redu if ($maybe) ( // na istoj liniji do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Također imajte na umu da ovaj stil koristi 4 razmaka umjesto tabulatora.

Možete saznati više o različitim stilovima.

3. Izbjegavajte nepotrebne komentare

Da, komentarisanje koda je dobro; međutim, nema potrebe pretjerivati. Evo primjera:

// dobijanje koda zemlje $country_code = get_country_code($_SERVER["REMOTE_ADDR"]); // ako je država SAD if ($country_code == "SAD") ( // prikaži formu echo form_input_state(); )

Ako je rad koda očigledan, onda najvjerovatnije ne biste trebali pisati nepotrebne komentare.

Ako već nisu dostupni, možete ih malo skratiti:

// prikazuje obrazac ako je zemlja US $country_code = get_country_code($_SERVER["REMOTE_ADDR"]); if ($country_code == "SAD") ( echo form_input_state(); )

4. Grupiranje kodova

Najčešće neki zadaci zahtijevaju pisanje nekoliko linija koda. Stoga je najbolje kombinirati takve zadatke u zasebne blokove odvojene razmacima.

Evo jednostavnog primjera:

// dobijemo listu foruma $forums = array(); $r = mysql_query("IZABIR ID, ime, opis SA foruma"); while ($d = mysql_fetch_assoc($r)) ( $forums = $d; ) // učitavanje šablona load_template("header"); load_template("forum_list",$forums); load_template("podnožje");

Ako dodate komentar prije početka svakog bloka, to će dodatno poboljšati čitljivost vašeg koda.

5. Šema imenovanja

Ponekad čak iu PHP jeziku možete pronaći nedosljednosti u imenovanju funkcija. A evo i brojnih primjera:

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

Postoji nekoliko popularnih stilova:

  • camelCase: Prvo slovo svake nove riječi je veliko.
  • donje crte: donja crta između riječi: mysql_real_escape_string().

Ako pomiješate ove tehnike, prije ili kasnije možete doći u neugodnu situaciju. Ako radite na projektu koji koristi jednu od ovih tehnika, trebali biste slijediti njihov primjer. Još uvijek može ovisiti o programskom jeziku. Na primjer, većina Java programera koristi camelCase dok PHP programeri preferiraju donje crte.

Ali ni ovdje nije bilo bez hibrida. Neki programeri koriste donje crte u imenovanju klasa i metoda (van klasa), au drugim slučajevima koriste camelCase:

Klasa Foo_Bar ( javna funkcija someDummyMethod() ( ) ) funkcija naziv_procedure() ( )

Još jednom ću reći da nema boljeg stila. Samo se trebaš držati nečega.

6. DRY princip

Osušite (nemojte se ponavljati) Također poznat kao DIE: Dupliciranje je zlo.

Glavni zadatak svakog sistema, bilo da se radi o web aplikaciji ili nečem drugom, je automatizacija zadataka koji se ponavljaju. Ovaj princip treba slijediti uvijek i svuda, posebno ako ste programer. Isti dio koda ne treba ponavljati iznova i iznova.

Na primjer, većina web aplikacija se sastoji od jedne ili više stranica. Jasno je da će ove stranice sadržavati iste elemente. Zaglavlje, podnožje - najupečatljiviji primjeri. Iznenadili biste se koliko ljudi još uvijek duplicira ove elemente na svakoj stranici.

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

7. Izbjegavajte duboko gniježđenje

Čitljivost koda je drastično smanjena ako imate duboko ugniježđenje.

Funkcija do_stuff() ( // ... if (is_writable($folder)) ( if ($fp = fopen($file_path,"w")) ( if ($stuff = get_some_stuff()) ( if (fwrite($ fp,$stuff)) ( // ... ) else ( vrati false; ) ) else ( vrati false; ) ) else ( vrati false; ) ) else ( vrati false; ) )

Da biste ispravili situaciju, trebali biste ponovo razmotriti kako vaš kod radi i optimizirati ga:

Funkcija do_stuff() ( // ... if (!is_writable($folder)) (vrati false; ) if (!$fp = fopen($file_path,"w")) (vrati false; ) if (!$stuff = get_some_stuff()) ( vrati false; ) if (fwrite($fp,$stuff)) ( // ... ) else ( vrati false; ) )

8. Ograničenje dužine linije

Svi znaju da proces čitanja postaje mnogo ugodniji kada se tekst podijeli na stupce. Ovo je glavni razlog zašto naše novine izgledaju ovako:

Slična tehnika se može primijeniti na naš kod:

// loš $my_email->set_from(" [email protected]")->add_to(" [email protected]")->set_subject("Methods Chained")->set_body("Neka duga poruka")->send(); // ok $my_email ->set_from(" [email protected]") ->dodaj_u(" [email protected]") ->set_subject("Metode ulančane") ->set_body("Neka duga poruka") ->send(); // loš $query = "ODABIR ID, korisničko ime, ime, prezime, status OD korisnika LIJEVO PRIDRUŽITE se korisničkim objavama KORIŠTENJEM (users.id, user_posts.user_id) WHERE post_id = "123""; // loš $query = "ODABIR ID, korisničko ime, ime, prezime, status FROM korisnika LIJEVO PRIDRUŽI SE korisničkim objavama USING(users.id, user_posts.user_id) GDJE post_id = "123"";

Većina programera drži se ograničenja od 80 i 120 znakova.

9. Organiziranje datoteka i mapa

Tehnički, možete staviti sav kod aplikacije u jednu datoteku :) Ali šta ćete kada trebate nešto promijeniti ili dodati.

Sjećam se svojih prvih projekata gdje sam prilagao fajlove. Međutim, moja organizacija je bila veoma hroma. Napravio sam folder "inc" u koji sam postavio nekoliko fajlova: db.php i functions.php. U procesu pisanja aplikacije, ovaj folder je bio naduvan i naduvan i na kraju je bilo teško shvatiti šta je gdje.

Da biste riješili ovaj problem, bolje je koristiti razne vrste okvira ili se barem držati njihove strukture. Ovako izgleda projekat na CodeIgniteru:

10. Imena varijabli

Općenito, imena varijabli trebaju imati puno značenje - to je idealno. Izuzetak se može napraviti za privremene varijable.

Pogledajmo nekoliko primjera:

// $i for for petlje ($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 i $d za mysql $q = "SELECT * FROM table"; $r = mysql_query($q); while ($d = mysql_fetch_assocr($r)) ( ) // $fp za rad sa fajlovima $fp = fopen("file.txt","w");

11 - Napišite ključne riječi u SQL-u velikim slovima

Većina web aplikacija komunicira sa bazama podataka. Ako sami pišete SQL upite, onda ih također treba u skladu s tim formatirati... Ovdje nema ništa komplicirano. Samo napišite ključne riječi velikim slovima.

12. Odvojite šifru i podatke

Ovo je još jedan princip koji će vam pomoći da pišete čistije programe. Leži u tome da podatke pripremate na jednom mjestu (recimo modele), a na drugom stupate u interakciju s njima.

Kada je PHP tek počeo, više je ličio na šablonski sistem. Projekti na ovom jeziku sadržavali su miješani HTML i PHP kod. Sada se sve promijenilo i svi bi trebali prijeći na novi nivo pisanja aplikacija.

Možete sami osmisliti neki poseban stil ili možete koristiti najpopularnija sredstva do sada.

Popularni PHP okviri:

Sistemi šablona:

Popularni CMS

13. Posebna sintaksa za šablone

Ako ne želite da koristite šablonski sistem, onda ćete najverovatnije morati da razvijete sopstveni stil ubacivanja PHP koda u HTML.

A evo primjera:

zdravo, korisničko ime; ?>
|

Moja Message Board

naslov; ?>

Forumi kao $forum): ?>

id, $forum->title) ?> (threads->count(); ?> niti)

opis; ?>

Ova tehnika će vam omogućiti da izbjegnete dodatne zagrade. Takođe, takav kod se dobro uklapa u HTML kontekst.

14. Proceduralni i objektno orijentisani pristupi

Objektno orijentirano programiranje pomoći će vam da se držite više-manje jasne strukture, ali to ne znači da treba odstupiti od proceduralnih principa pisanja aplikacija.

Objekti su odlični za predstavljanje podataka. primjer:

Korisnik klase (javno $username; javno $first_name; javno $last_name; javna $e-pošta; javna funkcija __construct() ( // ... ) javna funkcija create() ( // ... ) javna funkcija save() ( / / ... ) javna funkcija delete() ( // ... ) )

Proceduralne metode imaju svoje specifične prednosti.

Funkcija kapitalize($string) ( $ret = strtoupper($string); $ret .= strtolower(substr($string,1)); return $ret; )

15. Pročitajte otvoreni izvorni kod

Projekte otvorenog koda obično piše veliki broj programera. Sa ove tačke gledišta, proučavanje pisanog koda u sličnim projektima može vam pomoći da steknete iskustvo. Zato ne gubite vrijeme na ovo.

16. Refaktoring

Refaktoring je promjena koda bez gubitka funkcionalnosti. Također se može koristiti za poboljšanje čitljivosti.Nema mjesta za ispravljanje grešaka ili dodavanje funkcionalnosti. Vi samo malo promijenite strukturu svog koda.

Nadam se da vam je ovaj članak bio od pomoći! Nedostaje mi nešto? Podijelite svoje iskustvo!

WordPress.com ne dozvoljava korištenje potencijalno opasnog koda na blogu, ali je moguće objaviti izvorni kod na pregled. Napravili smo oznaku koja čuva formatiranje izvornog koda i čak pruža isticanje sintakse za neke jezike. primjer:

#button (font-weight: bold; border: 2px solid #fff; )

Da biste dobili rezultat sličan gore navedenom isječku, umotajte svoj kod u ove oznake:

Vaš kod

Parametar "language" specificira pravila za isticanje jezika i sintakse. Podržane su sljedeće vrijednosti:

  • actionscript3
  • hladna fuzija
  • csharp
  • delphi
  • erlang
  • fsharp
  • Groovy
  • javascript
  • javafx
  • matlab
  • powershell
  • python
  • scala

Ako vrijednost parametra "jezik" nije postavljena, koristi se vrijednost "tekst" (bez isticanja sintakse).
Kod između oznaka "code" će biti automatski kodiran za prikaz, tako da ne morate brinuti o HTML elementima ili bilo čemu sličnom.

Opcije konfiguracije

Oznake također podržavaju mnoge opcije konfiguracije koje možete koristiti za prilagođavanje izgleda i osjećaja. Njihova upotreba je potpuno neobavezna.

  • autolinkovi (tačno/netačno) - Svaki URL u kodu se prikazuje kao hiperveza. Zadana vrijednost: true.
  • kolaps (tačno/netačno) - Ako je postavljeno na tačno, područje koda će se skupiti pri učitavanju stranice. Da biste ga proširili, morat ćete kliknuti na njega. Ovo je korisno za velike isječke koda. Zadana vrijednost je false.
  • prvi red (broj) - Određuje broj od kojeg počinje numerisanje redova. Zadana vrijednost: 1.
  • gutter (true/false) - Ako je postavljeno na false, brojevi linija će biti skriveni. Zadana vrijednost: true.
  • highlight (brojevi razdvojeni zarezima) - brojevi redova koji se trebaju istaknuti, na primjer "4,7,19".
  • hmtlscript (true/false) - Ako je postavljeno na true, vrši se isticanje HTML/XML koda. Ovo je korisno kada se objavljuje mešoviti kod kao što je PHP unutar HTML-a. Radi samo sa nekim jezicima. Zadana vrijednost: false.
  • light (tačno/netačno) - Ako je postavljeno na tačno, brojevi linija i traka sa alatkama će biti skriveni. Ovo je korisno kada objavljujete isječak koda od jednog ili dva reda. Zadana vrijednost: false.
  • padlinenumbers (true/false/integer) - Omogućava vam da kontrolišete popunjavanje brojeva linija nulama. Tačna vrijednost postavlja automatsko dovršavanje, lažna vrijednost onemogućuje završetak, broj postavlja fiksni broj znakova za brojeve redaka.
  • traka sa alatkama (tačno/netačno) - Ako je postavljeno na netačno, traka sa alatkama sa dugmadima se neće pojaviti kada se lebdi iznad koda. Zadana vrijednost: true.
  • wraplines (true/false) - Ako je postavljeno na false, prelamanje linija će biti onemogućeno. Ako postoje dugi redovi, pojavit će se horizontalna traka za pomicanje.
  • title (string) – naslov za kod. Može biti korisno u kombinaciji s opcijom kolapsa.

Primjeri korištenja gornjih parametara:

Ova linija nije istaknuta. Ova linija je istaknuta. Ova linija je istaknuta. Ova linija nije istaknuta. Ovo je kratki isječak koda sa ispunom brojeva linija sa nulama do 4 znaka. //U ovom primjeru, prelamanje linija je onemogućeno. Da biste pročitali tekst u cijelosti, morat ćete koristiti traku za pomicanje. Osim toga, ovaj primjer onemogućuje numerisanje redova i skriva traku sa alatkama.

A ovo je veći dio koda. Ovdje je odabran PHP i označen red broj 12.

Primjer koda WordPress.com

Primjer koda WordPress.com

Ova linija je istaknuta. Vrlo-jako-jako-jako-jako-jako-jako-jako-jako-jako-jako-jako-jako-jako-jako-jako-veoma duga linija.
Ovo je primjer pametnih kartica.
wordpress.com

Hvala
Za implementaciju ove funkcije koristi se projekat SyntaxHighlighter (autor Alex Gorbatchev). Korisnici mogu postaviti odgovarajuće

Pozdrav, prijatelji. Danas ćemo shvatiti kako učiniti da bilo koji PHP kod radi u WordPress widgetima, člancima i stranicama. Po defaultu, takva funkcija nije dostupna u ovom CMS-u, a maksimum na koji korisnik može računati je uvođenje HTML koda.

Zašto PHP kod ne radi po defaultu

Čini se zašto programeri nisu nagradili tako popularan i zgodan motor korisnim funkcijama za automatsko izvršavanje PHP koda. Prvo sam razmišljao o tome, ali sam došao do zaključka da se takva politika provodi sa sigurnosne pozicije, jer nestručno korištenje PHP-a u widgetima ili unutar zapisima može dovesti do nepopravljivih posljedica – nešto će se pokvariti u bazi podataka i cela stranica će grcati.

Stoga je rad sa PHP-om na milosti programera ili ljudi koji su više ili manje napredni po ovom pitanju - sve skripte se izvršavaju direktno u fajlovima.

Za javne sajtove (gde postoji više autora), izvršavanje PHP-a u telu članka povećava rizik od namerne sabotaže, jer svaki autor može da dobije potpun pristup sajtu kroz prozor za uređivanje članka.

Prema stepenu opasnosti, cijelu ovu situaciju podijelio bih na 3 nivoa:

  1. Teško je ostaviti sve kako su programeri namjeravali - teško je oštetiti stranicu sigurno, slučajno ili namjerno.
  2. Dozvoli izvršavanje PHP-a u widgetima - srednji nivo ozbiljnosti, samo administrator sajta ima pristup.
  3. Korišćenje koda svuda je opasno, jer svako kome je dozvoljeno da uređuje članke i stranice (moderatori, autori) može upravljati sajtom

Čemu služi PHP u Widgetima?

Pitanje je individualno, jer se bilo šta može implementirati ovim programskim jezikom. Lično, bio sam potaknut da napišem ovaj post narudžbom klijenta čiju web stranicu trenutno pravim. Na njemu je bilo potrebno prikazati u bočnoj traci u posebnom widgetu listu vijesti iz jednog naslova - "Vijesti". Ne postoji takva opcija u standardnim WordPress widgetima.

Pitanje je bilo između pronalaženja dodatka sa odgovarajućim mogućnostima ili upotrebe jednostavnog PHP koda. Skripta za takav zadatak je zaista mala i nisam želio da učitavam stranicu dodatnim dodatkom koji se nigdje drugdje neće koristiti.

Uopšteno govoreći, dozvoljavajući izvršavanje PHP-a, možemo riješiti 2 problema:

  • Zamijenite dio dodataka stranice sa skriptama i na taj način smanjite opterećenje hostinga;
  • Implementirajte funkcije za koje dodaci još ne postoje.

U prvoj fazi govorit ću o widgetima, a zatim, u posebnom bloku, o prikazivanju koda u sadržaju.

Dodaci za PHP u Widgetima

Prednost dodataka: Prilikom promjene WordPress teme, rad funkcija dodatih šablonu se ne prekida, sve nastavlja raditi bez potrebe za intervencijom webmastera. Kuke koje se dodaju u šablon prilikom promjene teme morat će se ručno prenijeti u novu.

U mom gore navedenom primjeru radim web stranicu za klijenta i ako on želi sam promijeniti dizajn, postavke koje su napravljene preko functions.php fajlova i drugih će nestati, tako da ga maksimalno olakšavam za da upravlja sajtom, oslanjajući se na dodatke (posebno u svojoj niši promet je mali i opterećenje neće biti puno).

PHP Code Widget

Koristim ovaj dodatak u svom radu već duže vrijeme, dodaje widget na listu dostupnih widgeta, sličan običnom tekstualnom, koji osim teksta i HTML-a može obraditi samo PHP.

PHP Code Widget je prisutan u zvaničnom WordPress spremištu, lako ga je pronaći po imenu. Kako instalirati takve dodatke.

Nisu potrebna nikakva podešavanja, widget će se pojaviti na listi odmah nakon instaliranja i aktivacije dodatka. Prevucite "PHP kod" na bočnu traku i tamo dodajte bilo koju skriptu.

PHP u WordPress widgetu bez dodatka

U ovom slučaju, potrebna nam je kuka koja će zamijeniti standardna funkcija, koji omogućava rad tekstualnog WordPress widgeta, funkcije koja omogućava obradu PHP-a.

Ova kuka se dodaje u datoteku functions.php trenutne teme (na samom kraju prije završne zagrade?>). Nakon toga se nove opcije widgeta, kao u slučaju dodatka, ne pojavljuju, PHP kodovi počinju raditi u standardnom tekstu.

Gotov kod:

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

Prvi red je filter koji zamjenjuje standardnu ​​funkciju tekstualnog widgeta novom, text_html_php_widget, pri svakom pozivu, a zatim slijedi opis najnovije funkcije.

Zašto PHP kod u WordPress člancima i objavama

Unutar postova, izvršni PHP kod je potreban mnogo rjeđe nego u widgetima, pa sam u prvom dijelu članka posebno razmatrao bočnu traku kako biste izbjegli nepotrebno uključivanje potencijalno opasnih funkcija.

Ali čak iu objavama postoji potreba za korištenjem skripti. Najčešći primjer je izlaz sitemapa bez dodatka. Istina, možete koristiti drugu tehniku ​​za mapu - napraviti poseban predložak stranice (ovo je zasebna tema).

Jednom mi je trebao PHP izlaz za sljedeću svrhu:

Napravio sam video stranicu. Epizode serije su se prikazivale u playlistama po sezonama i bilo je potrebno prikazati listu epizoda ispod svake playliste sezone sa vezom do vaše stranice. Izgleda kao mapa sajta, samo što je komplikovanije - zaključak je morao da se izvede po listama pojedinačnih naslova. Bilo je moguće ručno napisati svaki link sa HTML kodom, ali postoji nekoliko stotina serija i procedura je dosadna. Štaviše, kada se pojavi nova serija, link na nju bi se morao dodati ručno - nezgodno. Zato sam odlučio da koristim PHP funkcije za implementaciju.

Dodatak za izvršavanje PHP-a u Exec-PHP sadržaju

Unatoč činjenici da ovaj dodatak nije ažuriran 7 godina, radi odličan posao. I odabrao sam ga s razlogom - ne koristi nikakve kratke kodove, kao kod konkurenata, ali vam omogućava umetanje u postove wordpress kod u svom najčistijem obliku, od .

Exec-PHP dodatak se nalazi u spremištu i instalira se preko menija na administrativnoj ploči motora.

Od postavki postoji samo jedno - dozvola / zabrana izvršavanja koda u tekstualnom widgetu, nema mogućnosti da onemogućite rad u objavama i na stranicama, ako ga trebate ukloniti - deaktivirajte dodatak.

Da biste umetnuli PHP kod u članak, on mora biti prebačen u HTML mod (kartica "Tekst"). Vizualni način će vjerovatno pokvariti kod.

Izvršavanje PHP koda u WordPress člancima bez dodatka

Po analogiji sa widgetima, plugin možemo zamijeniti posebnom funkcijom koja omogućava izvršavanje PHP skripte u sadržaju. Nažalost, nisam mogao pronaći opciju u kojoj bi kod radio automatski, kao u slučaju dodatka, reagirajući na oznake. Potreban je kratki kod. Moje poznavanje PHP-a nije bilo dovoljno za samostalno pisanje željenu funkciju, za simu donosim kako je. Rad sa kratkim kodom ima značajan nedostatak koji komplicira rad, o čemu ću govoriti u nastavku.

Kako raditi sa funkcijom u nastavku

  1. Zalijepite ga u datoteku functions.php teme;
  2. Na pravo mjesto u članku ubacujemo konstrukciju - izvršni kod bez

Funkcija:

/* Pokreni php u WordPress člancima i stranicama: kod */ function start_php($matches)( eval("ob_start();".$matches."$inline_execute_output = ob_get_contents();ob_end_clean();"); return $inline_execute_output ; ) funkcija inline_php($content)( $content = preg_replace_callback("/\((.|\n)*?)\[\/startphp\]/", "start_php", $content); $content = preg_replace( "/\((.|\n)*?)\[\/startphp\]/", "$1", $content); vrati $content; ) add_filter("the_content", "inline_php");

Mana

Ako postoji HTML umetanje ili tekst unutar umetnutog PHP koda, onda to neće raditi. Bilo koji tekst ili oznake morat će se umetnuti pomoću komande echo, što nije uvijek zgodno. Odnosno, kod mora biti čisto PHP-shny 100 ispravnog formata.

U redu

Echo "Ovo će raditi";

Pogrešno

Echo "Ova linija je tačna"; To neće raditi

U Exec-PHP dodatku nema takvih problema - i tekst i HTML će biti izvršeni, ali svi elementi PHP koda moraju biti uokvireni u odgovarajuće oznake.

Za mnoge webmastere, tema opisana u ovom članku otvara beskrajne mogućnosti za kreativnost - možete implementirati ono što prije niste mogli, kao i riješiti se puno dodataka, zamjenjujući ih različitim filterima, funkcijama i kukicama.



Učitavanje...
Top