Noderīgi koda ievietojumi (fragmenti) WordPress. PHP kods programmā WordPress — paraugprakse Skriptu un stilu savienošana bez konfliktiem pakalpojumā WordPress

Lai nodrošinātu, ka WordPress kods visur ir veidots vienādā stilā un ir viegli lasāms kodolā, spraudņos un motīvos, ieteicams ievērot WordPress izstrādātāju pieņemtos kodēšanas standartus. Šie standarti ir ļoti līdzīgi PEAR standartam, taču ir būtiskas atšķirības. Iesaku ar tiem iepazīties un, ja iespējams, sekot tiem, veidojot spraudņus vai motīvus.

Papildus paša PHP koda rakstīšanas standartiem ir arī koda dokumentēšanas standarti - tie ir komentāri par funkcijām un āķiem: PHP dokumentācijas standarti (angļu valodā)

Vienpēdiņas un dubultpēdiņas

Ja virknē nav mainīgo, izmantojiet vienas pēdiņas, pretējā gadījumā dubultpēdiņas. Virknē nav jāatkāpjas no pēdiņām, un, ja tās ir, ieteicams tos mainīt:

Atbalss "Saites nosaukums"; atbalss "$linkname";

Šī piemēra otrajā rindā netiek notīrīti izvades mainīgie, kas ir jādara drošības apsvērumu dēļ. Tāpēc šādai rakstīšanai mainīgie ir iepriekš jādzēš. Vispār šādu ierakstu var uzskatīt par nepieņemamu! Skatiet apmācības sadaļu par drošu izvadi.

Atkāpes

Atkāpei vienmēr jāparāda koda loģiskā struktūra. Izmantojiet tabulēšanas taustiņus (tabulēšanas taustiņu), nevis atstarpes — tas nodrošina lielāku elastību. Atstarpes ir jāizmanto, ja ir nepieciešams kaut kas līdzināties rindā.

Noteikums: cilnes ir jāizmanto rindas sākumā atkāpei, savukārt atstarpes var izmantot rindas vidū līdzināšanai.

If (nosacījums) ( $foo = "somevalue"; $foo2 = "somevalue2"; $ foo_bar = "somevalue3"; $ foo5 = "somevalue4"; )

Un šādi kods izskatās, ja tiek rādītas neredzamas tabulēšanas un atstarpes rakstzīmes:

If (nosacījums) ( ---$foo.....= "somevalue"; ---$foo2....= "somevalue2"; ---$foo_bar.= "somevalue3"; ---$foo5 ....= "somevalue4";)

Asociatīvajiem masīviem vērtībām jāsākas jaunā rindā. Uzskaitot masīva elementus, ieteicams likt “pēdējo” komatu - tas atvieglo jaunu elementu pievienošanu...

$my_masīvs = masīvs(---"foo"..=> "somevalue", ---"foo2"..=> "somevalue2", ---"foo3"..=> "somevalue3", -- - "foo34".=> "somevalue3",);

Cirtainu breketu stils

Visiem šī stila blokiem ir jāizmanto cirtaini breketes, kā parādīts tālāk:

If (condition) ( action1(); action2(); ) elseif (condition2 && condition3) ( action3(); action4(); ) else ( defaultaction(); )

Ja ir garš bloks, tas, ja iespējams, jāsadala divos vai vairākos īsos blokos vai funkcijās. Ja nepieciešams tik garš bloks, beigās pievienojiet īsu komentāru, lai būtu skaidrs, ko tieši cirtainais skava aizver. Šo pieeju ir loģiski izmantot blokam ar 35 vai vairāk rindām.

Jebkurš kods, kas nav intuitīvs, ir jākomentē.

Vienmēr izmantojiet cirtainas breketes, pat ja tās nav nepieciešamas.

If (condition) ( action0(); ) if (condition) ( action1(); ) elseif (condition2) ( action2a(); action2b(); ) foreach ($items kā $item) ( process_item($item); )

Ņemiet vērā, ka prasība izmantot cirtainas breketes vienmēr nozīmē, ka vienas līnijas stila konstrukcijas ir aizliegtas.

$var = "bīstams""; // neapstrādāti dati, kas var būt vai nevar tikt izspiesti $id = some_foo_number(); // dati tiek gaidīti kā skaitlis, taču mēs neesam pārliecināti, vai $wpdb->query($wpdb-> ready( "UPDATE $wpdb->posts SET post_title = %s WHERE ID = %d", $var, $id));

%s tiek izmantots virknēm un %d veseliem skaitļiem. Lūdzu, ņemiet vērā, ka tie nav "pēdiņās"! $wpdb->prepare() pats izņem virknes un vajadzības gadījumā pievieno pēdiņas. Preparēšanas() priekšrocība ir tāda, ka jums nav jāatceras manuāli izmantot esc_sql() , kā arī tas, ka vaicājuma virkne ar vietturiem ir vizuālāka nekā tad, ja tajā tiktu izmantoti mainīgie, kas ietīti esc_sql() .

Datu bāzes vaicājumi

Centieties nerakstīt tiešus vaicājumus datu bāzei. Ja ir piemērota funkcija un WP to ir daudz, kas var iegūt nepieciešamos datus, izmantojiet to.

Funkciju izmantošana vaicājumu vietā palīdz saglabāt turpmāko kodu saderību. Turklāt daudzas funkcijas darbojas ar kešatmiņu, un tas var ievērojami paātrināt kodu.

Klašu nosaukumi, funkcijas, faili, konstantes, mainīgie

Funkciju nosaukumi, mainīgie, āķi

