Uporabni vstavki (delčki) kode za WordPress. Koda PHP v WordPressu – najboljše prakse Povezava skriptov in stilov v WordPressu brez konfliktov

Da bi zagotovili, da je koda WordPress povsod zasnovana v enakem slogu in je lahko berljiva v jedru, vtičnikih in temah, je priporočljivo upoštevati standarde kodiranja, ki so jih sprejeli razvijalci WordPressa. Ti standardi so zelo podobni standardu PEAR, vendar obstajajo pomembne razlike. Priporočam, da se z njimi seznanite in jih po možnosti upoštevate pri ustvarjanju vtičnikov ali tem.

Poleg standardov za pisanje same kode PHP obstajajo tudi standardi za dokumentiranje kode - to so komentarji na funkcije in kljuke: Standardi dokumentacije PHP (angleščina)

Enojni in dvojni narekovaji

Če v nizu ni spremenljivk, uporabite enojne narekovaje, sicer dvojne narekovaje. Narekovajev v nizu ni treba ubežati, in če so prisotni, je priporočljivo, da jih zamenjate:

Echo "Ime povezave"; echo "$linkname";

Druga vrstica v tem primeru ne počisti izhodnih spremenljivk, kar je treba storiti iz varnostnih razlogov. Zato je treba za takšen zapis spremenljivke počistiti vnaprej. Na splošno se lahko takšno snemanje šteje za nesprejemljivo! Oglejte si razdelek vadnice o varnem izpisu.

Vdolbine

Zamik mora vedno prikazati logično strukturo kode. Uporabljajte tabulatorje (tipka Tab) namesto presledkov – to daje večjo prilagodljivost. Presledke uporabite, ko morate nekaj poravnati znotraj vrstice.

Pravilo: tabulatorje je treba uporabiti na začetku vrstice za zamik, presledke pa lahko uporabite na sredini vrstice za poravnavo.

If (pogoj) ( $foo = "somevalue"; $foo2 = "somevalue2"; $foo_bar = "somevalue3"; $foo5 = "somevalue4"; )

In tako izgleda koda, če prikažete nevidne tabulatorke in presledke:

If (pogoj) ( ---$foo.....= "somevalue"; ---$foo2....= "somevalue2"; ---$foo_bar.= "somevalue3"; ---$foo5 ....= "nekatera vrednost4"; )

Pri asociativnih nizih se morajo vrednosti začeti v novi vrstici. Pri navajanju elementov matrike je priporočljivo postaviti "zadnjo" vejico - tako je bolj priročno dodajati nove elemente ...

$my_array = array(---"foo"..=> "somevalue", ---"foo2"..=> "somevalue2", ---"foo3"..=> "somevalue3", -- - "foo34".=> "nekatera vrednost3",);

Slog zavitih oklepajev

Zavite oklepaje je treba uporabiti za vse bloke v slogu, kot je prikazano spodaj:

Če (pogoj) ( dejanje1(); dejanje2(); ) elseif (pogoj2 && pogoj3) ( dejanje3(); dejanje4(); ) else (privzeto dejanje(); )

Če obstaja dolg blok, ga je treba razdeliti na dva ali več kratkih blokov ali funkcij, če je to mogoče. Če je tako dolg blok potreben, na koncu dodajte kratek komentar, da bo jasno, kaj točno zapira oklepaj. Ta pristop je logično uporabiti za blok s 35 ali več vrsticami.

Vsako kodo, ki ni intuitivna, je treba komentirati.

Vedno uporabite zavite oklepaje, tudi če niso potrebni.

If (pogoj) ( action0(); ) if (pogoj) ( action1(); ) elseif (pogoj2) ( action2a(); action2b(); ) foreach ($items as $item) ( process_item($item); )

Upoštevajte, da zahteva po uporabi zavitih oklepajev vedno pomeni, da so konstrukti v slogu ene vrstice prepovedani.

$var = "dangerous""; // neobdelani podatki, ki se lahko izognejo $id = some_foo_number(); // podatki se pričakujejo kot številka, vendar nismo prepričani $wpdb->query($wpdb-> pripravi( "UPDATE $wpdb->posts SET post_title = %s WHERE ID = %d", $var, $id));

%s se uporablja za nize in %d za cela števila. Upoštevajte, da niso "v narekovajih"! $wpdb->prepare() sam uide nizom in po potrebi doda narekovaje. Prednost priprave() je v tem, da se vam ni treba spomniti ročne uporabe esc_sql() in tudi v tem, da je poizvedbeni niz z ogradami bolj vizualen, kot če bi uporabljal spremenljivke, zavite v esc_sql().

Poizvedbe po bazi podatkov

Poskusite ne pisati neposrednih poizvedb v bazo podatkov. Če obstaja ustrezna funkcija in jih je v WP veliko, ki lahko pridobi potrebne podatke, jo uporabite.

Uporaba funkcij namesto poizvedb pomaga ohraniti prihodnjo združljivost kode. Poleg tega številne funkcije delujejo s predpomnilnikom, kar lahko znatno pospeši kodo.

Imena razredov, funkcij, datotek, konstant, spremenljivk

Imena funkcij, spremenljivk, kavljev

