Cod PHP în WordPress - cele mai bune practici. Inserări (fragmente) de cod utile pentru WordPress Exemple de scriere a codului în wp

Îndrăznesc să presupun că în viața ta au fost cazuri când ai vrut să adaugi (corecte) ceva în tema site-ului tău WP, sau în funcționalitatea vreunui plugin. Mai mult, dezvoltatorii nu au inclus această posibilitate în mijloace standard management. Și sufletul tău nu recunoaște nicio restricție și necesită un zbor de fantezie 🙂 După cum înțelegeți, există o cale de ieșire din orice situație, în acest caz, va trebui să corectăm codul pluginului, temei...

Principala dificultate în editarea codului este că modificările pe care le faceți, din păcate, nu durează mult și este posibil să fie anulate odată cu următoarea actualizare. Dacă vedeți soluția în a sta departe de actualizări, îndrăznesc să vă descurajez de la această decizie periculoasă ignobilă, deoarece actualizările conțin schimbari importanteîn ceea ce privește securitatea și remedierea erorilor, și adesea și funcții noi.

Drept urmare, este de preferat să folosiți metode care să stea în lumea noastră în schimbare dinamică și, în același timp, să vă economisiți timp prețios.

Avertizări!

Pe Internet, puteți găsi adesea sfaturi care sugerează modificarea fișierului. funcții.php- dacă există vreo posibilitate de a face fără ea - este mai bine să nu atingeți acest fișier. În metodele de mai jos, veți vedea cum să implementați acest lucru. Și, în orice caz, trebuie să creați o temă copil și să lăsați intactă tema părinte.

Când prefixați o funcție, utilizați întotdeauna codul personalizat sub forma: _prefix(la numele funcției modificate). Această acțiune vă va salva de conflicte cu alte funcții ale temei sau pluginului.

Deci, cum adaugi cod la un site WP?

1) Plugin personalizat

Deci, puteți introduce fragmente de cod și nu vor fi șterse în timpul actualizării și, de asemenea, le puteți edita, activa în viitor sau invers - dezactivați-le dacă este necesar.

Pentru a face acest lucru este simplu: mai întâi trebuie să creați un director pentru plugin-ul dvs. și să îl denumiți corespunzător, de exemplu moy-plugin (utilizați doar o liniuță, nu o bară oblică)

Apoi, creăm fișierul plugin principal. După cum înțelegeți, ar trebui să includă numele, descrierea și informațiile de bază, precum și codul care va ajuta la protejarea pluginului de intruși. Și numim acest fișier, să spunem my-plugin.php. Extensia .php va arăta WP în ce limbă este creată fisierul dat.

Puteți crea un fișier în modul descris mai sus în orice editor de text, de exemplu, în NotePad, care este deja instalat cu grijă în operare sistem Windows(TextEdit pe Mac). editorul Microsoft Word este mai bine să nu-l folosim, pentru că formatează textul și nu avem deloc nevoie de el în această situație.

Deci, iată codul de adăugat:

Iar sub acest cod, fă modificările pe care le cere sufletul tău creativ. Nu trebuie să adăugați etichete PHP de închidere la sfârșit. În acest caz, titlul, descrierea și adresa URL vor fi afișate în panoul de administrare. Și, desigur, puteți înlocui informațiile „ClubWP” cu propriile informații.

După aceea, rămâne doar să împachetați fișierul creat într-o arhivă zip și să îl trimiteți la ftp-ul site-ului dvs. În viitor, în acest fel veți putea face orice modificări la pluginul dvs.

Într-un mod simplu, vei crea un plugin simplu pentru nevoile tale.

2) Pluginul pentru fragmente de cod

Dacă metoda descrisă mai sus este dificilă pentru dvs. sau sunteți o persoană foarte practică și sunteți obișnuit să obțineți rezultate mai rapid, Code Snippets a fost creat special pentru dvs. La fel ca și caracteristica descrisă mai sus, pluginul vă adaugă codul cu posibilitatea de a-l edita în continuare fără a utiliza tema.

După instalarea pluginului, în panoul de administrare va apărea o nouă fereastră „Fragmente”, în care, în consecință, puteți adăuga noi fragmente. Pentru care puteți introduce codul și informații despre scopul acestuia.

Astfel, puteți: activa sau dezactiva codul personalizat sub formă de pluginuri. Foarte comod și practic, pentru că. uneori sunt posibile conflicte cu temele și pluginurile și puteți înțelege cu ușurință acest lucru și puteți dezactiva codul generat.

3) Editarea Functions.php al temei copil

Dacă utilizarea pluginurilor nu vă convine și trebuie să faceți o schimbare direct la tema site-ului dvs., atunci această metodă este pentru dvs. Vă reamintesc că puteți face asta doar cu teme pentru copii.

Pentru a folosi această metodă, vă ofer șablonul meu funcții.php tema copilului. Dezarhivați și editați fișierul stil.css(numele șablonului și importarea adresei URL)

P.S.Încercați tot posibilul pentru a vă ușura viața în viitor, în ceea ce privește partea dificilă a remedierii erorilor și editarea codului personalizat, după cum este nevoie.