Mainīgos, āķos un funkciju nosaukumos izmantojiet mazos burtus a–z, nevis CamelCase . Atdaliet atsevišķus vārdus ar pasvītrojumiem _. Nesaīsiniet mainīgo nosaukumus, ja vien tas nav nepieciešams; saglabāt kodu nepārprotamu un pašdokumentējošu.

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

Klašu nosaukumi

Jums ir jāizmanto vārdi ar lielajiem_burtiem, kas atdalīti ar pasvītrojumiem. Jebkuriem saīsinājumiem (akronīmiem, saīsinājumiem) ir jābūt LIELIE burtiem.

Klase Walker_Category paplašina Walker ( [...] ) klasi WP_HTTP ( [...] )

Konstantēm ir jābūt vārdiem, kas rakstīti ar LIELajiem burtiem, kas atdalīti ar pasvītrojumiem:

Define("DOING_AJAX", true);

Failu nosaukumi

Jābūt skaidram un jāsatur tikai mazie burti, un vārdi ir jāatdala ar defisi - .

Mans-spraudņa-nosaukums.php

Klases failu nosaukumi

Jābūt balstītai uz klases nosaukumu ar prefiksu class- , pasvītras klases nosaukumā tiek aizstātas ar defisi, piemēram, WP_Error kļūst:

Class-wp-error.php

Šis failu nosaukumu standarts ir derīgs visiem esošajiem un jaunajiem klases failiem. Tomēr ir izņēmuma faili: class.wp-dependencies.php, class.wp-scripts.php, class.wp-styles.php. Šiem failiem ir pievienots klases prefikss. , punkts aiz vārda klases defises vietā.

Skaidras mainīgo vērtības funkciju parametros

Būla vērtībām ir priekšroka, nevis virkņu vērtībām. Tie. Patiesa/false vietā, izsaucot funkcijas, labāk ir izmantot kādu virkni, kas izskaidro parametra vērtību.

Slikts kods:

Funkcija ēst($ko, $lēnām = true) (… ) eat("sēnes"); ēst ("sēnes", taisnība); // ko nozīmē patiesība? ēst ("izstrādes programma", viltus); // ko nozīmē viltus, patiesības pretstats?

Tā kā PHP neatbalsta nosauktos argumentus, karoga vērtībām nav nozīmes, un katru reizi, kad sastopamies ar funkcijas izsaukumu, piemēram, iepriekš minētajos piemēros, mums ir jāaplūko funkcijas dokumentācija. Kods var būt labāk lasāms, izmantojot aprakstošas ​​virknes vērtības Būla vērtību vietā.

Labs kods:

Funkcija eat($ko, $ātrums = "lēnām") ( ... ) eat("sēnes"); ēst("sēnes", "lēnām"); ēst ("izstrādes programma", "ātri");

Ja nepieciešams vairāk funkciju parametru, izmantojiet $args masīvu. Viņš ir vēl labāks!

Ļoti labs kods:

Funkcija eat($what, $args) ( ... ) eat("nūdeles", array("ātrums" => "mērens"));

Interpolācija dinamisko āķu nosaukumiem

Lai atvieglotu lasāmību un noteikšanu, āķi, kuru nosaukumos ir mainīgie, ir jāinterpolē (ieliek cirtainos iekavās ( un )), un tos nedrīkst savienot:

Iekavas ir nepieciešamas, lai PHP varētu pareizi parsēt mainīgo datu tipus interpolētajā virknē.

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

Ja iespējams, dinamiskajām vērtībām tagu nosaukumos arī jābūt pēc iespējas īsākām un precīzākām. $user_id ir daudz skaidrāks nekā, piemēram, $this->id .

Trīskāršs operators

Trīskāršie operatori ir labi, taču tie iesaka vienmēr pārbaudīt, vai apgalvojums ir patiess, nevis nepatiess. Pretējā gadījumā tas ir vienkārši maldinošs dubultā negatīvā dēļ. Izņēmums ir lietošana! tukšs(), jo dažreiz vienkārši ir grūti to uzrakstīt citādi.

Kā pārbaudīt:

// (ja nosacījums ir patiess = patiess)? (tad mēs to darām) : (pretējā gadījumā tas); $music_type = ("džezs" == $mūzika) ? "forši": "bla"; // (ja vērtība nav tukša - ! tukša) ? (tad mēs to darām) : (pretējā gadījumā tas);

Kā nerakstīt:

// (ja nosacījums nav izpildīts!= patiess) ? (tad mēs to darām) : (pretējā gadījumā tas); $music_type = ("džezs" != $mūzika) ? "bla": "forši";

Meistara Jodas nosacījumi

Veicot loģiskus salīdzinājumus, vienmēr ievietojiet konstantes vai literāļus kreisajā pusē un mainīgo labajā pusē.

If (true == $the_force) ( $uzvarošs = you_will($be); )

Ja iepriekš minētajā piemērā izlaidīsim otro = zīmi (jāatzīst, tas notiek pat vispieredzējušākajiem no mums), mēs saņemsim PHP kļūdu un uzreiz to redzēsim, jo ​​kods nedarbosies. Bet, ja konstrukcija būtu pretēja - $the_force = true , tad nosacījums vienmēr būtu izpildīts un mēs neredzētu nekādu kļūdu, un mēs varētu palaist garām tik nopietnu kļūdu, kuru arī dažreiz ir grūti noķert!

Jums vienkārši jāpierod pie šīs “apgrieztās” pareizrakstības.

Tas attiecas arī uz == , != , === un !== . "Jodas nosacījumi" par< , > , <= или >= daudz grūtāk lasāms un labāk tos šeit neizmantot.

Gudrais kods

Īsāk sakot, priekšplānā vajadzētu būt koda lasāmībai, tas ir svarīgāks par īsumu vai dažiem ne acīmredzamiem, bet ērtiem saīsinājumiem.

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