V spremenljivkah, kavljih in imenih funkcij uporabljajte male črke a–z in nikoli CamelCase. Posamezne besede ločite s podčrtajem _. Ne krajšajte imen spremenljivk, razen če je to potrebno; naj bo koda nedvoumna in samodokumentirana.

Funkcija some_name($some_variable) ( [...] )

Imena razredov

Uporabiti morate besede z velikimi črkami, ločenimi s podčrtaji. Morebitne okrajšave (akronimi, okrajšave) morajo biti VELIKE TISKANE ČISKE.

Razred Walker_Category razširja razred Walker ( [...] ) WP_HTTP ( [...] )

Konstante morajo biti besede z VELIKimi ČRKAMI, ločene s podčrtaji:

Define("DOING_AJAX", true);

Imena datotek

Biti mora jasna in prav tako vsebovati samo male črke, besede pa morajo biti ločene z vezajem - .

Moje-ime-vtičnika.php

Imena datotek razredov

Mora temeljiti na imenu razreda s predpono class- , podčrtaji v imenu razreda se nadomestijo z vezajem, na primer WP_Error postane:

Class-wp-error.php

Ta standard za poimenovanje datotek velja za vse obstoječe in nove datoteke razredov. Vendar pa obstajajo datoteke izjem: class.wp-dependencies.php, class.wp-scripts.php, class.wp-styles.php. Te datoteke imajo predpono class. , pika za besedo razred namesto vezaja.

Jasne vrednosti spremenljivk v funkcijskih parametrih

Logične vrednosti imajo prednost pred vrednostmi nizov. Tisti. Namesto true/false pri klicanju funkcij je bolje uporabiti nekakšen niz, ki pojasnjuje vrednost parametra.

Slaba koda:

Funkcija eat($what, $slowly = true) ( ​​​​... ) eat("gobe"); jesti ("gobe", res); // kaj pomeni res? jesti ("dogfood", false); // kaj pomeni false, nasprotno od true?

Ker PHP ne podpira imenovanih argumentov, so vrednosti zastavic nesmiselne in vsakič, ko naletimo na klic funkcije, kot v zgornjih primerih, moramo pogledati dokumentacijo za funkcijo. Koda je lahko bolj berljiva z uporabo opisnih vrednosti nizov namesto logičnih vrednosti.

Dobra koda:

Funkcija eat($what, $speed = "slowly") ( ... ) eat("mushrooms"); jesti ("gobe", "počasi"); jesti ("dogfood", "hitro");

Ko potrebujete več funkcijskih parametrov, uporabite matriko $args. Še boljši je!

Zelo dobra koda:

Funkcija eat($what, $args) ( ... ) eat("rezanci", array("speed" => "moderate"));

Interpolacija za dinamična imena kljuk

Za lažjo berljivost in odkrivanje je treba kljuke s spremenljivkami v njihovih imenih interpolirati (obesediti v zavite oklepaje ( in )) in ne smejo biti povezane:

Oklepaji so potrebni, da lahko PHP pravilno razčleni vrste podatkov spremenljivk v interpoliranem nizu.

// pravilno do_action("($new_status)_($post->post_type)", $post->ID, $post); // nepravilno do_action($new_status "_". $post->post_type, $post->ID, $post);

Kjer je mogoče, morajo biti tudi dinamične vrednosti v imenih oznak čim krajše in natančne. $user_id je veliko bolj jasen kot, recimo, $this->id.

Ternarni operater

Ternarni operatorji so dobri, vendar priporočajo, da vedno preizkusite resnično izjavo in ne napačno izjavo. V nasprotnem primeru je preprosto zavajajoč zaradi dvojnega negativa. Izjema je uporaba! prazni(), ker ga je včasih preprosto težko zapisati drugače.

Kako preveriti:

// (če je pogoj resničen = resničen)? (potem naredimo to) : (sicer to); $music_type = ("jazz" == $music) ? "kul" : "bla"; // (če vrednost ni prazna - ! prazna) ? (potem naredimo to) : (sicer to);

Kako ne napisati:

// (če pogoj ni izpolnjen!= res) ? (potem naredimo to) : (sicer to); $music_type = ("jazz" != $music) ? "blah" : "kul";

Pogoji mojstra Yode

Pri izvajanju logičnih primerjav vedno postavite konstante ali literale na levo in spremenljivko na desno.

Če (true == $the_force) ( $victorious = you_will($be); )

Če v zgornjem primeru izpustimo drugi znak = (resda se to zgodi tudi najbolj izkušenim med nami), dobimo napako PHP in jo takoj vidimo, ker koda ne bo delovala. Toda če bi bila konstrukcija nasprotna - $the_force = true , potem bi bil pogoj vedno izpolnjen in ne bi videli nobene napake in bi lahko spregledali tako resno napako, ki jo je včasih tudi težko ujeti!

Samo navaditi se je treba na to "na glavo" črkovanje.

To velja tudi za == , != , === in !== . "Yodini pogoji" za< , > , <= или >= veliko težje brati in je bolje, da jih tukaj ne uporabljate.

Pametna koda

Skratka, v ospredju naj bo berljivost kode, pomembnejša je od kratkosti ali kakšnih ne očitnih, a priročnih okrajšav.