Într-o zi te-ai hotărât să-ți creezi propriul site web sau blog și ai ales WordPress pentru sistemul de management... Odată cu trecerea timpului, site-ul tău devine din ce în ce mai ușor de citit și apoi ai realizat că pentru o popularitate și mai mare trebuie să adaugi niște funcționalități pe site sau doar automatizați o parte din acțiunea respectivă.

Te duci la „depozitul” de pluginuri pentru wordpress și descoperi că pluginul de care ai nevoie nu este acolo. Ce să fac? Cum să fii? Dacă sunteți cel puțin puțin familiarizat cu elementele de bază ale programării în php, layout, atunci nu vă va fi dificil Scrieți propriul plugin pentru WordPress.

Și acum să mergem la „bucătărie” să ne pregătim pluginul.

P.s. Dacă nu aveți cunoștințe în php și layout... nu vă supărați, cereți pe cineva să vă scrie funcționalitatea necesară 🙂

Înainte de a începe să scrieți un plugin, trebuie să vă referiți la documentația WordPress, care descrie principiile de bază ale scrierii pluginurilor și câteva exemple de cod.

Nu voi duplica aceste informații, dar voi trece imediat direct la scrierea codului.

Să scriem un plugin simplu care vă va permite să salvați și să afișați recenzii despre site-ul dvs. Desigur, există deja astfel de pluginuri, dar, de exemplu, se va descurca bine.

Primul lucru pe care îl vom face este să găsim un nume unic pentru pluginul nostru - " AdvUserReviews«.

Apoi, să creăm un nou director numit „advuserreviews” în directorul „/wp-content/plugins/” al site-ului tău. Și în el vom crea fișierul „advuserreviews.php”. Acesta va fi fișierul principal care va fi responsabil pentru inițializarea generală. (De preferință utilizați codificarea UTF-8 pentru fișiere).

La începutul fișierului, trebuie să specificați informații de bază despre plugin

Acum, dacă mergi la panoul de control, poți vedea că sistemul a găsit un nou plugin și se oferă să-l activeze. Dar este încă prea devreme pentru a face asta.

Vom scrie noul nostru plugin în stilul OOP și toată prelucrarea datelor va fi într-un singur fișier. Să creăm cadrul principal al fișierului.

// Opriți apelul direct if(preg_match("#" .basename(__FILE__) . "#", $_SERVER["PHP_SELF"])) ( die("Nu aveți voie să apelați direct această pagină."); ) if (!class_exists("AdvUserReviews")) ( clasa AdvUserReviews ( // Stocarea datelor interne public $date = array(); // Constructor obiect // Inițializarea funcției principalelor variabile AdvUserReviews() ( ) ) ) global $rprice; $rprice = new AdvUserReviews();

Acum adăugați următorul cod la constructorul de obiecte:

Funcția AdvUserReviews() ( global $wpdb; // Declarați constanta noastră de inițializare a pluginului DEFINE("AdvUserReviews", true); // Numele fișierului nostru de plugin $this->plugin_name = plugin_basename(__FILE__); // URL pentru pluginul nostru $ this->plugin_url = trailingslashit(WP_PLUGIN_URL."/".dirname(plugin_basename(__FILE__))); // Tabel pentru stocarea recenziilor noastre // variabila $wpdb trebuie declarată global $this->tbl_adv_reviews = $wpdb->prefix "adv_reviews"; // Funcție care este executată când pluginul este activat register_activation_hook($this->plugin_name, array(&$this, "activate")); // Funcție care este executată când pluginul este dezactivat register_deactivation_hook($this ->plugin_name, array (&$this, "deactivate")); // Funcție care este executată când pluginul este dezinstalat register_uninstall_hook($this->plugin_name, array(&$this, "uninstall")); )

În constructorul de obiecte, folosim 3 „cârlige” sau „cârlige” (ce este?): cârlig_de_activare, register_deactivation_hookȘi register_uninstall_hook- acestea sunt funcțiile care se execută atunci când pluginul este activat, dezactivat și respectiv eliminat.

Acum să implementăm aceste funcții direct.

/** * Activare plugin */ function activate() ( global $wpdb; require_once(ABSPATH . "wp-admin/upgrade-functions.php"); $table = $this->tbl_adv_reviews; // Determinați versiunea mysql dacă ( version_compare(mysql_get_server_info(), "4.1.0", ">=")) ( dacă (! empty($wpdb->charset)) $charset_collate = "SET DE CARACTERE DEFAULT $wpdb->charset"; dacă (! empty( $wpdb->colate)) $charset_collate .= " COLLATE $wpdb->colate"; ) // Structura tabelului nostru de revizuire $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` TEXT NOT NULL, `review_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `review_user_name` VARULL(20_reemail`) NULL(20_review`) VARCHAR(200) NULL, CHEIE PRIMARĂ (`ID`))".$charset_colate.";"; // Verificați dacă tabelul există dacă ($wpdb->get_var("arată tabele ca "".$table."" " ) != $table) ( dbDelta($sql_table_adv_reviews); ) ) /** * Deact invocare plugin */ function deactivate() ( returneaza adevarat; ) /** * Eliminați pluginul */ function uninstall() ( global $wpdb; $wpdb->query("DROP TABLE IF EXISTIS ($wpdb->prefix)adv_reviews"); )

Variabil $wpdb este responsabil pentru interogările la baza de date. Funcţie dbDelta analizează structura curentă a tabelului, o compară cu structura dorită a tabelului și fie adaugă, fie modifică tabelul după cum este necesar.

În consecință, atunci când pluginul este activat, este creată o structură de tabel pentru stocarea recenziilor. Când pluginul este dezactivat, nu are loc nicio acțiune, dar când îl ștergem, ne ștergem tabelul. Acțiuni mai detaliate pot fi înțelese din codul sursă.

Structura de bază a noului plugin este gata. Acum trebuie să începem să scriem partea funcțională. Pentru a face acest lucru, trebuie să adăugăm următoarele linii de cod la constructorul clasei:

// Dacă suntem în admin. interfață if (is_admin()) ( // Adăugați stiluri și scripturi add_action("wp_print_scripts", array(&$this, "admin_load_scripts")); add_action("wp_print_styles", array(&$this, "admin_load_styles")); // Adăugați un meniu pentru plugin add_action("admin_menu", array(&$this, "admin_generate_menu")); ) else ( // Adăugați stiluri și scripturi 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")); )

Să aruncăm o privire mai atentă la această secțiune de cod. Să începem cu panoul de administrare.
Funcția " este_admin» verifică în ce mod lucrăm în prezent - pe site sau în panoul de control.
În continuare, se folosesc mai multe cârlige, pentru funcții:

  • wp_print_scripts- Adăugați fișierele javascript necesare
  • wp_print_styles- Adăugați stilurile necesare
  • meniul_admin- Adăugați un nou meniu în panoul de control

Fiecare cârlig corespunde unei metode implementate în clasa noastră. în care se execută operaţiile necesare.
Luați în considerare codul pentru conectarea stilurilor și scripturilor

/** * Încărcați scripturile necesare pentru pagina de administrare * în panoul de administrare */ function admin_load_scripts() ( // Înregistrați scripturi 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"); // Adăugați scripturi la pagina wp_enqueue_script("advReviewsAdminJs"); wp_enqueue_script("jquery"); ) /** * Se încarcă stilurile necesare pentru pagina de administrare * în panoul de administrare */ function admin_load_styles() ( // Înregistrează stiluri wp_register_style("advReviewsAdminCss", $this->plugin_url . "css/admin-style.css") ; // Adăugați stiluri wp_enqueue_style( "advReviewsAdminCss"); )

Următoarele funcții sunt utilizate aici.

Fiecare acțiune depinde de parametrul „acțiune” trecut, respectiv „editare” - editarea recenziei, „trimitere” - salvarea recenziei editate și „ștergerea” - ștergerea recenziei.

Datele sunt schimbate cu paginile de afișare prin proprietatea „date” a obiectului. Codul sursă al acestor pagini va fi postat în arhiva cu acest modul la sfârșitul articolului. Aici nu le voi insera, deoarece subiectul s-a dovedit deja destul de mare.

Aceasta încheie panoul de administrare și trece la afișarea și adăugarea feedback-ului de la utilizatori.

Pentru a spune wordpress când să apelăm pluginul nostru, trebuie să înregistrăm un „shortcode”, care a fost făcut în constructorul clasei noastre. Mai multe despre asta.

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

Acum, pe orice pagină a site-ului, puteți plasa acest cod și va forța funcția pe care am specificat-o (transmisă ca al doilea parametru) să se execute. Mai jos este codul sursă pentru această funcție.

/** * Lista recenziilor site-ului */ public function site_show_reviews($atts, $content=null) ( global $wpdb; if (isset($_POST["action"]) && $_POST["action"] == " add-review") ( $this->add_user_review(); ) // Selectați toate recenziile din baza de date $this->data["reviews"] = $wpdb->get_results("SELECT * FROM `" . $this- >tbl_adv_reviews . "`", ARRAY_A); ## Activați bufferingul de ieșire ob_start (); include_once("site_reviews.php"); ## Obțineți date $output = ob_get_contents (); ## Dezactivați tamponarea ob_end_clean (); return $output ; ) funcție privată add_user_review() ( global $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"]),); // Adăugați o nouă recenzie pe site $wpdb->insert( $this-> tbl_adv_reviews, $inputData); )

În principiu, nu este nimic complicat aici - se face o interogare SQL pentru a selecta datele, dar dacă parametrul „acțiune” este trecut, atunci se adaugă mai întâi o nouă revizuire. Dar ar trebui să acordați atenție tamponării de ieșire. Este necesar pentru a obține datele paginii introduse.

Asta e de fapt tot. Acum puteți vedea ce avem. A descărcați pluginul și codurile sursă poti aici.

Desigur, acesta este doar un exemplu de creare a unui plugin, dar va funcționa și ca o simplă cameră de oaspeți dacă este ușor modificat, de exemplu, adăugând protecție împotriva boților și paginare. Codare fericită :)

Formular site:

Panoul de control al pluginului:

Editare recenzie:

Ați putea fi interesat și de:


Lizibilitatea codului este un subiect foarte dureros și trebuie să i se acorde atenția cuvenită. În acest articol, vei afla despre 16 trucuri care te vor ajuta să avansezi în acest subiect.

1. Comentarii și documentație

IDE-urile devin din ce în ce mai populare în lumea dezvoltatorilor oferă instrumente utile pentru comentarea și documentarea codului.

Iată un exemplu:

Iată un alt exemplu de apelare a propriei metode:

În acest exemplu, stilul de comentare se bazează pe PHPDoc, iar IDE-ul pe care îl folosesc este Aptana.

2. Indentare

Presupun că știți deja importanța indentării în codul dvs. În general, există mai multe stiluri de formatare a codului.

Funcția foo() (if ($poate) (do_it_now(); again(); ) else (abort_mission(); ) finalize(); )

Funcția foo() (if ($poate) (do_it_now(); again(); ) else (abort_mission(); ) finalize(); )

Funcția foo() (if ($poate) (do_it_now(); again(); ) else (abort_mission(); ) finalize(); )

Personal, folosesc cel mai des stilul numărul 2, dar uneori merg la numărul 1. Dar totul este o chestiune de gust, desigur. Cel mai probabil nu există un stil „cel mai bun” care să se potrivească absolut tuturor. Aceste reguli, în primul rând, trebuie să fie respectate de cei care lucrează în echipă sau participă la scrierea proiectelor open source.

Există și stiluri care combină unele caracteristici. De exemplu, standardele de codare PEAR, unde acolada „(” rămâne pe aceeași linie în instrucțiunile condiționate, dar este învelită în funcții.

stil PEAR:

Funcția foo() ( // pe o linie nouă if ($poate) ( // pe aceeași linie do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

De asemenea, rețineți că acest stil folosește 4 spații în loc de file.

Puteți afla mai multe despre diferite stiluri.

3. Evita comentariile inutile

Da, comentariul de cod este bun; cu toate acestea, nu este nevoie să exagerați. Iată un exemplu:

// obține codul de țară $country_code = get_country_code($_SERVER["REMOTE_ADDR"]); // dacă țara este SUA dacă ($country_code == "US") ( // afișează formularul echo form_input_state(); )

Dacă munca codului este evidentă, atunci cel mai probabil nu ar trebui să scrieți comentarii inutile.

Dacă nu sunt deja disponibile, atunci le puteți scurta puțin:

// afișează formularul dacă țara este US $country_code = get_country_code($_SERVER["REMOTE_ADDR"]); if ($cod_țară == „SUA”) ( echo form_input_state(); )

4. Gruparea codurilor

Cel mai adesea, unele sarcini necesită scrierea mai multor linii de cod. Prin urmare, cel mai bine este să combinați astfel de sarcini în blocuri separate separate prin spații.

Iată un exemplu simplu:

// obține lista de forumuri $forums = array(); $r = mysql_query("SELECT ID, nume, descriere FROM forums"); while ($d = mysql_fetch_assoc($r)) ( $forumuri = $d; ) // încărcă șablon load_template("header"); load_template("listă_forum",$forumuri); load_template("subsol");

Dacă adăugați un comentariu înainte de începutul fiecărui bloc, acesta va îmbunătăți și mai mult lizibilitatea codului dvs.

5. Schema de numire

Uneori, chiar și în limbajul PHP puteți găsi inconsecvențe în denumirea funcțiilor. Și iată numeroase exemple:

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

Există mai multe stiluri populare:

  • camelCase: prima literă a fiecărui cuvânt nou este scrisă cu majuscule.
  • underscores: subliniere între cuvinte: mysql_real_escape_string().

Dacă amesteci aceste tehnici, atunci mai devreme sau mai târziu poți ajunge într-o situație incomodă. Dacă lucrați la un proiect care utilizează una dintre aceste tehnici, atunci ar trebui să urmați exemplul. Poate depinde în continuare de limbajul de programare. De exemplu, majoritatea dezvoltatorilor Java folosesc camelCase, în timp ce dezvoltatorii PHP preferă caracterele de subliniere.

Dar nici aici nu a fost fără un hibrid. Unii dezvoltatori folosesc caractere de subliniere în denumirea claselor și metodelor (în afara claselor), iar în alte cazuri folosesc camelCase:

Clasa Foo_Bar (funcția publică someDummyMethod() ( ) ) funcția procedural_function_name() ( )

Încă o dată, voi spune că nu există un stil mai bun. Trebuie doar să te ții de ceva.

6. Principiul USCAT

USCAT (nu te repeta) Cunoscut și sub numele de DIE: Duplicarea este rău.

Sarcina principală a oricărui sistem, fie că este o aplicație web sau altceva, este să automatizeze sarcini repetitive. Acest principiu trebuie urmat mereu și oriunde, mai ales dacă ești dezvoltator. Aceeași bucată de cod nu trebuie repetată iar și iar.

De exemplu, majoritatea aplicațiilor web constau din una sau mai multe pagini. Este clar că aceste pagini vor conține aceleași elemente. Antet, subsol - cele mai izbitoare exemple. Ai fi surprins câți oameni încă mai dublează aceste elemente pe fiecare pagină.

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

7. Evitați cuibărirea adâncă

Lizibilitatea codului este redusă drastic dacă aveți imbricare adâncă.

Funcția do_stuff() ( // ... dacă (este_scris($dosar)) ( dacă ($fp = fopen($cale_fișier,"w")) ( dacă ($lucru = obține_une_lucru())) ( dacă (fwrite($) fp,$lucruri)) ( // ... ) else ( returnează fals; ) ) else ( returnează fals; ) ) else ( returnează fals; ) ) else ( returnează fals; ) )

Pentru a corecta situația, ar trebui să reconsiderați modul în care funcționează codul și să-l optimizați:

Funcția do_stuff() ( // ... if (!is_writable($folder)) ( return false; ) if (!$fp = fopen($file_path,"w")) ( return false; ) if (!$stuff) = get_some_stuff()) ( returnează fals; ) if (fwrite($fp,$stuff)) ( // ... ) else ( returnează fals; ) )

8. Limita de lungime a liniei

Toată lumea știe că procesul de citire devine mult mai plăcut atunci când textul este împărțit în coloane. Acesta este motivul principal pentru care ziarele noastre arată astfel:

O tehnică similară poate fi aplicată codului nostru:

// rău $my_email->set_from(" [email protected]")->add_to(" [email protected]")->set_subject("Metode înlănțuite")->set_body("Un mesaj lung")->send(); // ok $my_email ->set_from(" [email protected]") ->add_to(" [email protected]") ->set_subject("Metode înlănțuite") ->set_body("Un mesaj lung") ->send(); // bad $query = "SELECT ID, nume de utilizator, prenume, nume, stare FROM utilizatori LEFT JOIN user_posts UTILIZAȚI (users.id, user_posts.user_id) WHERE post_id = "123""; // bad $query = "SELECT id, username, first_name, last_name, status FROM utilizatorii LEFT JOIN user_posts USING(users.id, user_posts.user_id) WHERE post_id = "123"";

Majoritatea dezvoltatorilor respectă limita de 80 și 120 de caractere.

9. Organizarea fișierelor și folderelor

Din punct de vedere tehnic, puteți pune tot codul aplicației într-un singur fișier :) Dar ce veți face când trebuie să schimbați sau să adăugați ceva.

Îmi amintesc de primele mele proiecte în care am atașat fișiere. Cu toate acestea, organizația mea a fost foarte șchiopătătoare. Am creat un folder „inc” în care am plasat mai multe fișiere: db.php și functions.php. În procesul de scriere a aplicației, acest folder a fost umflat și umflat și până la urmă a fost greu de înțeles ce era unde.

Pentru a rezolva această problemă, este mai bine să folosiți diferite tipuri de cadre sau cel puțin să rămâneți la structura lor. Iată cum arată proiectul pe CodeIgniter:

10. Denumiri de variabile

În general, numele variabilelor ar trebui să fie pe deplin semnificative - acest lucru este ideal. Se poate face o excepție pentru variabilele temporare.

Să ne uităm la câteva exemple:

// $i bucle for 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 și $d pentru mysql $q = "SELECT * FROM table"; $r = mysql_query($q); while ($d = mysql_fetch_assocr($r)) ( ) // $fp pentru lucrul cu fișiere $fp = fopen("file.txt","w");

11 - Scrieți cuvintele cheie în SQL cu majuscule

Majoritatea aplicațiilor web interacționează cu bazele de date. Dacă scrieți singur interogări SQL, atunci trebuie și ele formatate corespunzător... Nu este nimic complicat aici. Doar scrieți cuvintele cheie cu majuscule.

12. Separați codul și datele

Acesta este un alt principiu care vă va ajuta să scrieți programe mai curate. Constă în faptul că pregătești datele într-un loc (să zicem modele) și interacționezi cu ele în altul.

Când PHP a început, era mai degrabă ca un sistem de șabloane. Proiectele în acest limbaj conțineau cod HTML și PHP mixt. Acum totul s-a schimbat și toată lumea ar trebui să treacă la un nou nivel de aplicații de scriere.

Puteți lucra pentru dvs. un stil special sau puteți folosi cele mai populare mijloace până în prezent.

Framework PHP populare:

Sisteme de șabloane:

CMS popular

13. Sintaxă specială pentru șabloane

Dacă nu doriți să utilizați sistemul de șabloane, atunci cel mai probabil va trebui să vă dezvoltați propriul stil de injectare a codului PHP în HTML.

Și iată un exemplu:

Buna ziua, nume de utilizator; ?>
|

Mesajul meu

titlu; ?>

Forumuri ca $forum): ?>

id, $forum->titlu) ?> (fire->count(); ?> fire)

Descriere; ?>

Această tehnică vă va permite să evitați parantezele suplimentare. De asemenea, un astfel de cod se potrivește bine în contextul HTML.

14. Abordări procedurale și orientate pe obiect

Programarea orientată pe obiecte vă va ajuta să rămâneți la o structură mai mult sau mai puțin clară, dar asta nu înseamnă că ar trebui să vă abateți de la principiile procedurale de scriere a aplicațiilor.

Obiectele sunt excelente pentru reprezentarea datelor. Exemplu:

Clasa Utilizator ( public $nume de utilizator; public $nume_de_nume; public $nume_de_nume; public $email; public function __construct() ( // ... ) public function create() ( // ... ) public function save() ( / / ... ) funcție publică șterge () ( // ... ) )

Metodele procedurale au propriile lor beneficii specifice.

Funcția capitalize($șir) ( $ret = strtoupper($șir); $ret .= strtolower(substr($șir,1)); return $ret; )

15. Citiți codul sursă deschisă

De obicei, proiectele Open Source sunt scrise de un număr mare de dezvoltatori. Din acest punct de vedere, studierea codului scris în proiecte similare te poate ajuta să câștigi experiență. Așa că nu-ți pierde timpul cu asta.

16. Refactorizare

Refactorizarea înseamnă schimbarea codului fără a pierde funcționalitatea. Poate fi folosit și pentru a îmbunătăți lizibilitatea.Nu există loc pentru remedierea erorilor sau adăugarea de funcționalități. Doar schimba puțin structura codului tău.

Sper că acest articol v-a fost de ajutor! Am pierdut ceva? Împărtășește-ți experiența!

WordPress.com nu permite utilizarea codului potențial periculos în blog, dar este posibil să se publice codul sursă pentru vizualizare. Am creat o etichetă care păstrează formatarea codului sursă și chiar oferă evidențierea sintaxei pentru unele limbi. Exemplu:

#button (greutatea fontului: bold; chenar: 2px solid #fff; )

Pentru a obține un rezultat similar cu fragmentul de mai sus, împachetați codul în aceste etichete:

Codul tau

Parametrul „limbă” specifică regulile de evidențiere a limbii și a sintaxei. Sunt acceptate următoarele valori:

  • Actionscript3
  • fuziune la rece
  • csharp
  • delphi
  • erlang
  • fsharp
  • Macabru
  • javascript
  • javafx
  • matlab
  • powershell
  • piton
  • scala

Dacă valoarea parametrului „limbă” nu este setată, se utilizează valoarea „text” (fără evidențierea sintaxelor).
Codul dintre etichetele „cod” va fi codificat automat pentru afișare, așa că nu trebuie să vă faceți griji cu privire la elementele HTML sau ceva de genul.

Opțiuni de configurare

Etichetele acceptă, de asemenea, multe opțiuni de configurare pe care le puteți utiliza pentru a personaliza aspectul și senzația. Utilizarea lor este complet opțională.

  • autolinks (adevărat/fals) - Fiecare URL din cod este redată ca hyperlink. Valoare implicită: true.
  • colaps (adevărat/fals) - Dacă este setată la adevărat, zona de cod se va restrânge la încărcarea paginii. Pentru a-l extinde, va trebui să faceți clic pe el. Acest lucru este util pentru fragmente de cod mari. Valoarea implicită este false.
  • prima linie (număr) - Specifică numărul de la care începe numerotarea liniilor. Valoare implicită: 1.
  • gutter (adevărat/fals) - Dacă este setat la fals, numerele liniilor vor fi ascunse. Valoare implicită: true.
  • evidențiere (numerele separate prin virgule) - numerele de linie care trebuie evidențiate, de exemplu „4,7,19”.
  • hmtlscript (adevărat/fals) - Dacă este setat la adevărat, se realizează evidențierea codului HTML/XML. Acest lucru este util când se publică cod mixt, cum ar fi PHP, în interiorul HTML. Funcționează numai cu unele limbi. Valoare implicită: false.
  • light (adevărat/fals) - Dacă este setată la adevărat, numerele de rând și bara de instrumente vor fi ascunse. Acest lucru este util atunci când postați un fragment de cod de una sau două rânduri. Valoare implicită: false.
  • padlinenumbers (adevărat/fals/întreg) - Vă permite să controlați umplutura numerelor de linii cu zerouri. Valoarea adevărată setează completarea automată, valoarea falsă dezactivează completarea, numărul setează un număr fix de caractere pentru numerele de rând.
  • bara de instrumente (adevărat/fals) - Dacă este setată la fals, nu va apărea nicio bară de instrumente cu butoane când treceți cu mouse-ul peste cod. Valoare implicită: true.
  • wraplines (true/false) - Dacă se setează la false, încadrarea liniei va fi dezactivată. Dacă există linii lungi, va apărea o bară de defilare orizontală.
  • titlu (șir) – titlu pentru cod. Poate fi util în combinație cu opțiunea de restrângere.

Exemple de utilizare a parametrilor de mai sus:

Această linie nu este evidențiată. Această linie este evidențiată. Această linie este evidențiată. Această linie nu este evidențiată. Acesta este un fragment de cod scurt cu numere de rând cu zerouri de până la 4 caractere. //În acest exemplu, împachetarea liniilor este dezactivată. Pentru a citi textul în întregime, va trebui să utilizați bara de defilare. În plus, acest exemplu dezactivează numerotarea liniilor și ascunde bara de instrumente.

Și aceasta este o bucată mai mare de cod. Aici este selectat PHP și rândul numărul 12 este evidențiat.

Exemplu de cod WordPress.com

Exemplu de cod WordPress.com

Această linie este evidențiată. Foarte-foarte-foarte-foarte-foarte-foarte-foarte-foarte-foarte-foarte-foarte-foarte-foarte-foarte-foarte-foarte-foarte-foarte-foarte-foarte lungă.
Acesta este un exemplu de file inteligente.
wordpress.com

Mulțumiri
Pentru a implementa această caracteristică, este utilizat proiectul SyntaxHighlighter (autorul Alex Gorbatchev). Utilizatorii pot seta corespunzătoare

Salutări, prieteni. Astăzi ne vom da seama cum să facem ca orice cod PHP să funcționeze în widget-uri, articole și pagini WordPress. În mod implicit, o astfel de funcție nu este disponibilă în acest CMS, iar maximul pe care se poate baza un utilizator este introducerea codului HTML.

De ce codul PHP nu funcționează implicit

S-ar părea de ce dezvoltatorii nu au recompensat un motor atât de popular și convenabil cu funcții utile pentru execuția automată a codului PHP. La început m-am gândit la asta, dar am ajuns la concluzia că o astfel de politică se realizează dintr-o poziție de securitate, deoarece utilizarea ineptă a PHP în widget-uri sau în înregistrările din interior poate duce la consecințe ireparabile - ceva se va sparge în baza de date și tot site-ul va mormăi.

Prin urmare, lucrul cu PHP este la cheremul programatorilor sau a oamenilor care sunt mai mult sau mai puțin avansați în această chestiune - orice scripturi sunt executate direct în fișiere.

Pentru site-urile publice (unde există mai mulți autori), executarea PHP în corpul articolului crește riscul de sabotaj deliberat, deoarece orice autor poate obține acces deplin la site prin fereastra de editare a articolului.

În funcție de gradul de pericol, aș împărți toată această situație în 3 niveluri:

  1. Este dificil să lăsați totul așa cum au intenționat dezvoltatorii - este dificil să deteriorați site-ul în siguranță, accidental sau intenționat.
  2. Permite execuția PHP în widget-uri - nivel de severitate mediu, doar administratorul site-ului are acces.
  3. Folosirea codului peste tot este periculoasă, deoarece oricine are voie să editeze articole și pagini (moderatori, autori) poate gestiona site-ul

Pentru ce este PHP în widget-uri?

Întrebarea este individuală, deoarece orice poate fi implementat folosind acest limbaj de programare. Personal, am fost solicitat să scriu această postare printr-o comandă de la un client al cărui site îl construiesc în prezent. Pe acesta, a fost necesar să afișați în bara laterală într-un widget separat o listă de știri dintr-un singur titlu - „Știri”. Nu există o astfel de opțiune în widget-urile standard WordPress.

Întrebarea era între găsirea unui plugin cu capabilitățile adecvate sau utilizarea unui cod PHP simplu. Scriptul pentru o astfel de sarcină este foarte mic și nu am vrut să încarc site-ul cu un plugin suplimentar care să nu fie folosit nicăieri altundeva.

În general, permițând execuția PHP, putem rezolva 2 probleme:

  • Înlocuiți o parte din pluginurile site-ului cu scripturi și reduceți încărcarea de găzduire în acest fel;
  • Implementați funcții pentru care plugin-uri încă nu există.

În prima etapă, voi vorbi despre widget-uri, iar apoi, într-un bloc separat, despre afișarea codului în conținut.

Pluginuri pentru PHP în widgeturi

Avantajul pluginurilor: La schimbarea temei WordPress, funcționarea funcțiilor adăugate șablonului nu este perturbată, totul continuă să funcționeze fără a necesita intervenția webmasterului. Cârligele adăugate șablonului la schimbarea temei vor trebui transferate manual pe cel nou.

În exemplul meu de mai sus, fac un site web pentru un client și dacă dorește să schimbe singur designul, vor dispărea setările care se fac prin fișierele functions.php și altele, așa că îl fac cât mai ușor pt. el să gestioneze site-ul, bazându-se pe pluginuri (mai ales în nișa sa traficul este mic și încărcarea nu va fi prea mare).

Widget de cod PHP

Folosesc acest plugin în munca mea de mult timp, adaugă un widget la lista de widget-uri disponibile, similar unui text obișnuit, capabil doar să proceseze PHP pe lângă text și HTML.

PHP Code Widget este prezent în depozitul oficial WordPress, ușor de găsit după nume. Cum se instalează astfel de pluginuri.

Nu sunt necesare setări, widgetul va apărea în listă imediat după instalarea și activarea pluginului. Trageți „Codul PHP” în bara laterală și adăugați orice script acolo.

PHP în widgetul WordPress fără plugin

În acest caz, avem nevoie de un cârlig care va înlocui functie standard, care oferă munca unui widget WordPress text, o funcție care permite procesarea PHP.

Acest cârlig este adăugat la fișierul functions.php al temei curente (la sfârșit înainte de acolada de închidere?>). După aceea, noi opțiuni de widget, ca și în cazul pluginului, nu apar, codurile PHP încep să funcționeze în text standard.

Cod finalizat:

Add_filter("widget_text"," text_html_php_widget ",100); funcția text_html_php_widget($text) ( if(strpos($text,"„.$text); $text = ob_get_contents(); ob_end_clean(); ) returnează $text; )

Prima linie este un filtru care înlocuiește funcția standard text widget cu una nouă, text_html_php_widget, la fiecare apel, iar apoi urmează descrierea celei mai noi funcții.

De ce codul PHP în articole și postări WordPress

În interiorul postărilor, codul PHP executabil este necesar mult mai rar decât în ​​widget-uri, așa că în prima parte a articolului am considerat bara laterală separat, astfel încât să puteți evita includerea inutil de funcții potențial periculoase.

Dar chiar și în postări este nevoie să folosiți scripturi. Cel mai comun exemplu este ieșirea unui sitemap fără un plugin. Adevărat, puteți folosi o altă tehnică pentru hartă - faceți un șablon de pagină special (acesta este un subiect separat).

Odată am avut nevoie de output PHP pentru următorul scop:

Am facut un site video. Episoadele serialului au fost afișate în playlisturi pe sezon și a fost necesar să afișați o listă de episoade sub fiecare playlist al sezonului cu un link către pagina dvs. Arată ca o hartă a site-ului, doar mai complicată - concluzia trebuia făcută prin liste de titluri individuale. A fost posibil să scrieți manual fiecare link cu cod HTML, dar există câteva sute de serii și procedura este tristă. Mai mult, atunci când apare o nouă serie, un link către aceasta ar trebui adăugat manual - incomod. Așa că am decis să folosesc funcțiile PHP pentru implementare.

Plugin pentru executarea PHP în conținutul Exec-PHP

În ciuda faptului că acest plugin nu a fost actualizat de 7 ani, face o treabă excelentă. Și l-am ales dintr-un motiv - nu folosește coduri scurte, precum concurenții, dar vă permite să introduceți în postări cod wordpressîn forma sa cea mai pură, din .

Pluginul Exec-PHP se află în depozit și este instalat prin meniul din panoul de administrare al motorului.

Dintre setări, există doar una - permisiunea / interdicția de a executa cod într-un widget text, nu există posibilitatea de a dezactiva lucrul în postări și pagini, dacă trebuie să îl eliminați - dezactivați pluginul.

Pentru a introduce cod PHP într-un articol, acesta trebuie să fie comutat în modul HTML (fila „Text”). Este posibil ca modul vizual să strice codul.

Executarea codului PHP în articolele WordPress fără un plugin

Prin analogie cu widget-urile, putem înlocui pluginul cu o funcție specială care permite execuția Scripturi PHP in continut. Din păcate, nu am putut găsi o opțiune în care codul să funcționeze automat, ca în cazul pluginului, reacționând la etichete. Este necesar un cod scurt. Cunoștințele mele despre PHP nu au fost suficiente pentru auto-scriere funcția dorită, pentru sim il aduc asa cum este. Lucrul cu un shortcode are un dezavantaj semnificativ care complică munca, despre care voi discuta mai jos.

Cum să lucrați cu funcția de mai jos

  1. Lipiți-l în fișierul functions.php al temei;
  2. În locul potrivit în articol, inserăm o construcție - cod executabil fără

Funcţie:

/* Porniți php în articole și pagini WordPress: cod */ function start_php($matches)( eval("ob_start();".$matches."$inline_execute_output = ob_get_contents();ob_end_clean();"); return $inline_execute_output ; ) funcția inline_php($conținut)( $conținut = preg_replace_callback("/\(((.|\n)*?)\[\/startphp\]/", "start_php", $conținut); $conținut = preg_replace( "/\(((.|\n)*?)\[\/startphp\]/", "$1", $conținut); return $content; ) add_filter("the_content", "inline_php");

Defect

Dacă există inserare HTML sau text în interiorul codului PHP inserat, atunci nu va funcționa. Orice text sau etichete vor trebui introduse folosind comanda echo, ceea ce nu este întotdeauna convenabil. Adică, codul trebuie să fie în format corect PHP-shny 100.

Dreapta

Echo „Acest lucru va funcționa”;

Gresit

Echo „Această linie este corectă”; Asta nu va funcționa

În pluginul Exec-PHP, nu există o astfel de problemă - vor fi executate atât textul, cât și HTML, dar toate elementele codului PHP trebuie să fie încadrate în etichetele corespunzătoare.

Pentru mulți webmasteri, tema descrisă în acest articol deschide posibilități infinite pentru creativitate - puteți implementa ceea ce nu puteați face înainte, precum și să scăpați de o mulțime de plugin-uri, înlocuindu-le cu diferite filtre, funcții și cârlige.



Se încarcă...
Top