Jā - šis ir foršs ieraksts, ir skaidrs, ka to veidojis pieredzējis programmētājs. Bet jebkuram citam izstrādātājam un bieži vien pat autoram, lai saprastu šādu ierakstu, ir nedaudz jāiedziļinās un jāpavada papildu sekundes vai minūtes. Tas nav acīmredzams vai skaidrs ieraksts, un no tā vajadzētu izvairīties, un labāk to rakstīt ilgāk, bet skaidrāk:

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

Kļūdu novēršanas operators @

PHP atbalsta vienu kļūdu kontroles operatoru: @ zīmi. Ja tas ir pirms jebkuras izteiksmes PHP kodā, visi šīs izteiksmes ģenerētie kļūdu ziņojumi tiks ignorēti.

Lai gan šis operators pastāv kodolā, tas bieži tiek izmantots, jo ir pārāk slinks, lai pareizi apstrādātu mainīgo. Tās izmantošana ir spēcīga Nav ieteicams jo pat PHP dokumentācijā ir teikts:

Uzmanību: šodien operators "@" aptur ziņojumu izvadi pat par kritiskām kļūdām, kas pārtrauc skriptu. Cita starpā tas nozīmē, ka, ja izmantojāt "@", lai apspiestu kļūdas, kas rodas, palaižot funkciju, ja tā nav pieejama vai ir uzrakstīta nepareizi, turpmākā skripta izpilde tiks apturēta bez brīdinājuma.

Kādu dienu jūs nolēmāt izveidot savu vietni vai emuāru, un pārvaldības sistēmai izvēlējāties WordPress... Laikam ejot, jūsu vietne kļuva arvien lasāmāka, un tad jūs sapratāt, ka vēl lielākai popularitātei ir jāpievieno nedaudz funkcionalitātes uz vietni vai vienkārši automatizējiet dažas šīs darbības.

Jūs dodaties uz WordPress spraudņu “noliktavu” un atklājat, ka vajadzīgā spraudņa tur nav. Ko darīt? Ko man darīt? Ja esat vismaz nedaudz iepazinies ar programmēšanas pamatiem PHP, izkārtojumu, tad jums tas nebūs grūti Uzrakstiet pats WordPress spraudni.

Tagad dosimies uz “virtuvi”, lai sagatavotu mūsu spraudni.

P.s. Ja jums nav zināšanu par php un izkārtojumu... neuztraucieties, palūdziet, lai kāds uzraksta jums nepieciešamo funkcionalitāti :)

Pirms sākat rakstīt spraudni, jums ir jāatsaucas uz WordPress dokumentāciju, kurā ir aprakstīti spraudņu rakstīšanas pamatprincipi un daži kodu piemēri.

Es nedublēšu šo informāciju, bet uzreiz ķeršos pie koda rakstīšanas.

Uzrakstīsim vienkāršu spraudni, kas ļaus jums saglabāt un parādīt atsauksmes par jūsu vietni. Protams, šādi spraudņi jau pastāv, taču tas ir lieliski piemērots kā piemērs.

Pirmā lieta, ko mēs darīsim, ir izdomāt unikālu nosaukumu mūsu spraudnim - " AdvUserReviews«.

Tālāk mēs izveidosim jaunu direktoriju “advuserreviews” jūsu vietnes direktorijā “/wp-content/plugins/”. Un tajā mēs izveidosim failu “advuserreviews.php”. Šis būs galvenais fails, kas būs atbildīgs par vispārējo inicializēšanu. (Failiem ieteicams izmantot UTF-8 kodējumu).

Faila pašā sākumā jānorāda pamatinformācija par spraudni

Tagad, pārejot uz vadības paneli, jūs varat redzēt, ka sistēma ir atradusi jaunu spraudni un piedāvā to aktivizēt. Bet vēl ir pāragri to darīt.

Mēs rakstīsim savu jauno spraudni OOP stilā un visa datu apstrāde tiks izvietota vienā failā. Izveidosim faila galveno skeletu.

// Apturēt tiešo zvanu if(preg_match("#" . basename(__FILE__) . "#", $_SERVER["PHP_SELF"])) ( die("Jums nav atļauts tieši izsaukt šo lapu."); ) if (!class_exists("AdvUserReviews")) ( class AdvUserReviews ( // Iekšējo datu glabāšana publiski $data = array(); // Objektu konstruktors // Inicializē galveno mainīgo funkciju AdvUserReviews() ( ) ) ) globālā $rprice; $rcena = new AdvUserReviews();

Tagad objektu konstruktoram pievienosim šādu kodu:

Funkcija AdvUserReviews() ( globāls $wpdb; // Deklarē mūsu spraudņa inicializācijas konstanti DEFINE("AdvUserReviews", true); // Mūsu spraudņa faila nosaukums $this->plugin_name = plugin_basename(__FILE__); // URL adrese šim mūsu spraudnis $ this->plugin_url = trailingslashit(WP_PLUGIN_URL."/".dirname(plugin_basename(__FILE__))); // Tabula mūsu atsauksmju glabāšanai // mainīgais $wpdb ir jādeklarē globāli $this->tbl_adv_reviews = $wpdb ->prefikss . "adv_reviews"; // Funkcija, kas tiek izpildīta, kad spraudnis ir aktivizēts register_activation_hook($this->plugin_name, array(&$this, "activate")); // Funkcija, kas tiek izpildīta, kad spraudnis ir deaktivizēts register_deactivation_hook($this->plugin_name, array (&$this, "deactivate")); // Funkcija, kas tiek izpildīta, atinstalējot spraudni register_uninstall_hook($this->plugin_name, array(&$this, "atinstalēt")); )

Objekta konstruktorā mēs izmantojam 3 “āķus” vai “āķus” (kas tie ir?): register_activation_hook, register_deactivation_hook Un register_uninstall_hook- šīs ir funkcijas, kas tiek veiktas, attiecīgi aktivizējot, deaktivizējot un dzēšot spraudni.

Tagad tieši ieviesīsim šīs funkcijas.

/** * Aktivizējiet spraudni */ function activate() ( globāls $wpdb; request_once(ABSPATH . "wp-admin/upgrade-functions.php"); $table = $this->tbl_adv_reviews; // Nosakiet mysql versiju if ( version_compare(mysql_get_server_info(), "4.1.0", ">=")) ( if (! tukšs($wpdb->charset)) $charset_collate = "NOKLUSĒJUMA RAKSTU IESTATĪJUMS $wpdb->rakstzīmju kopa"; if (! tukšs( $wpdb->collate)) $charset_collate .= "SĀKOT $wpdb->salīdzināt"; ) // Mūsu pārskatu tabulas struktūra $sql_table_adv_reviews = "IZVEIDOT TABLU `".$wpdb->prefikss."adv_reviews` (`ID` INT(10) Unsigned NULL AUTO_INCREMENT, `review_title` VARCHAR(255) NOT NULL NOKLUSĒJUMS "0", `review_text` TEXT NOT NULL, `review_date` TIMESTAMP NOT NULL DEFAULT CURRENT_ CURRENT_TIME`erview , `review_user_email` VARCHAR(200) NULL, PRIMARY KEY (`ID`))".$charset_collate.";"; // Pārbaudiet tabulas esamību if ($wpdb->get_var("rādīt tādas tabulas kā "".$table .""" ) != $table) ( dbDelta($sql_table_adv_reviews); ) ) /** * Deaktivizējiet spraudni */ funkciju deactivate() ( return true; ) /** * Spraudņa noņemšana */ funkcija uninstall() ( globāls $wpdb; $wpdb->query("NOMET TABULU, JA IR ($wpdb->prefix)adv_reviews"); )

Mainīgs $wpdb Atbildīgs par vaicājumiem datu bāzē. Funkcija dbDelta parsē pašreizējo tabulas struktūru, salīdzina to ar vēlamo tabulas struktūru un pēc vajadzības pievieno vai modificē tabulu.

Attiecīgi, kad spraudnis ir aktivizēts, tiek izveidota tabulas struktūra atsauksmju glabāšanai. Kad spraudnis ir deaktivizēts, nekādas darbības nenotiek, bet, kad tas tiek dzēsts, mēs dzēšam savu tabulu. Darbības sīkāk var saprast no pirmkoda.

Jaunā spraudņa pamatstruktūra ir gatava. Tagad mums jāsāk rakstīt funkcionālo daļu. Lai to izdarītu, klases konstruktoram jāpievieno šādas koda rindas:

// Ja esam adminā. interfeiss if (is_admin()) ( // Pievienot stilus un skriptus add_action("wp_print_scripts", array(&$this, "admin_load_scripts")); add_action("wp_print_styles", array(&$this, "admin_load_styles")); // Pievienojiet izvēlni spraudnim add_action("admin_menu", array(&$this, "admin_generate_menu")); ) else ( // Pievienot stilus un skriptus add_action("wp_print_scripts", array(&$this, "site_load_scripts") )) ; add_action("wp_print_styles", array(&$this, "site_load_styles")); add_shortcode("show_reviews", masīvs (&$this, "site_show_reviews")); )

Apskatīsim šo koda sadaļu sīkāk. Sāksim ar administrācijas paneli.
Funkcija " ir_admin» pārbauda, ​​kādā režīmā šobrīd strādājam - mājaslapā vai vadības panelī.
Tālāk funkcijām tiek izmantoti vairāki āķi:

  • wp_print_scripts- Pievienojiet nepieciešamos javascript failus
  • wp_print_styles- Pievienojiet nepieciešamos stilus
  • admin_menu- jaunas izvēlnes pievienošana vadības panelim

Katrs āķis atbilst mūsu klasē ieviestajai metodei. Kurā tiek veiktas nepieciešamās operācijas.
Apskatīsim stilu un skriptu savienošanas kodu

/** * Nepieciešamo skriptu ielāde pārvaldības lapai * administrācijas panelī */ funkcija admin_load_scripts() ( // Reģistrēt skriptus 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"); // Pievienojiet skriptus lapai wp_enqueue_script("advReviewsAdminJs"); wp_enqueue_script("jquery"); ) /** * Vadības lapai nepieciešamo stilu ielāde * administrācijas panelī */ funkcija admin_load_styles() ( // Reģistrēt stilus wp_register_style("advReviewsAdminCss", $this->plugin_url . "css/admin-style.css") ; // Pievienot stilus wp_enqueue_style( "advReviewsAdminCss"); )

Šeit tiek izmantotas šādas funkcijas.

Katra darbība ir atkarīga no nokārtotā parametra "darbība", attiecīgi "rediģēt" - atsauksmes rediģēšana, "iesniegt" - rediģētas atsauksmes saglabāšana un "dzēst" - atsauksmes dzēšana.

Datu apmaiņa ar displeja lapām notiek, izmantojot objekta rekvizītu “dati”. Šo lapu pirmkods tiks ievietots arhīvā ar šo moduli raksta beigās. Es tos šeit neievietošu, jo tēma jau ir diezgan liela.

Šeit mēs pabeidzam ar administrācijas paneli un pārejam pie lietotāju atsauksmju parādīšanas un pievienošanas.

Lai norādītu WordPress, kad izsaukt mūsu spraudni, mums jāreģistrē “īskods”, kas tika darīts mūsu klases konstruktorā. Lasiet vairāk par šo.

Add_shortcode("show_reviews", masīvs (&$this, "site_show_reviews"));

Tagad jūs varat ievietot šādu kodu jebkurā vietnes lapā, un tas liks izpildīt mūsu norādīto funkciju (nodots kā otrais parametrs). Zemāk ir šīs funkcijas pirmkods.

/** * Vietnes atsauksmju saraksts */ publiska funkcija site_show_reviews($atts, $content=null) ( globālā $wpdb; if (isset($_POST["darbība"]) && $_POST["darbība"] = = " add-review") ( $this->add_user_review(); ) // Atlasīt visas atsauksmes no datu bāzes $this->data["reviews"] = $wpdb->get_results("SELECT * FROM `" . $ this- >tbl_adv_reviews . "`", ARRAY_A); ## Iespējot izvades buferizāciju ob_start (); include_once("site_reviews.php"); ## Saņemt datus $output = ob_get_contents (); ## Atspējot buferizāciju ob_end_clean (); return $output ; ) privātā funkcija add_user_review() ( globālā $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"]),); // Pievienot vietnei jaunu atsauksmi $wpdb->insert( $this-> tbl_adv_reviews, $inputData);)

Principā šeit nav nekā sarežģīta - datu atlasei tiek veikts SQL vaicājums, bet, ja parametrs “darbība” tiek nodots, vispirms tiek pievienots jauns apskats. Bet ir vērts pievērst uzmanību izvades buferizācijai. Tas nepieciešams, lai iegūtu ievietotās lapas datus.

Tas ir viss. Tagad mēs varam redzēt, kas mums ir. A lejupielādēt spraudni un avota kodus jūs varat šeit.

Protams, šis ir tikai spraudņa izveides piemērs, taču tas darbosies arī kā vienkārša viesa lietotne, ja to nedaudz modificēsit, piemēram, pievienojot aizsardzību pret robotprogrammatūrām un izvadi pa lappusei. Veiksmīgu kodēšanu :)

Veidlapa vietnē:

Spraudņa vadības panelis:

Rediģēt apskatu:

Jūs varētu interesēt arī:


Visi iesācēju tīmekļa pārziņi ir nobijušies un atbaida, strādājot ar kodu – viņi baidās nodarīt kaitējumu savai vietnei, pievienojot tai HTML vai PHP, vai ievietojot to nepareizā vietā. Protams, ja jūs ievietojat kodu WordPress nepareizā vietā, jūs varat visu sabojāt. Tomēr šī CMS ir tik labi pielāgota iesācējiem, ka būs grūti kļūdīties.

Šajā rakstā mēs apskatīsim, kā droši ievietot HTML vai PHP kodu WordPress. Bet vispirms, kāpēc tas varētu būt noderīgi.

Kāpēc iegult kodu programmā WordPress

Vietnes darbības laikā tīmekļa pārzinim, iespējams, būs jāinstalē kods WordPress, kas jāizpilda lapās. Tas var būt nepieciešams dažādu iemeslu dēļ: piemēram, lai instalētu satiksmes skaitītāju, kādu neparastu logrīku vai pievienotu veidnei individualitāti.

WordPress piedāvā divus veidus, kā instalēt kodu. Apskatīsim tos.

Instalēšana, izmantojot teksta logrīku

Lai instalētu kodu programmā WordPress, izmantojot logrīku, jums jāiet uz izvēlnes vienumu konsolē “Izskats” un apakšvienumu “Logrīki”. Starp tiem jāatrod “Teksts” un ar peli jāpārvieto uz vajadzīgo apgabalu.

Logrīks tiks atvērts un jūs varat aizpildīt tā nosaukumu, kā arī ievietot nepieciešamo kodu attiecīgajā laukā. Pēc noklikšķināšanas uz pogas “Saglabāt” darbība tiks veikta vietnes lapās.

Šī koda instalēšanas metode vietnē WordPress ir piemērota darbību veikšanai HTML, PHP un pat JavaScript. Šo metodi bieži izmanto, jo tā ir vienkārša un labi der iesācējiem.

Instalēšana failā

Iesācējiem nav ieteicama koda instalēšana WordPress, izmantojot failu rediģēšanu, taču agri vai vēlu tas būs jāapgūst ikvienam. Šī metode ir ērta, jo HTML vai PHP var ievietot jebkurā daļā, ne tikai logrīka apgabalā, kā aprakstīts pirmajā metodē. Šīs instalēšanas metodes trūkums ir tāds, ka tā var būt bīstama un, ja tiek pieļautas kļūdas, vietne var nedarboties. Tāpēc pirms šīs metodes izmantošanas jums ir jāizveido failu un datu bāzes rezerves kopija.

Lai instalētu kodu tieši failā pakalpojumā WordPress, jums jāzina, par kuru vietnes apgabalu ir atbildīgs konkrētais fails. Šeit nav iespējams sniegt precīzus ieteikumus, jo dažādās veidnēs dažādi faili veic noteiktas funkcijas. Tomēr jūs varat uzzināt kaut ko par motīvu failiem. Papildus koda instalēšanai WordPress veidnes failā to var izdarīt arī pašas CMS failos.

Koda lasāmība ir ļoti jutīga tēma, un tai ir jāpievērš pienācīga uzmanība. Šajā rakstā jūs uzzināsit 16 paņēmienus, kas palīdzēs jums virzīties uz priekšu šajā tēmā.

1. Komentāri un dokumentācija

IDE kļūst arvien populārāki izstrādātāju pasaulē, jo... tie nodrošina ērtus rīkus koda komentēšanai un dokumentēšanai.

Šeit ir piemērs:

Šeit ir vēl viens piemērs savas metodes izsaukšanai:

Šajā piemērā komentēšanas stils ir balstīts uz PHPDoc, un IDE, ko izmantoju, ir Aptana.

2. Atkāpes

Es pieņemu, ka jūs jau zināt atkāpes nozīmi savā kodā. Kopumā ir vairāki koda formatēšanas stili.

Funkcija foo() ( if ($varbūt) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Funkcija foo() ( if ($varbūt) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Funkcija foo() ( if ($varbūt) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Personīgi es visbiežāk izmantoju stilu #2, bet dažreiz pāreju uz #1. Bet tas viss, protams, ir gaumes jautājums. Visticamāk, nav tāda “labākā” stila, kas derētu pilnīgi visiem. Šie noteikumi, pirmkārt, ir jāievēro tiem, kas strādā komandā vai piedalās atvērtā pirmkoda projektu rakstīšanā.

Ir arī stili, kas apvieno noteiktas īpašības. Piemēram, PEAR koda rakstīšanas standarti, kur krokainais figūriekkava "(" nosacījumu priekšrakstos paliek tajā pašā rindā, bet tiek pārvietots funkcijās.

Bumbieru stils:

Funkcija foo() ( // jaunā rindā if ($varbūt) ( // tajā pašā rindā do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Jāņem vērā arī tas, ka šajā stilā ciļņu vietā tiek izmantotas 4 atstarpes.

Varat uzzināt vairāk par dažādiem stiliem.

3. Izvairies no liekiem komentāriem

Jā, komentēšanas kods ir labs; tomēr nevajag pārspīlēt. Šeit ir piemērs:

// iegūt valsts kodu $country_code = get_country_code($_SERVER["REMOTE_ADDR"]); // ja valsts ir ASV if ($country_code == "ASV") ( // parādīt formu echo form_input_state(); )

Ja koda darbība ir acīmredzama, tad, visticamāk, nevajadzētu rakstīt nevajadzīgus komentārus.

Ja jums to nav, varat tos nedaudz saīsināt:

// parādīt veidlapu, ja valsts ir ASV $ valsts_kods = get_country_code($_SERVER["REMOTE_ADDR"]); if ($country_code == "ASV") ( echo form_input_state(); )

4. Kodu grupēšana

Visbiežāk dažiem uzdevumiem ir jāieraksta vairākas koda rindiņas. Tāpēc vislabāk ir apvienot šādus uzdevumus atsevišķos blokos, kas atdalīti ar atstarpēm.

Šeit ir vienkāršs piemērs:

// iegūt forumu sarakstu $forums = array(); $r = mysql_query("ATLASĪT ID, nosaukumu, aprakstu NO forumiem"); while ($d = mysql_fetch_assoc($r)) ( $forumi = $d; ) // ielādējiet veidni load_template("header"); load_template("forumu_saraksts",$forumi); load_template("kājene");

Ja pievienosiet komentāru pirms katra bloka sākuma, tas vēl vairāk uzlabos jūsu koda lasāmību.

5. Nosaukšanas shēma

Dažreiz pat PHP valodā var atrast neatbilstības funkciju nosaukšanā. Un šeit ir daudz piemēru:

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

Ir vairāki populāri stili:

  • camelCase: katra jaunā vārda pirmo burtu raksta ar lielo burtu.
  • pasvītras: pasvītrojums starp vārdiem: mysql_real_escape_string().

Ja jūs sajaucat šos paņēmienus, agrāk vai vēlāk jūs varat nonākt neērtā situācijā. Ja strādājat pie projekta, kurā tiek izmantota kāda no šīm metodēm, jūs vēlaties sekot šim piemēram. Tas joprojām var būt atkarīgs no programmēšanas valodas. Piemēram, lielākā daļa Java izstrādātāju izmanto camelCase, savukārt PHP izstrādātāji dod priekšroku pasvītrai.

Bet pat šeit bija hibrīds. Daži izstrādātāji izmanto pasvītrojumus klašu un metožu nosaukšanai (ārpus klasēm), bet citos gadījumos izmanto camelCase:

Class Foo_Bar (publiskā funkcija someDummyMethod() ( ) ) funkcija procedural_function_name() ( )

Vēlreiz teikšu, ka labāka stila nav. Pie kaut kā vienkārši jāpieturas.

6. DRY princips

DRY (Neatkārtojiet sevi) - neatkārtojiet sevi. Zināms arī kā DIE: Dublēšana ir ļaunums.

Jebkuras sistēmas galvenais uzdevums neatkarīgi no tā, vai tā ir tīmekļa lietojumprogramma vai kas cits, ir automatizēt atkārtotus uzdevumus. Šis princips ir jāievēro vienmēr un visur, īpaši, ja esat izstrādātājs. Vienu un to pašu koda daļu nevajadzētu atkārtot atkal un atkal.

Piemēram, lielākā daļa tīmekļa lietojumprogrammu sastāv no vienas vai vairākām lapām. Ir skaidrs, ka šajās lapās būs tie paši elementi. Galvenes un kājenes ir visspilgtākie piemēri. Jūs būtu pārsteigts, cik daudz cilvēku joprojām dublē šos elementus katrā lapā.

$this->load->view("iekļauts/galvene"); $this->load->view($main_content); $this->load->view("iekļauts/kājene");

7. Izvairieties no dziļas ligzdošanas

Koda lasāmība strauji samazinās, ja jums ir dziļa ligzdošana.

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

Lai situāciju labotu, jums vajadzētu pārskatīt koda darbību un optimizēt to:

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. Līnijas garuma ierobežojums

Ikviens zina, ka lasīšanas process kļūst daudz patīkamāks, ja teksts tiek sadalīts kolonnās. Šis ir galvenais iemesls, kāpēc mūsu laikraksti izskatās šādi:

Līdzīgu paņēmienu var izmantot mūsu kodam:

// slikta $my_email->set_from(" [aizsargāts ar e-pastu]")-> add_to(" [aizsargāts ar e-pastu]")->set_subject("Metodes ķēdē")->set_body("Kāds garš ziņojums")->nosūtīt(); // labs $my_email ->set_from(" [aizsargāts ar e-pastu]") -> add_to(" [aizsargāts ar e-pastu]") ->set_subject("Metodes ķēdē") ->set_body("Kāds garš ziņojums") ->sūtīt(); // bad $query = "ATLASĪT ID, lietotājvārdu, vārdu_vārdu, uzvārdu, statusu NO lietotājiem LEFT PIEVIENOTIES user_posts, izmantojot (users.id, user_posts.user_id) WHERE post_id = "123""; // bad $query = "SELECT id, lietotājvārds, vārds, uzvārds, statuss NO lietotājiem LEFT JOIN user_posts USING(users.id, user_posts.user_id) WHERE post_id = "123"";

Lielākā daļa izstrādātāju ievēro 80 un 120 rakstzīmju ierobežojumus.

9. Failu un mapju kārtošana

Tehniski visu savas aplikācijas kodu var salikt vienā failā :) Bet ko darīsi, kad vajadzēs kaut ko mainīt vai pievienot.

Es atceros savus pirmos projektus, kuros pievienoju failus. Tomēr mana organizācija bija ļoti slikta. Es izveidoju mapi “inc”, kurā ievietoju vairākus failus: db.php un functions.php. Pieteikuma rakstīšanas laikā šī mape kļuva arvien lielāka, un galu galā bija grūti saprast, kas ir kur.

Lai atrisinātu šo problēmu, labāk ir izmantot dažāda veida karkasus vai vismaz ievērot to struktūru. Lūk, kā projekts izskatās vietnē CodeIgniter:

10. Mainīgo nosaukumi

Kopumā mainīgo nosaukumiem jābūt pilnīgi nozīmīgiem - tas ir ideāli. Izņēmums var būt pagaidu mainīgajiem.

Apskatīsim dažus piemērus:

// $i cilpām ($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 un $d for mysql $q = "SELECT * FROM table"; $r = mysql_query($q); while ($d = mysql_fetch_assocr($r)) ( ) // $fp darbam ar failiem $fp = fopen("fails.txt","w");

11 - Rakstiet atslēgvārdus SQL ar lielajiem burtiem

Lielākā daļa tīmekļa lietojumprogrammu mijiedarbojas ar datu bāzēm. Ja pats raksti SQL vaicājumus, tad arī tie attiecīgi jāformatē... Te nav nekā sarežģīta. Vienkārši ierakstiet atslēgvārdus ar lielajiem burtiem.

12. Atsevišķs kods un dati

Šis ir vēl viens princips, kas palīdzēs uzrakstīt saprotamākas programmas. Tas ietver datu sagatavošanu vienā vietā (piemēram, modeļus) un mijiedarbību ar tiem citā.

Kad PHP pirmo reizi sāka attīstīties, tā bija vairāk kā veidņu sistēma. Projekti šajā valodā ietvēra jauktu HTML un PHP kodu. Tagad viss ir mainījies, un ikvienam vajadzētu pāriet uz nākamo pieteikumu rakstīšanas līmeni.

Jūs varat izveidot sev īpašu stilu, vai arī varat izmantot mūsdienās populārākos līdzekļus.

Populāri PHP ietvari:

Veidņu sistēmas:

Populāra CMS

13. Speciāla sintakse veidnēm

Ja nevēlaties izmantot veidņu sistēmu, visticamāk, jums būs jāizstrādā savs PHP koda iegulšanas stils HTML.

Un šeit ir piemērs:

Sveiki, lietotājvārds; ?>
|

Mans ziņojumu dēlis

tituls; ?>

Forumi kā $forums): ?>

id, $forums->nosaukums) ?> (Threads->count(); ?> pavedieni)

apraksts; ?>

Šis paņēmiens ļaus izvairīties no nevajadzīgām iekavām. Turklāt šāds kods labi iekļaujas HTML kontekstā.

14. Procesuālās un objektorientētās pieejas

Objektorientētā programmēšana palīdzēs jums pieturēties pie vairāk vai mazāk skaidras struktūras, taču tas nenozīmē, ka jums ir jāatkāpjas no pieteikumu rakstīšanas procesuālajiem principiem.

Objekti ir lieliski piemēroti datu attēlošanai. Piemērs:

Class User ( publisks $lietotājvārds; publisks $pirms_nosaukums; publisks $uzvārds; publisks $e-pasts; publiska funkcija __construct() ( // ... ) public function create() ( // ... ) public function save() ( / / ... ) publiskā funkcija delete() ( // ... ) )

Procedūras metodēm ir savas īpašas priekšrocības.

Funkcija lielo burtu rakstīšana($string) ( $ret = strtoupper($string); $ret .= strtolower(substr($string,1)); return $ret; )

15. Izlasiet atvērtā pirmkoda kodu

Parasti atvērtā pirmkoda projektus raksta liels skaits izstrādātāju. No šī viedokļa rakstītā koda izpēte līdzīgos projektos var palīdzēt iegūt pieredzi. Tāpēc netērējiet tam savu laiku.

16. Refaktorings

Refaktorings ir koda maiņa, nezaudējot funkcionalitāti. To var arī izmantot, lai uzlabotu lasāmību. Nav vietas kļūdu labošanai vai funkcionalitātes pievienošanai. Jūs vienkārši nedaudz mainiet sava koda struktūru.

Es ceru, ka šis raksts jums noderēja! Vai es kaut ko palaidu garām? Dalies pieredzē!

Uzdrošinos pieņemt, ka jūsu dzīvē ir bijuši brīži, kad jūs gribējāt kaut ko pievienot (izlabot) savas WP vietnes tēmai vai kāda spraudņa funkcionalitātei. Turklāt izstrādātāji šo funkciju neiekļāva standarta vadīklās. Un tava dvēsele nepazīst nekādus ierobežojumus un prasa izdomājuma lidojumus :) Kā saproti, no jebkuras situācijas ir izeja, šajā gadījumā nāksies izlabot spraudņa kodu, tēmu...

Galvenās grūtības koda rediģēšanā ir tādas, ka veiktās izmaiņas diemžēl netiek saglabātas ilgi un, visticamāk, tiks atceltas nākamās atjaunināšanas laikā. Ja redzamais risinājums ir izvairīties no atjauninājumiem, es uzdrošinos jūs atrunāt no šī bīstamā nevērīgā lēmuma, jo atjauninājumos ir būtiskas izmaiņas drošības un kļūdu labojumu ziņā, kā arī bieži tiek pievienotas jaunas funkcijas.

Rezultātā vēlams izmantot metodes, kas izturēsies mūsu dinamiski mainīgajā pasaulē un vienlaikus ietaupīs jūsu dārgo laiku.

Uzmanību!

Internetā bieži var atrast padomu, kas iesaka veikt izmaiņas failā funkcijas.php- ja ir kāda iespēja iztikt bez tā, labāk šim failam nepieskarties. Tālāk norādītajās metodēs jūs redzēsit veidu, kā to īstenot. Un jebkurā gadījumā jums ir jāizveido bērna tēma, nevis jāpieskaras vecākam.

Pievienojot funkcijai prefiksus, vienmēr izmantojiet pielāgotu kodu šādā formā: _priedēklis(uz mainītās funkcijas nosaukumu). Šī darbība pasargās jūs no konfliktiem ar citām motīva vai spraudņa funkcijām.

Tātad, kā pievienot kodu WP vietnei?

1) Pielāgots spraudnis

Tādā veidā jūs varat ievietot koda fragmentus, un tie netiks dzēsti atjaunināšanas laikā, kā arī jūs varat tos rediģēt, aktivizēt nākotnē vai otrādi - deaktivizēt tos pēc vajadzības.

To ir viegli izdarīt: vispirms ir jāizveido savam spraudņa direktorijs un attiecīgi jāpiešķir tam nosaukums, piemēram, moy-plugin (izmantojiet tikai domuzīmes, nevis apakšsvītras)

Tālāk mēs izveidojam galveno spraudņa failu. Kā jūs saprotat, tajā jāiekļauj nosaukums, apraksts un pamatinformācija, kā arī kods, kas palīdzēs aizsargāt spraudni no iebrucējiem. Un mēs šo failu saucam par moy-plugin.php. Paplašinājums .php pateiks WP, kādā valodā fails tika izveidots.

Failu var izveidot, izmantojot iepriekš aprakstīto metodi jebkurā teksta redaktorā, piemēram, NotePad, kas jau ir rūpīgi instalēts operētājsistēmā Windows (TextEdit operētājsistēmā Mac). Microsoft Word redaktoru labāk neizmantot, jo tas formatē tekstu, un šajā situācijā mums tas absolūti nav vajadzīgs.

Tātad, šeit ir kods, kas jāpievieno:

Un zem šī koda veiciet izmaiņas, kā to prasa jūsu radošā dvēsele. Beigās nav jāpievieno aizverošie PHP tagi. Šādā gadījumā jūsu administratora panelī tiks parādīts nosaukums, apraksts un URL. Un, protams, jūs varat aizstāt “ClubWP” informāciju ar savu informāciju

Pēc tam atliek tikai iesaiņot izveidoto zip arhīvā un nosūtīt to uz savas vietnes ftp. Nākotnē šādā veidā varēsit veikt jebkādas izmaiņas savā spraudnī.

Šādā vienkāršajā veidā jūs izveidosit vienkāršu spraudni savām vajadzībām.

2) koda fragmentu spraudnis

Ja iepriekš aprakstītā metode jums ir sarežģīta vai esat ļoti praktisks cilvēks un esat pieradis ātrāk sasniegt rezultātus, Code Snippets tika izveidots īpaši jums. Tāpat kā iepriekš aprakstītā funkcija, spraudnis pievieno jūsu kodu ar iespēju to tālāk rediģēt, neizmantojot motīvu.

Pēc spraudņa instalēšanas administratora panelī parādīsies jauns logs “Fragmenti”, kurā attiecīgi varēsiet pievienot jaunus fragmentus. Kam var ievadīt kodu un informāciju par tā mērķi.

Tādējādi jums ir iespēja iespējot vai atspējot pielāgotu kodu spraudņu veidā. Ļoti ērti un praktiski, jo... Dažreiz var rasties konflikti ar motīviem un spraudņiem, un jūs to varat viegli saprast un atspējot ģenerēto kodu.

3) bērna tēmas Functions.php rediģēšana

Ja spraudņu izmantošana jums nav piemērota un jums ir jāveic izmaiņas tieši jūsu vietnes motīvā, šī metode ir paredzēta jums. Atgādināšu, ka to var izdarīt tikai ar bērnu tēmām.

Lai izmantotu šo metodi, es piedāvāju savu veidni funkcijas.php bērnu tēma. Izpakojiet un rediģējiet failu stils.css(veidnes nosaukums un importēšanas URL)

P.S. Mēģiniet darīt visu iespējamo, lai vienkāršotu savu dzīvi nākotnē, tostarp jūsu pūles, lai novērstu kļūdas un rediģētu pielāgotu kodu, kad tas rodas.