Isset($var) || $var = neka_funkcija(); // ali! isset($var) && $var = some_function();

Da - to je kul posnetek, jasno je, da ga je naredil izkušen programer. Toda vsak drug razvijalec in pogosto celo avtor, da bi razumel tak zapis, se mora malo poglobiti in porabiti dodatne sekunde ali minute. To ni očiten ali jasen zapis in se ga je treba izogibati, bolje pa je, da ga napišete dlje, a bolj jasno:

If (! isset($var)) ( $var = some_function(); )

Operator za preprečevanje napak @

PHP podpira en operator za nadzor napak: znak @. Če je pred katerim koli izrazom v kodi PHP, bodo vsa sporočila o napakah, ki jih ustvari ta izraz, prezrta.

Medtem ko ta operator obstaja v jedru, se pogosto uporablja, ker je nekdo prelen, da bi pravilno obdelal spremenljivko. Njegova uporaba je močno Ni priporočljivo ker celo dokumentacija PHP navaja:

Pozor: Danes operater "@" onemogoči izpis sporočil tudi o kritičnih napakah, ki prekinejo skript. Med drugim to pomeni, da če ste uporabili "@" za zatiranje napak, ki se pojavijo pri izvajanju funkcije, če ta ni na voljo ali je napisana nepravilno, bo nadaljnje izvajanje skripta ustavljeno brez kakršnega koli obvestila.

Nekega dne ste se odločili ustvariti svojo spletno stran ali blog, za sistem upravljanja pa ste izbrali WordPress... Sčasoma je vaša stran postajala vse bolj berljiva in takrat ste ugotovili, da morate za še večjo priljubljenost dodati malo funkcionalnosti na spletno mesto ali preprosto avtomatizirajte nekatera ta dejanja.

Greste v »skladišče« vtičnikov za wordpress in ugotovite, da vtičnika, ki ga potrebujete, ni tam. Kaj storiti? Kaj naj naredim? Če ste vsaj malo seznanjeni z osnovami programiranja v PHP, postavitvijo, potem vam ne bo težko Sami napišite vtičnik za WordPress.

Zdaj pa pojdimo v "kuhinjo", da pripravimo naš vtičnik.

P.s. Če nimate znanja o php in postavitvi ... ne skrbite, prosite nekoga, da vam napiše potrebno funkcionalnost :)

Preden začnete pisati vtičnik, si morate ogledati dokumentacijo WordPressa, ki opisuje osnovna načela pisanja vtičnikov in nekaj primerov kode.

Ne bom podvajal teh informacij, ampak bom šel naravnost k pisanju kode.

Napišimo preprost vtičnik, ki vam bo omogočil shranjevanje in prikaz mnenj o vašem spletnem mestu. Seveda taki vtičniki že obstajajo, vendar bo ta kot primer primeren.

Prva stvar, ki jo bomo naredili, je, da bomo izmislili edinstveno ime za naš vtičnik - “ AdvUserReviews«.

Nato bomo ustvarili nov imenik »advuserreviews« v imeniku vašega spletnega mesta »/wp-content/plugins/«. In v njej bomo ustvarili datoteko “advuserreviews.php”. To bo glavna datoteka, ki bo odgovorna za splošno inicializacijo. (Za datoteke je priporočljivo uporabiti kodiranje UTF-8).

Na samem začetku datoteke morate navesti osnovne podatke o vtičniku

Zdaj, če greste na nadzorno ploščo, lahko vidite, da je sistem našel nov vtičnik in ponudil njegovo aktivacijo. Vendar je za to še prezgodaj.

Naš novi vtičnik bomo napisali v OOP slogu in vsa obdelava podatkov bo v eni datoteki. Ustvarimo glavno okostje datoteke.

// Ustavi neposredni klic if(preg_match("#" . basename(__FILE__) . "#", $_SERVER["PHP_SELF"])) ( die("Ne smete neposredno klicati te strani."); ) če (!class_exists("AdvUserReviews")) ( class AdvUserReviews ( // Shranjevanje notranjih podatkov public $data = array(); // Konstruktor objekta // Funkcija inicializacije glavnih spremenljivk AdvUserReviews() ( ) ) ) global $rprice; $rprice = new AdvUserReviews();

Zdaj pa dodajmo naslednjo kodo v konstruktor objekta:

Funkcija AdvUserReviews() ( global $wpdb; // Razglasi inicializacijsko konstanto našega vtičnika DEFINE("AdvUserReviews", true); // Ime datoteke našega vtičnika $this->plugin_name = plugin_basename(__FILE__); // Naslov URL za naš vtičnik $ this->plugin_url = trailingslashit(WP_PLUGIN_URL."/".dirname(plugin_basename(__FILE__))); // Tabela za shranjevanje naših mnenj // spremenljivka $wpdb mora biti deklarirana globalno $this->tbl_adv_reviews = $wpdb ->predpona . "adv_reviews"; // Funkcija, ki se izvede, ko je vtičnik aktiviran register_activation_hook($this->plugin_name, array(&$this, "activate")); // Funkcija, ki se izvede, ko je vtičnik deaktiviran register_deactivation_hook($this->plugin_name, array (&$this, "deactivate")); // Funkcija, ki se izvede pri odstranitvi vtičnika register_uninstall_hook($this->plugin_name, array(&$this, "uninstall")); )

V objektnem konstruktorju uporabljamo 3 "kavlje" ali "kavlje" (kaj so?): register_activation_hook, register_deactivation_hook in register_uninstall_hook- to so funkcije, ki se izvajajo, ko je vtičnik aktiviran, deaktiviran in izbrisan.

Zdaj pa neposredno implementirajo te funkcije.

/** * Aktiviraj vtičnik */ function activate() ( global $wpdb; require_once(ABSPATH . "wp-admin/upgrade-functions.php"); $table = $this->tbl_adv_reviews; // Določi različico mysql if ( version_compare(mysql_get_server_info(), "4.1.0", ">=")) ( if (! empty($wpdb->charset)) $charset_collate = "PRIVZETI NIZ ZNAKOV $wpdb->charset"; if (! empty( $wpdb->collate)) $charset_collate .= "COLLATE $wpdb->collate"; ) // Struktura naše tabele za ocene $sql_table_adv_reviews = "USTVARI TABELO `".$wpdb->prefix."adv_reviews` (`ID` INT(10) UNSIGNED NULL AUTO_INCREMENT, `review_title` VARCHAR(255) NOT NULL DEFAULT "0", `review_text` TEXT NOT NULL, `review_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `review_user_name` VARCHAR(200) NULL , `review_user_email` VARCHAR(200) NULL, PRIMARY KEY (`ID`))".$charset_collate.";"; // Preverite obstoj tabele, če ($wpdb->get_var("prikaži tabele kot "".$table .""" ) != $table) ( dbDelta($sql_table_adv_reviews); ) ) /** * Deaktiviraj vtičnik */ funkcija deactivate() ( return true; ) /** * Odstranjevanje vtičnika */ funkcija uninstall() ( globalno $wpdb; $wpdb->query("SPUSTI TABELO, ČE OBSTAJA ($wpdb->prefix)adv_reviews"); )

Spremenljivka $wpdb Odgovoren za poizvedbe v bazi podatkov. funkcija dbDelta razčleni trenutno strukturo tabele, jo primerja z želeno strukturo tabele in po potrebi doda ali spremeni tabelo.

V skladu s tem, ko je vtičnik aktiviran, se ustvari struktura tabele za shranjevanje ocen. Ko je vtičnik deaktiviran, se ne zgodi nobeno dejanje, ko pa ga izbrišemo, izbrišemo našo tabelo. Dejanja je mogoče podrobneje razumeti iz izvorne kode.

Osnovna struktura novega vtičnika je pripravljena. Zdaj moramo začeti pisati funkcionalni del. Če želite to narediti, moramo v konstruktor razreda dodati naslednje vrstice kode:

// Če smo v admin. vmesnik if (is_admin()) ( // Dodajte sloge in skripte add_action("wp_print_scripts", array(&$this, "admin_load_scripts")); add_action("wp_print_styles", array(&$this, "admin_load_styles")); // Dodajte meni za vtičnik add_action("admin_menu", array(&$this, "admin_generate_menu")); ) else ( // Dodajte sloge in 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")); )

Oglejmo si ta del kode podrobneje. Začnimo z upravniško ploščo.
funkcija " je_admin» preveri, v kakšnem načinu trenutno delamo – na spletni strani ali v nadzorni plošči.
Nato se za funkcije uporabi več kavljev:

  • wp_print_scripts- Dodajte potrebne datoteke javascript
  • wp_print_styles- Dodajte potrebne sloge
  • admin_menu- Dodajanje novega menija na nadzorno ploščo

Vsaka kljuka ustreza implementirani metodi v našem razredu. V katerem se izvajajo potrebne operacije.
Oglejmo si kodo za povezovanje stilov in skriptov

/** * Nalaganje potrebnih skriptov za stran za upravljanje * v upravni plošči */ funkcija admin_load_scripts() ( // Registriraj 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"); // Dodajanje skriptov na stran wp_enqueue_script("advReviewsAdminJs"); wp_enqueue_script("jquery"); ) /** * Nalaganje potrebnih slogov za nadzorno stran * v upravni plošči */ funkcija admin_load_styles() ( // Registriraj sloge wp_register_style("advReviewsAdminCss", $this->plugin_url . "css/admin-style.css") ; // Dodaj sloge wp_enqueue_style( "advReviewsAdminCss"); )

Tukaj se uporabljajo naslednje funkcije.

Vsako dejanje je odvisno od podanega parametra »dejanje« oziroma »uredi« - urejanje ocene, »pošlji« - shranjevanje urejene ocene in »izbriši« - brisanje ocene.

Izmenjava podatkov s stranmi za prikaz poteka prek lastnosti objekta »podatki«. Izvorna koda teh strani bo objavljena v arhivu s tem modulom na koncu članka. Ne bom jih vstavljal sem, ker je tema že kar obsežna.

Tukaj zaključimo z skrbniško ploščo in nadaljujemo s prikazovanjem in dodajanjem mnenj uporabnikov.

Da WordPressu sporočimo, kdaj naj pokliče naš vtičnik, moramo registrirati »shortcode«, kar je bilo storjeno v konstruktorju našega razreda. Preberite več o tem.

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

Zdaj lahko naslednjo kodo postavite na katero koli stran spletnega mesta in prisilila bo, da se izvede funkcija, ki smo jo določili (podana kot drugi parameter). Spodaj je izvorna koda za to funkcijo.

/** * Seznam pregledov na spletnem mestu */ javna funkcija site_show_reviews($atts, $content=null) ( globalno $wpdb; if (isset($_POST["action"]) && $_POST["action"] = = " add-review") ( $this->add_user_review(); ) // Izberite vse ocene iz zbirke podatkov $this->data["reviews"] = $wpdb->get_results("SELECT * FROM `" . $ this- >tbl_adv_reviews. "`", ARRAY_A); ## Omogoči medpomnjenje izhoda ob_start (); include_once("site_reviews.php"); ## Prejmi podatke $output = ob_get_contents (); ## Onemogoči medpomnjenje ob_end_clean (); return $output ; ) zasebna 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 novo oceno na mesto $wpdb->insert( $this-> tbl_adv_reviews, $inputData); )

Načeloma tukaj ni nič zapletenega - za izbiro podatkov se izvede poizvedba SQL, če pa je parameter »dejanje« posredovan, se najprej doda nov pregled. Vendar je vredno posvetiti pozornost izhodnemu medpomnjenju. Potreben je za pridobitev podatkov o vstavljeni strani.

To je vse. Zdaj lahko vidimo, kaj imamo. A prenesite vtičnik in izvorne kode lahko tukaj.

Seveda je to samo primer ustvarjanja vtičnika, vendar bo deloval tudi kot preprosta gostujoča aplikacija, če jo nekoliko spremenite, na primer dodate zaščito pred roboti in izpis stran za stranjo. Srečno kodiranje :)

Obrazec na spletni strani:

Nadzorna plošča vtičnika:

Pregled urejanja:

Morda vas bo zanimalo tudi:


Vse začetnike spletne skrbnike je delo s kodo prestrašilo in odvrnilo – bojijo se, da bi poškodovali svoje spletno mesto z dodajanjem HTML ali PHP ali ga vstavili na napačno mesto. Seveda, če postavite kodo na napačno mesto v WordPressu, lahko vse uničite. Vendar pa je ta CMS tako dobro prilagojen začetnikom, da bo težko narediti napako.

V tem članku si bomo ogledali, kako varno vstaviti kodo HTML ali PHP v WordPress. Toda najprej, zakaj je to lahko koristno.

Zakaj vdelati kodo v WordPress

Med življenjsko dobo spletnega mesta bo spletni skrbnik morda moral namestiti kodo na WordPress, ki jo je treba izvajati na straneh. To je lahko potrebno iz različnih razlogov: na primer namestitev števca prometa, kakšnega nenavadnega pripomočka ali dodajanje osebnosti predlogi.

WordPress ponuja dva načina za namestitev kode. Poglejmo jih.

Namestitev s pripomočkom Text

Če želite namestiti kodo na WordPress s pomočjo gradnika, morate iti v menijsko točko v konzoli »Videz« in podtočko »Gradniki«. Med njimi poiščite »Besedilo« in ga z miško premaknite na želeno območje.

Gradnik se bo odprl in lahko izpolnite njegov naslov ter vstavite zahtevano kodo v ustrezno polje. Po kliku na gumb »Shrani« bo operacija izvedena na straneh spletnega mesta.

Ta način namestitve kode na WordPress je primeren za izvajanje operacij v HTML, PHP in celo JavaScript. Ta metoda se pogosto uporablja, ker je enostavna in dobro deluje za začetnike.

Namestitev v datoteko

Namestitev kode na WordPress z uporabo urejanja datotek ni priporočljiva za začetnike, vendar jo bodo morali prej ali slej obvladati vsi. Ta metoda je priročna, ker lahko HTML ali PHP postavite v kateri koli del, ne samo v območje pripomočkov, kot je opisano v prvi metodi. Pomanjkljivost tega načina namestitve je, da je lahko nevaren in, če pride do napak, lahko povzroči, da spletno mesto ne deluje. Zato morate pred uporabo te metode narediti varnostno kopijo datotek in baze podatkov.

Če želite kodo namestiti neposredno v datoteko na WordPressu, morate vedeti, za katero področje spletnega mesta je odgovorna določena datoteka. Tukaj ni mogoče dati natančnih priporočil, saj v različnih predlogah različne datoteke opravljajo določene funkcije. Vendar pa se lahko naučite nekaj o tematskih datotekah. Poleg namestitve kode v datoteko predloge na WordPressu je to mogoče storiti tudi v datotekah samega CMS.

Berljivost kode je zelo občutljiva tema in ji je treba posvetiti ustrezno pozornost. V tem članku se boste naučili 16 tehnik, ki vam bodo pomagale napredovati pri tej temi.

1. Komentarji in dokumentacija

IDE postajajo vse bolj priljubljeni v svetu razvijalcev, ker ... zagotavljajo priročna orodja za komentiranje in dokumentiranje kode.

Tukaj je primer:

Tu je še en primer klicanja lastne metode:

V tem primeru slog komentiranja temelji na PHPDoc, IDE, ki ga uporabljam, pa je Aptana.

2. Alineje

Predvidevam, da že poznate pomen zamika v vaši kodi. Na splošno obstaja več stilov oblikovanja kode.

Funkcija foo() ( if ($maybe) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Funkcija foo() ( if ($maybe) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Funkcija foo() ( if ($maybe) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Osebno najpogosteje uporabljam stil #2, včasih pa preidem na #1. A vse to je seveda stvar okusa. Najverjetneje ni "najboljšega" stila, ki bi ustrezal vsem. Ta pravila se morajo najprej držati tisti, ki delajo v timu ali sodelujejo pri pisanju odprtokodnih projektov.

Obstajajo tudi slogi, ki združujejo določene značilnosti. Na primer, standardi pisanja kode PEAR, kjer zavit oklepaj "(" v pogojnih stavkih ostane v isti vrstici, vendar se premakne v funkcijah.

HRUŠKA stil:

Funkcija foo() ( // v novi vrstici if ($maybe) ( // v isti vrstici do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Upoštevati je treba tudi, da ta slog uporablja 4 presledke namesto zavihkov.

Izvedete lahko več o različnih slogih.

3. Izogibajte se nepotrebnim komentarjem

Da, koda za komentiranje je dobra; vendar ni treba pretiravati. Tukaj je primer:

// pridobi kodo države $country_code = get_country_code($_SERVER["REMOTE_ADDR"]); // če je država ZDA if ($country_code == "US") ( // prikaži obrazec echo form_input_state(); )

Če je delo kode očitno, potem najverjetneje ne bi smeli pisati nepotrebnih komentarjev.

Če jih nimate, jih lahko nekoliko skrajšate:

// prikaži obrazec, če je država ZDA $country_code = get_country_code($_SERVER["REMOTE_ADDR"]); if ($country_code == "US") ( echo form_input_state(); )

4. Združevanje kod

Najpogosteje nekatera opravila zahtevajo pisanje več vrstic kode. Zato je najbolje, da takšne naloge združimo v ločene bloke, ločene s presledki.

Tukaj je preprost primer:

// pridobi seznam forumov $forums = array(); $r = mysql_query("IZBERITE id, ime, opis IZ forumov"); medtem ko ($d = mysql_fetch_assoc($r)) ( $forums = $d; ) // naloži predlogo load_template("header"); load_template("forum_list",$forums); load_template("noga");

Če pred začetkom vsakega bloka dodate komentar, bo to še izboljšalo berljivost vaše kode.

5. Shema poimenovanja

Včasih celo v jeziku PHP najdete nedoslednosti pri poimenovanju funkcij. In tukaj je veliko primerov:

  • strpos() proti str_split()
  • imagetypes() proti image_type_to_extension()

Obstaja več priljubljenih stilov:

  • camelCase: naredi prvo črko vsake nove besede z veliko začetnico.
  • podčrtaji: Podčrtaj med besedami: mysql_real_escape_string().

Če mešate te tehnike, se lahko prej ali slej znajdete v neprijetni situaciji. Če delate na projektu, ki uporablja eno od teh tehnik, boste želeli slediti zgledu. To je lahko še vedno odvisno od programskega jezika. Na primer, večina razvijalcev Java uporablja CamelCase, medtem ko razvijalci PHP raje uporabljajo podčrtaje.

Toda tudi tukaj je bil hibrid. Nekateri razvijalci uporabljajo podčrtaje pri poimenovanju razredov in metod (zunaj razredov), v drugih primerih pa uporabljajo camelCase:

Razred Foo_Bar ( javna funkcija someDummyMethod() ( ) ) funkcija procedural_function_name() ( )

Še enkrat bom rekel, da najboljšega stila ni. Samo držati se je treba nečesa.

6. DRY princip

DRY (Don't Repeat Yourself) - ne ponavljajte se. Znan tudi kot DIE: Podvajanje je zlo.

Glavna naloga vsakega sistema, pa naj bo to spletna aplikacija ali kaj drugega, je avtomatizacija ponavljajočih se opravil. Tega načela je treba upoštevati vedno in povsod, še posebej, če ste razvijalec. Isti del kode se ne sme ponavljati znova in znova.

Večina spletnih aplikacij je na primer sestavljena iz ene ali več strani. Jasno je, da bodo te strani vsebovale enake elemente. Glava in noga sta najbolj osupljiva primera. Presenečeni bi bili, koliko ljudi še vedno podvaja te elemente na vsaki strani.

$this->load->view("vključuje/glava"); $this->load->view($main_content); $this->load->view("vključuje/noga");

7. Izogibajte se globokemu gnezdenju

Berljivost kode se močno zmanjša, če imate globoko gnezdenje.

Funkcija do_stuff() ( // ... if (is_writable($folder)) ( 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; ) )

Da bi popravili situacijo, morate ponovno razmisliti o delovanju kode in jo optimizirati:

Funkcija do_stuff() ( // ... if (!is_writable($folder)) ( 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. Omejitev dolžine linije

Vsi vedo, da postane proces branja veliko bolj prijeten, ko je besedilo razdeljeno na stolpce. To je glavni razlog, zakaj naši časopisi izgledajo takole:

Podobno tehniko lahko uporabimo za našo kodo:

// slab $my_email->set_from(" [e-pošta zaščitena]")->dodaj_v(" [e-pošta zaščitena]")->set_subject("Metode verižene")->set_body("Nekaj ​​dolgega sporočila")->send(); // dobro $my_email ->set_from(" [e-pošta zaščitena]") ->dodaj_v(" [e-pošta zaščitena]") ->set_subject("Metode Chained") ->set_body("Nekaj ​​dolgega sporočila") ->send(); // slaba $query = "IZBERI id, uporabniško ime, ime, priimek, status OD uporabnikov LEFT JOIN user_posts UPORABA (users.id, user_posts.user_id) WHERE post_id = "123""; // bad $query = "IZBERI id, uporabniško ime, ime, priimek, status FROM uporabnikov LEFT JOIN user_posts USING(users.id, user_posts.user_id) WHERE post_id = "123"";

Večina razvijalcev se drži omejitev 80 in 120 znakov.

9. Organiziranje datotek in map

Tehnično lahko vso kodo svoje aplikacije spraviš v eno datoteko :) Ampak kaj boš, ko boš moral nekaj spremeniti ali dodati.

Spomnim se svojih prvih projektov, v katere sem prilagal datoteke. Vendar je bila moja organizacija zelo slaba. Ustvaril sem mapo “inc”, v katero sem postavil več datotek: db.php in functions.php. Med pisanjem aplikacije je ta mapa postajala vedno večja in na koncu je bilo težko ugotoviti, kaj je kje.

Za rešitev tega problema je bolje uporabiti različne vrste okvirov ali se vsaj držati njihove strukture. Tako izgleda projekt na CodeIgniterju:

10. Imena spremenljivk

Na splošno morajo biti imena spremenljivk popolnoma smiselna - to je idealno. Izjema je lahko za začasne spremenljivke.

Oglejmo si nekaj primerov:

// $i za zanke for ($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 in $d za mysql $q = "IZBERI * IZ tabele"; $r = mysql_query($q); medtem ko ($d = mysql_fetch_assocr($r)) ( ) // $fp za delo z datotekami $fp = fopen("file.txt","w");

11 - Napišite ključne besede v SQL z velikimi črkami

Večina spletnih aplikacij deluje z bazami podatkov. Če sami pišete SQL poizvedbe, jih je treba tudi ustrezno oblikovati ... Tukaj ni nič zapletenega. Samo ključne besede napišite z velikimi tiskanimi črkami.

12. Ločite kodo in podatke

To je še en princip, ki vam bo pomagal napisati bolj razumljive programe. Vključuje pripravo podatkov na enem mestu (na primer modelov) in interakcijo z njimi na drugem.

Ko se je PHP začel razvijati, je bil bolj podoben sistemu za predloge. Projekti v tem jeziku so vsebovali mešano kodo HTML in PHP. Zdaj se je vse spremenilo in vsi bi morali preiti na naslednjo stopnjo pisanja aplikacij.

Zase lahko razvijete poseben slog ali pa uporabite najbolj priljubljena sredstva danes.

Priljubljena ogrodja PHP:

Sistemi predlog:

Priljubljen CMS

13. Posebna sintaksa za predloge

Če ne želite uporabljati sistema predlog, boste najverjetneje morali razviti svoj slog vdelave kode PHP v HTML.

In tukaj je primer:

Zdravo, uporabniško ime; ?>
|

Moja sporočilna deska

naslov; ?>

Forumi kot $forum): ?>

id, $forum->title) ?> (Niti->štetje(); ?> niti)

opis; ?>

Ta tehnika vam bo omogočila, da se izognete nepotrebnim oklepajem. Poleg tega se takšna koda dobro prilega kontekstu HTML.

14. Proceduralni in objektno usmerjeni pristopi

Objektno orientirano programiranje vam bo pomagalo ostati pri bolj ali manj jasni strukturi, vendar to ne pomeni, da bi morali odstopati od proceduralnih principov pisanja aplikacij.

Objekti so odlični za predstavljanje podatkov. primer:

Uporabnik razreda ( public $username; public $first_name; public $last_name; public $email; javna funkcija __construct() ( // ... ) javna funkcija create() ( // ... ) javna funkcija save() ( / / ... ) javna funkcija delete() ( // ... ) )

Postopkovne metode imajo svoje posebne prednosti.

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

15. Preberite odprtokodno kodo

Običajno odprtokodne projekte piše veliko število razvijalcev. S tega vidika vam lahko preučevanje pisne kode v podobnih projektih pomaga pridobiti izkušnje. Zato ne izgubljajte časa s tem.

16. Preoblikovanje

Refactoring je spreminjanje kode brez izgube funkcionalnosti. Uporablja se lahko tudi za izboljšanje berljivosti. Ni prostora za popravljanje napak ali dodajanje funkcionalnosti. Samo nekoliko spremenite strukturo kode.

Upam, da vam je bil ta članek v pomoč! Sem kaj izpustil? Delite svoje izkušnje!

Upam si domnevati, da so bili časi v vašem življenju, ko ste želeli nekaj dodati (popraviti) k temi svojega WP mesta ali k funkcionalnosti kakšnega vtičnika. Poleg tega razvijalci te funkcije niso vključili v standardne kontrole. In vaša duša ne priznava nobenih omejitev in zahteva domišljijo :) Kot razumete, obstaja izhod iz vsake situacije, v tem primeru bomo morali popraviti kodo vtičnika, teme ...

Glavna težava pri urejanju kode je, da se spremembe, ki jih naredite, žal ne shranijo dolgo in bodo najverjetneje preklicane med naslednjo posodobitvijo. Če je rešitev, ki jo vidite v tem, da bi se izognili posodobitvam, vas upam odvrniti od te nevarne neplemenite odločitve, saj posodobitve vsebujejo pomembne spremembe v smislu varnosti in popravkov napak, pogosto pa dodajajo tudi nove funkcije.

Zato je bolje uporabiti metode, ki bodo zdržale v našem dinamično spreminjajočem se svetu in vam hkrati prihranile dragoceni čas.

Pozor!

Na internetu lahko pogosto najdete nasvete, ki predlagajo spreminjanje datoteke functions.php- če obstaja kakšna možnost brez tega, je bolje, da se te datoteke ne dotikate. V spodnjih metodah boste videli način za izvedbo tega. In v vsakem primeru morate ustvariti podrejeno temo in se ne dotikati nadrejene.

Ko funkciji dodajate predpone, vedno uporabite kodo po meri v obliki: _predpona(na ime funkcije, ki se spreminja). To dejanje vas bo zaščitilo pred konflikti z drugimi funkcijami teme ali vtičnika.

Torej, kako dodate kodo na spletno mesto WP?

1) Vtičnik po meri

Tako lahko vstavite delčke kode, ki se med posodabljanjem ne bodo izbrisali, lahko pa jih tudi urejate, aktivirate v prihodnje ali obratno – po potrebi jih deaktivirate.

To je enostavno narediti: najprej morate ustvariti imenik za svoj vtičnik in ga ustrezno poimenovati, na primer moy-plugin (uporabite samo pomišljaje, ne poševnic).

Nato ustvarimo glavno datoteko vtičnika. Kot razumete, mora vključevati ime, opis in osnovne informacije ter kodo, ki bo pomagala zaščititi vtičnik pred vsiljivci. In to datoteko imenujemo, recimo moy-plugin.php. Pripona .php bo WP povedala, v katerem jeziku je bila datoteka ustvarjena.

Datoteko lahko ustvarite z zgoraj opisano metodo v katerem koli urejevalniku besedil, na primer NotePad, ki je že skrbno nameščen v operacijskem sistemu Windows (TextEdit na Macu). Bolje je, da ne uporabljate urejevalnika Microsoft Word, saj oblikuje besedilo in ga v tej situaciji absolutno ne potrebujemo.

Tukaj je torej koda za dodajanje:

In pod to kodo naredite spremembe, kot zahteva vaša ustvarjalna duša. Na koncu ni treba dodajati zaključnih oznak PHP. V tem primeru bodo ime, opis in URL prikazani na vaši skrbniški plošči. In seveda lahko zamenjate podatke »ClubWP« s svojimi podatki

Po tem preostane le še to, da zapakirate, kar ste ustvarili, v arhiv zip in pošljete na ftp vašega spletnega mesta. V prihodnosti lahko na ta način spremenite svoj vtičnik.

Na ta preprost način boste ustvarili preprost vtičnik za svoje potrebe.

2) Vtičnik Delčki kode

Če je zgoraj opisana metoda za vas težka ali pa ste zelo praktična oseba in ste navajeni hitrejšega doseganja rezultatov, je bil Code Snippets ustvarjen posebej za vas. Tako kot zgoraj opisana funkcija, vtičnik doda vašo kodo z možnostjo nadaljnjega urejanja brez uporabe vaše teme.

Po namestitvi vtičnika se bo na skrbniški plošči pojavilo novo okno »Izrezki«, v katerem lahko ustrezno dodate nove izrezke. Za katerega lahko vnesete kodo in informacije o njegovem namenu.

Tako imate možnost omogočiti ali onemogočiti kodo po meri v obliki vtičnikov. Zelo priročno in praktično, saj... Včasih lahko pride do konfliktov s temami in vtičniki, kar lahko zlahka razumete in onemogočite ustvarjeno kodo.

3) Urejanje Functions.php podrejene teme

Če uporaba vtičnikov ni primerna za vas in morate spremeniti neposredno temo svojega spletnega mesta, potem je ta metoda za vas. Naj vas spomnim, da lahko to storite samo z otroškimi temami.

Za uporabo te metode ponujam svojo predlogo functions.php otroška tema. Razpakirajte in uredite datoteko style.css(ime predloge in uvozni URL)

P.S. Poskusite storiti vse, kar je v vaši moči, da si poenostavite življenje v prihodnosti, vključno s svojim težkim delom odpravljanja hroščev in urejanja kode po meri, ko se pojavi potreba.