Cu siguranță, ați întâmpinat de mai multe ori nevoia de a adăuga o bucată de cod pe site-ul dvs. WordPress pentru a adăuga funcționalități noi. Nu mă refer la scripturile Google Analytics pe care le inserați în partea de antet a temei dvs. Nu. Vorbesc despre acele mici fragmente de cod pe care le-ai găsit pe forumurile de pe Internet și ai alergat imediat să le adaugi în fișierul tău. funcții.php.

Să fim sinceri, ai făcut asta măcar o dată, nu? Și acest lucru este de înțeles, pentru că a fost scris pe forum - adăugați acest cod la functions.php al temei dvs. WordPress.

Adevărul este că adăugarea fiecărui cod pe care îl găsiți pe Internet la functions.php este nu este întotdeauna o idee bună. O soluție mai sigură ar fi să vă creați propriul mini plugin personalizat cu acest cod.

În acest tutorial, vă vom spune în ce cazuri puteți adăuga cod la functions.php și în ce cazuri este mai bine să utilizați un plugin separat. Vă vom arăta, de asemenea, cum puteți crea un plugin personalizat și să adăugați propriul cod la acesta.

Ce este functions.php

Dacă ați parcurs vreodată fișierele site-ului dvs. WordPress, este posibil să fi întâlnit mai multe fișiere functions.php. Fișierul functions.php despre care vom vorbi în acest tutorial se află în folderul: wp-contentthemesyourthemefunctions.php.

Evident, acesta este același fișier care stochează toate funcțiile și setările temei dvs. specifice, activ în prezent. Fiți atenți la cuvântul „activ”, deoarece acesta va fi mesajul principal al acestei lecții.

De ce să folosiți întotdeauna functions.php este o idee proastă

Nu mă înțelege greșit, utilizarea functions.php pentru bucăți mici de cod în câteva rânduri este o situație complet normală. Ceea ce spunem este că nu este o idee bună să folosiți functions.php ca depozit pentru absolut tot codul pe care l-ați adăugat. Aceasta nu este o soluție unică pentru orice situație.

Motivul #1.

Dacă există o actualizare a temei dvs., veți pierde tot ce ați scris în fișierul functions.php. Știu ce tocmai te-ai gândit - dar există unul doar pentru situații ca asta?

Desigur că au. Dar există și mulți oameni care habar n-au ce este o temă de copil. Sau există persoane care ți-au cerut ajutor pentru a adăuga o bucată de cod la tema lor.

De aceea, acest motiv se află pe această listă. Dacă adăugați cod la functions.php fără a utiliza o temă copil, acesta este primul dumneavoastră steag roșu.

Motivul #2.

Chiar dacă ați configurat și utilizați corect o temă copil. Ce se întâmplă dacă doriți să treceți la o altă temă? Sper să adăugați un comentariu la fiecare modificare pe care o faceți în fișierul functions.php, deoarece fără el, trecerea la o altă temă va fi extrem de dureroasă. Cred că ai înțeles ideea.

Motivul #3.

Dacă ai adăugat cod la functions.php care, din senin, îți sparge complet site-ul și rămâi cu un ecran alb gol, vei avea nevoie de un client FTP pentru a descărca funcția ruptă functions.php, edita-l, și încărcați-l înapoi pe site-ul dvs. Plăcerea este așa.

Când să folosiți functions.php

Folosirea corectă a functions.php pentru tema copil activă în prezent este o opțiune validă. Dar amintiți-vă, am subliniat acest cuvânt " activ"?

Dacă adăugați bucăți de cod care vor avea sens numai atunci când lucrați cu acea temă anume, atunci puteți utiliza în siguranță functions.php (într-o temă copil). Iată câteva exemple în care acest lucru ar fi potrivit:

  • Adăugarea unui alt fișier de stiluri (.css) pentru tema dvs
  • Schimbarea lungimii extrasului postării pentru a face site-ul să arate mai bine
  • Adăugarea de fonturi personalizate pentru tema curentă
  • Adăugarea unui fișier de localizare pentru a traduce tema curentă

Cu alte cuvinte, ori de câte ori adăugați sau modificați ceva legat de tema curentă specifică, puteți utiliza în siguranță functions.php.

Când este mai bine să faci fără functions.php

Utilizarea functions.php pentru a adăuga mai multe lucruri și funcții globale de care ați putea avea nevoie teoretic pentru o altă temă este o idee proastă.

Iată câteva exemple când este mai bine să faci fără functions.php:

  • Creați widget-uri personalizate pe care le veți folosi des
  • Crearea de coduri scurte personalizate
  • Adăugarea unui cod care nu depinde de temă (codul Google Analytics etc.)

În astfel de cazuri, este mai bine să salvați acest cod, indiferent de tema dvs. Și puteți face acest lucru cu pluginuri personalizate.

Vă gândiți acum să vă încurcați despre crearea unui plugin când puteți edita functions.php? Este prea dificil! Crede-mă, nu este adevărat. Acest lucru se face foarte ușor și rapid.

Cum să configurați un plugin personalizat în loc de functions.php

Pentru a vă crea propriul plugin personalizat pentru a vă stoca codul, aveți nevoie de:

  1. Creați un fișier text cu codul dvs. și salvați-l ca fișier .php
  2. Împachetați fișierul .php rezultat într-o arhivă .zip
  3. Instalați această arhivă ca un plugin WordPress obișnuit în meniu Pluginuri → Adăugați nou

Gata, doar 3 pași.

Pasul 1. Creați un fișier .php cu codul dvs

Deschideți Notepad pe computer și inserați următorul text:

Desigur, puteți folosi propriul nume pentru plugin în linia Nume plugin:

Salvați fișierul și dați-i un nume unic, astfel încât WordPress să nu confunde pluginul dvs. cu cele deja instalate. De exemplu: wpcafe-custom-functions.php.

Da, nu uitați să selectați tipul de fișier „Toate fișierele” când salvați și să adăugați extensia .php:

Pasul 2. Creați o arhivă .zip

Cred că nu este nevoie de o explicație aici. Doar creați o arhivă .zip cu fișierul dvs. folosind orice arhivator convenabil.

Pasul 3. Instalați ca un plugin obișnuit

Partea cea mai simplă. Doar accesați administratorul WordPress la Pluginuri → Adăugați nouși încărcați arhiva dvs. ca un plugin obișnuit.

Odată ce îl activați, veți putea vedea noul dvs. plugin în lista tuturor celorlalte plugin-uri instalate:

Cum să adăugați propriul cod

Pentru a adăuga propriul fragment de cod, pur și simplu lipiți-l în fișierul .php pe care l-ați creat. Sau puteți face oricând un alt plugin separat pentru două funcții diferite.

De exemplu, așa ar arăta fișierul dvs. .php dacă doriți să faceți un cod scurt „Hello World!”:

Aceste comentarii nu afectează în niciun fel performanța codului dvs. sau viteza de execuție a pluginului. Dar vă vor face mai ușor să navigați și să vă amintiți ce face fiecare caracteristică adăugată.

Doar împachetați comentariul în sintaxa slash și asterisc: /* comentariul tau */

După ce ați făcut modificări codului, puteți reîncărca fișierul .php prin FTP sau pur și simplu puteți crea o nouă arhivă .zip și o puteți încărca ca plugin nou și ștergeți-l pe cel vechi.

Alte moduri de a evita editarea functions.php

În general, dacă sunteți suficient de încrezător în abilitățile dvs. și știți cum să adăugați cod la functions.php, nu ar trebui să aveți dificultăți cu pluginurile personalizate. Nu este nimic complicat aici.

Dar înțelegem foarte bine dacă nu doriți să lucrați manual cu toate acestea. La urma urmei, acesta este WordPress. Prin urmare, s-ar putea să vă fie util să utilizați pluginul gratuit Code Snippets, care vă permite să adăugați cu ușurință codul suplimentar pe site:

Cu acest plugin, puteți adăuga diferite fragmente de cod, le puteți oferi un titlu, o descriere și să activați și să dezactivați selectiv una sau alta parte de cod.

O altă caracteristică interesantă este că puteți importa/exporta fragmentele de cod între site-uri.

Rezultate

Acesta poate părea un mic detaliu, dar plasarea corectă a codului suplimentar vă va permite să comutați între alte teme fără probleme în viitor. De asemenea, puteți activa sau dezactiva această sau acea funcționalitate individual dacă împărțiți fiecare funcție suplimentară între pluginuri separate.

Deci, această metodă chiar merită atenție.

8 răspunsuri

Puteți utiliza șablonul Observator. O modalitate funcțională simplă de a realiza acest lucru:

Concluzie:

Aceasta este aplicația mea CRAZY 4 + 5 = 9 4 * 5 = 20

Note:

În acest exemplu de cod sursă, trebuie să declarați toate pluginurile înainte de codul sursă real pe care doriți să îl extindeți. Am inclus un exemplu despre cum să gestionați una sau mai multe valori transmise pluginului. Cea mai grea parte a acestui lucru este scrierea documentației actuale care listează ce argumente sunt transmise fiecărui cârlig.

Aceasta este doar o modalitate de a crea un sistem de pluginuri în PHP. Există alternative mai bune, vă sugerez să consultați documentația WordPress pentru mai multe informații.

Ne pare rău, se pare că liniuțele de subliniere sunt înlocuite cu obiecte HTML Markdown? S-ar putea să postez din nou acest cod odată ce această eroare este remediată.

Editare: nu contează, apare doar când editați

Deci, să presupunem că nu aveți nevoie de modelul Observer, deoarece necesită să schimbați metodele de clasă pentru a gestiona sarcina de ascultare și doriți ceva generic. Și să presupunem că nu doriți să utilizați moștenirea extinde, deoarece este posibil să vă moșteniți deja clasa de la o altă clasă. Nu ar fi grozav să existe o modalitate generală de a face orice clasă conectabilă fără prea mult efort? Iată cum:

_Class = get_class(&$RefObject); $this->_RefObject = $RefObject; ) funcție publică __set($sProperty,$mixed) ( $sPlugin = $this->_Class . "_" . $sProperty . "_setEvent"; if (is_callable($sPlugin))) ( $mixed = call_user_func_array($sPlugin, $ mixt); ) $this->_RefObject->$sProperty = $mixed; ) funcția publică __get($sProperty) ( $asItems = (matrice) $this->_RefObject; $mixed = $asItems[$sProperty]; $sPlugin = $this->_Class . "_" . $sProperty . "_getEvent"; if (is_callable($sPlugin)) ( $mixed = call_user_func_array($sPlugin, $mixed); ) return $mixed; ) funcția publică __call($ sMethod,$mixed) ( $sPlugin = $this->_Class . "_" . $sMethod . "_beforeEvent"; if (is_callable($sPlugin))) ( $mixed = call_user_func_array($sPlugin, $mixed); ) if ( $mixed != "BLOCK_EVENT") ( call_user_func_array(array(&$this->_RefObject, $sMethod), $mixed); $sPlugin = $this->_Class . "_" . $sMethod . "_afterEvent"; dacă ( is_callable($sPlugin)) ( call_user_func_array($sPlugin, $mixed); ) ) ) ) //termină clasa Plugin-ul Pluggable extinde Plugin-ul ( ) //termină clasa Pluggable ////////////// ////// // PARTEA 2 //////////////////// clasa Câine ( public $Name = ""; funcția publică bark(&$sHow) ( echo „$sHow
\n"; ) funcția publică sayName() ( echo "
\nNumele meu este: " . $this->Name . "
\n"; ) ) //termină clasa Câine $Dog = câine nou(); //////////////////// // PARTEA 3 /////// ///////////// $PDog = new Pluggable($Dog); funcția Dog_bark_beforeEvent(&$mixed) ( $mixed = "Woof"; // Suprascrierea rostirii "miau" cu "Woof" / /$mixed = "BLOCK_EVENT"; // dacă doriți să blocați evenimentul return $mixed; ) function Dog_bark_afterEvent(&$mixed) ( echo $mixed; // afișează suprascrierea ) funcția Dog_Name_setEvent(&$mixed) ($mixed) = „Coco”; // înlocuiți „Fido” cu „Coco” returnează $mixt; ) funcția Dog_Name_getEvent(&$mixed) ( $mixed = „Diferit”; // suprascrieți „Coco” cu „Diferent” returnează $mixed; ) //////////////////// // PARTEA 4 ​​//////////////////// $PDog-> Nume = "Fido"; $PDog->Bark ("miau"); $PDog->SayName(); echo "Numele meu nou este: " . $PDog->Nume;

Prima parte este ceea ce puteți activa cu un apel require_once() în partea de sus a scriptului dumneavoastră PHP. Încarcă cursuri pentru a face ceva conectabil.

În partea 2 unde încărcăm clasa. Notă. Nu a trebuit să fac nimic special pentru clasă, care este semnificativ diferită de modelul Observer.

În partea 3, unde ne vom comuta clasa la „plug-in” (adică suportă pluginuri care ne permit să suprascriem metodele și proprietățile clasei). Deci, de exemplu, dacă aveți o aplicație web, este posibil să aveți un registru de pluginuri și puteți activa pluginuri aici. Rețineți și funcția Dog_bark_beforeEvent(). Dacă am setat $mixed = "BLOCK_EVENT" înainte de instrucțiunea return, acesta va bloca câinele să latre și, de asemenea, va bloca Dog_bark_afterEvent deoarece nu va exista niciun eveniment.

În partea 4, acesta este codul operațional normal, dar rețineți că ceea ce ați putea crede că nu va funcționa este modul în care funcționează. De exemplu, câinele nu își anunță numele ca „Fido”, ci ca „Coco”. Câinele nu spune „miau” ci „woof”. Și când vrei să cauți numele câinelui mai târziu, vei descoperi că este „Diverse” și nu „Coco”. Toate aceste modificări au fost introduse în partea 3.

Deci cum funcționează? Ei bine, să excludem eval() (pe care toată lumea spune că este „rău”) și să excludem că acesta nu este un șablon Observer. Deci modul în care funcționează este cu o clasă goală ascunsă numită Pluggable care nu conține metodele și proprietățile utilizate de clasa Dog. Astfel, pe măsură ce se întâmplă acest lucru, metode magice vor fi implementate pentru noi. De aceea, în părțile 3 și 4 ne legăm de obiectul derivat din clasa Pluggable, mai degrabă decât de clasa Dog în sine. În schimb, lăsăm clasa Plugin să „atingă” obiectul Dog pentru noi. (Dacă acesta este un design despre care nu știu - vă rog să-mi spuneți.)

Metoda cârlig și ascultător este cea mai des folosită, dar există și alte lucruri pe care le puteți face. În funcție de dimensiunea aplicației dvs. și de cine dorește să vadă codul (va fi un script FOSS sau ceva în casă) va influența foarte mult modul în care doriți să permiteți pluginurile.

kdeloach are un exemplu frumos, dar implementarea și funcția de cârlig sunt puțin sigure. V-aș ruga să oferiți mai multe informații despre natura aplicației php pentru scrisoarea dvs. și despre cum vedeți pluginurile.

1 a kdeloach de la mine.

Iată abordarea pe care am folosit-o, care este o încercare de a copia din mecanismul semnalelor/slot-urilor lui Qt, un fel de model Observer. Obiectele pot emite semnale. Fiecare semnal are un identificator în sistem - constă dintr-un id + un obiect de trimitere.Fiecare semnal poate fi legat de receptoare, care sunt pur și simplu „apelabile”.Folosiți o clasă de autobuz pentru a transmite semnale oricui este interesat să le primească Când se întâmplă ceva, trimiți un semnal. Mai jos este un exemplu și un exemplu de implementare

log in(); ?>

Cred că cea mai ușoară cale este să urmați sfatul lui Jeff și să aruncați o privire la codul existent. Încercați să vă uitați la Wordpress, Drupal, Joomla și alte CMS-uri PHP cunoscute pentru a vedea cum arată și cum se simt API-urile lor. În acest fel, s-ar putea chiar să obțineți idei la care poate nu v-ați gândit înainte pentru a face lucrurile puțin mai groase.

Un răspuns mai direct ar fi să scrieți fișiere generice pe care le-ar include într-un fișier include pentru a asigura ușurința în utilizare. Acesta va fi clasificat și NU furnizat într-un singur fișier MASSIVE „hooks.php”. Fiți atenți, pentru că ceea ce ajunge să se întâmple este că fișierele pe care le includ ajung să aibă din ce în ce mai multe dependențe și funcționalități. Încercați să limitați dependența de API. I.E am mai puține fișiere pentru a le include.

Varianta de 7 mai PHP a fost lansat în ultimul 2015. O nouă rundă în dezvoltarea acestui limbaj de programare a adus multe oportunități pentru toți cei care folosesc PHP. Printre avantajele noii versiuni, trebuie subliniată viteza. Deci, potrivit dezvoltatorilor, viteza scripturilor este PHP 7, comparativ cu versiunile anterioare, aproape sa dublat. În acest sens, mulți proprietari de site-uri care au versiuni mai vechi instalate PHP, doriți să treceți la unul nou.

De ce să verificați compatibilitatea?

Trebuie remarcat faptul că înainte de a schimba versiunea în panoul de control al găzduirii dvs PHP la unul mai nou și mai rapid, trebuie să verificați site-ul WordPress pentru compatibilitate cu acesta, și anume teme și pluginuri. Această nevoie apare deoarece, de obicei, în noile versiuni de software, unele funcții sunt adăugate, iar unele încetează să mai existe cu totul. Dacă un plugin sau o temă utilizează funcții sau metode care nu există în noua versiune, atunci acesta este un semn al unei erori, care poate perturba funcționarea site-ului în ansamblu.

Cum se verifică compatibilitatea cu PHP 7.0?

PHP Compatibility Checker Plugin

Pluginul PHP Compatibility Checker vă permite să scanați întregul site și să indicați care dintre componentele acestuia (teme, plugin-uri) nu sunt compatibile cu versiunea selectată PHP. Mai întâi trebuie să îl instalați și să îl activați, apoi mergeți la panoul de administrare Instrumente -> Compatibilitate PHP.

După cum puteți vedea, pluginul oferă setări foarte clare. Pentru a începe verificarea, trebuie să selectați o versiune PHP, pentru compatibilitatea cu care doriți să verificați site-ul (block Versiunea PHP). O funcție convenabilă a pluginului este de a selecta starea componentelor care sunt verificate. Există două opțiuni disponibile pentru a alege: fie bifați printre temele și pluginurile active, fie în cele inactive (câmp Stare plugin/temă). Pentru a începe verificarea trebuie să apăsați butonul Scanați din nou site-ul.

Rezultatul testului poate fi, de asemenea, descărcat într-un fișier text făcând clic pe butonul Descărcați raportul.

Bună ziua, dragi prieteni și invitați blogului! Postarea de astăzi va fi utilă atât pentru începători, cât și pentru webmasteri experimentați care încă nu știu cum să introducă cod PHP în Wordpress pe pagini, postări și bare laterale, astfel încât să poată fi executat de motorul WordPress.

Vreau să vă spun în acest articol despre acest lucru și despre cum puteți introduce cod php în wordpress fără a utiliza un plugin și folosind un plugin. De asemenea, veți învăța toate nuanțele și subtilitățile, argumentele pro și contra care vă pot aștepta atunci când efectuați această funcție pe WordPress.

Uneori, atunci când creați un site web, există o nevoie simplă de a insera cod PHP în WordPress în postări, pagini sau bare laterale. Am întâlnit asta o dată și când am încercat să inserez pur și simplu codul php în bara laterală, acesta a fost afișat ca text simplu. Adică nu a fost executat ca funcție.

De ce trebuie să rulați cod PHP pe WordPress în postări, pagini și bare laterale? Fiecare webmaster decide singur! De exemplu, a fost nevoie să inserați un fel de script creat în cod PHP în postările dvs. sau trebuie să afișați un meniu neobișnuit în bara laterală, nu se știe niciodată.

Deci, pentru a afișa codul php executabil în WordPress, trebuie să faceți câteva acțiuni, iar acum vom afla care...

Cum să afișați codul PHP executabil în WordPress fără un plugin?

Această metodă de a trimite cod PHP către WordPress va fi relevantă pentru cei care sunt oponenți înfocați ai instalării de pluginuri inutile pe resursele lor. Și acum vei afla cum să faci asta.

Pentru a face acest lucru, va trebui să faceți câteva modificări în fișier funcții.php tema site-ului dvs. activ. Doar adăugați acest cod la sfârșit, înainte de „ ?> " :

/* pentru a insera cod php executabil în articolele/paginile WordPress, utilizați acest cod scurt: code */ function exec_php($matches)( eval("ob_start();".$matches."$inline_execute_output = ob_get_contents();ob_end_clean() ;"); return $inline_execute_output; ) function inline_php($content)( $content = preg_replace_callback("/\(((.|\n)*?)\[\/exec\]/", "exec_php", $content ); $conținut = preg_replace("/\((.|\n)*?)\[\/exec\]/", "$1", $conținut); return $content; ) add_filter ("the_content", " inline_php", 0);

Apoi utilizați acest cod scurt în postările și articolele dvs. pentru a insera codul php executabil:

Aici este codul php

  • O mică precizare, care este un punct foarte important pentru afișarea și ieșirea corectă a codului php în postările dvs. de pe site!

Asigurați-vă că, atunci când încorporați codul PHP într-un shortcode, nu utilizați acest lucru: „„! Adică, codul tău php executabil introdus în codul scurt ar trebui să arate așa nu in acest fel " " , A ca aceasta "data ecou ("Y");„. Și, în cele din urmă, când îl inserați în codul scurt, va arăta astfel:

Data ecou ("Y");

  • Un alt avertisment pentru webmasterii începători!

Executarea codului PHP în postările tale WordPress în acest fel face motorul tău vulnerabil la tot felul de hackeri - crackeri care îl pot folosi în propriile lor scopuri egoiste. Pentru a face acest lucru, trebuie să modificați valoarea " exec" în codul care este introdus în fișier funcții.php al tău, care este cunoscut doar de tine! Și, în consecință, utilizați aceeași valoare în shortcodes pentru a introduce în posturi.

Prin această acțiune puteți evita faptul că cineva va putea profita de potențiala „găură” creată ca urmare a utilizării acestei funcții - introduceți cod PHP în Wordpress.

Este vorba despre inserarea codului php în WordPress fără a utiliza un plugin.

Acum haideți să aflăm cum puteți introduce și cod php în WordPress, dar folosind un plugin...

Cum să încorporați codul PHP executabil în WordPress cu pluginul Exec-PHP?

Există multe plugin-uri pentru inserarea codului PHP în WordPress pentru execuție. Dar nu toate sunt sigure, deoarece atunci când sunt instalate și utilizate, în motor apar vulnerabilități pe care hackerii fără scrupule le pot exploata.

Vă voi spune acum despre cel mai sigur și mai funcțional plugin pentru executarea codului php în WordPress - acesta este Exec-PHP. Mai întâi trebuie să îl descărcați sau de la site-ul oficial WordPress sau pur și simplu instalați din panoul de administrare de pe site. Sper că știi cum să faci asta?! Dacă nu știi, atunci aruncă o privire. Există și un videoclip în care poți vedea totul cu ochii tăi. Deși vorbim despre instalarea unui plugin diferit, principiul este același.

După instalarea și activarea pluginului, următoarele vor apărea în meniul principal de administrare:

Faceți clic pe el și veți fi direcționat la:

Selectați aici pentru a executa/ignora codul PHP în widget-uri și gata.

Apoi, pentru a putea insera cod PHP executabil în WordPress în postări și pagini, trebuie să bifați caseta din profilul dvs. - :

Toate. Acum puteți adăuga orice cod PHP în WordPress la paginile și postările dvs. și va fi executat!

Vă mulțumim pentru atenție! Noroc tuturor! Ne mai vedem!

Toți cei familiarizați cu WordPress au auzit despre fișierul theme (șablon) functions.php. Cu toate acestea, nu toată lumea îi înțelege bine scopul, văzându-l doar ca un fișier care stochează diverse funcții PHP. Pe Internet, ca și pe site-ul meu, este adesea sugerat să adăugați cod PHP la acest fișier. Cu toate acestea, nu orice cod va funcționa pentru acest fișier. Nu pentru că nu va funcționa, ci pentru că nu se potrivește logicii de utilizare.

De asemenea, atunci când editează functions.php, începătorii fac greșeli din cauza cărora site-ul nu mai funcționează.

În acest articol voi încerca să iau în considerare toate aceste puncte: când să folosești functions.php și când este mai bine să nu faci asta, ce erori pot apărea la editarea functions.php.

Caracteristici functions.php

functions.php se afla in folderul theme si se incarca de fiecare data, in timpul vizualizarii partii externe a site-ului, in panoul de administrare, si chiar in timpul solicitarilor AJAX. Nu există niciun caz când functions.php nu va fi inclus și acest lucru deschide oportunități largi pentru dezvoltatori.

De exemplu, următorul cod inserat în fișierul functions.php al temei va extinde capacitățile temei prin activarea suportului pentru miniaturi postate:

Add_action("after_setup_theme", "wp_kama_theme_setup"); funcția wp_kama_theme_setup())( // Suport pentru miniaturi add_theme_support("post-miniaturi"); )

Un alt exemplu, codul va înlocui textul din subsolul panoului de administrare WordPress cu date despre numărul de solicitări de baze de date, timpul de generare a paginii și utilizarea memoriei:

## Date despre numărul de solicitări către baza de date în panoul de administrare add_filter("admin_footer_text", "wp_usage"); // în panoul de administrare add_filter("wp_footer", "wp_usage"); // pe funcția site-ului web wp_usage())( echo sprintf(__("SQL: %d în %s sec. %s MB", "km")), get_num_queries(), timer_stop(0, 3), round(memory_get_peak_usage () /1024/1024, 2)); )

functions.php vs plugin-uri

- „Pluginurile funcționează mai lent decât codul din fișierul functions.php”, spun ignoranții - acest lucru nu este adevărat!

În teorie, inserarea codului în functions.php este la fel cu instalarea unui plugin, dar nu este același lucru. La urma urmei, când schimbăm tema, vom obține un functions.php complet diferit și toate modificările făcute se vor pierde, dar pluginul va rămâne, indiferent cât de mult ar fi schimbată tema. Din aceste motive, trebuie să ne referim la fișierul functions.php. Dacă funcționalitatea adăugată se referă nu numai la temă, ci și la site-ul în ansamblu, atunci ar trebui să vă gândiți să o conectați ca plugin.

Al doilea exemplu de mai sus este „Date despre numărul de interogări la baza de date în subsolul panoului de administrare”. În mod logic, nu este potrivit pentru utilizare în fișierul functions.php. Pentru că dacă schimbăm șablonul, vom pierde această funcționalitate, dar este folosit în panoul de administrare și este necesar indiferent de tema folosită.

Așa că haideți să-l eliminăm din functions.php și să-l facem un plugin - este ușor!

Pentru a crea un plugin, trebuie să creați un fișier cu codul de mai jos (numele fișierului poate fi orice), adăugați-l în directorul de pluginuri wp-content/plugins/ și activați pluginul în panoul de administrare:

Dacă nu doriți să vedeți un alt plugin în panoul de administrare, atunci puteți utiliza pluginuri Must-Use.

Ce face functions.php de fapt?

După cum am scris mai sus: functions.php este necesar pentru a extinde funcționalitatea temei și numai pentru asta! În acest fișier trebuie să adăugați orice cod necesar pentru șablonul în sine, dar nu pentru site-ul în ansamblu.

Dacă pe orice resursă vi se cere să adăugați cod în fișierul functions.php, iar funcția codului nu are legătură directă cu șablonul, atunci nu vă leneși să faceți un plugin din acest cod și poate că în viitor veți evitați pierderea neașteptată a funcționalității adăugate anterior.

Cum se încarcă functions.php

functions.php este inclus în timpul inițializării temei curente, după ce toate funcțiile WordPress și toate pluginurile active sunt activate. Voi descrie pe scurt cronologia de încărcare a WordPress, unde puteți vedea când sunt conectate fișiere importante:

Index.php wp-blog-header.php wp-load.php wp-config.php wp-settings.php // Cele mai de bază funcții sunt conectate (conexiunea la baza de date $wpdb și sistemul de filtrare) // Filtrele de bază sunt conectat // SHORTINIT: Oprirea încărcării, unde există doar cele mai elementare: if (SHORTINIT) return false; // întregul mediu WordPress este conectat: funcțiile de bază, filtrele // pluginurile obligatorii sunt conectate, apoi se declanșează evenimentul: do_action("muplugins_loaded"); // pluginurile activate sunt conectate, apoi se declanșează evenimentul: do_action("plugins_loaded"); // sunt setate variabile globale: wp_the_query, wp_query, wp_rewrite, wp, wp_widget_factory, wp_roles ... do_action("setup_theme"); // instalează tema curentă // conectează fișierul temei >>>>>>>>>>>>> functions.php<<<<<<<<<<<< do_action("after_setup_theme"); // событие, когда среда WP, все плагины и тема полностью подключены, но на экран еще ничего не выведено: do_action("init"); // проверка статуса сайта для мультисайтовой сборки // тоже самое что init только после проверки статуса (до этой строки работа PHP может не дойти) do_action("wp_loaded"); wp() // заполняет основной запрос WP и все глобальные переменные связанные с ним wp-includes/template-loader.php // подключает нужный файл шаблона

Procesul de încărcare pentru WordPress, și în special functions.php, este bine ilustrat în această figură:

Schema de încărcare WordPress

Erori în functions.php la lipirea codului

Am întâlnit în mod repetat întrebări despre erori, cum ar fi: „După instalarea codului în fișierul functions.php, site-ul nu mai funcționează - un ecran alb. Ce ar trebui să fac?” Eu însumi am întâlnit ceva asemănător odată.

Pentru mine, unele soluții la această problemă au rămas un mister pentru o lungă perioadă de timp - părea că nu am făcut nimic și nici măcar nu a existat un dans cu o tamburină, dar odată ce totul a funcționat. De ce se întâmplă asta? Să ne uităm la posibilele situații din cauza cărora site-ul se poate „rupe” și explicația lor:

    Introduceți codul terminat - site-ul nu mai funcționează.

  1. Editezi functions.php - site-ul nu mai functioneaza.

Cel mai adesea, este o chestiune de deschidere și închidere a etichetelor PHP. De obicei, dacă codul pe care îl introduceți are aceste etichete la început și la sfârșit, atunci acestea trebuie eliminate. De asemenea, fișierul functions.php nu ar trebui să afișeze niciun text (cod HTML sau alt conținut) pe ecran. Ieșirea textului este permisă numai în interiorul funcțiilor care vor fi utilizate ulterior în șablon sau care sunt atașate la cârlige (a se vedea mai jos pentru mai multe detalii).

Nu sunt permise caractere înainte, inclusiv caractere invizibile (încărcare de linie), deoarece functions.php este conectat înainte de a seta antetele http (astfel de anteturi transmit diverse date, de exemplu, că acesta este un document html; că codificarea utf-8 este diferită). Conform regulilor PHP, conținutul ar trebui să fie afișat pe ecran după trimiterea antetelor. Și tot ce este afarăacesta este conținutul - textul afișat pe ecran, chiar și caracterul invizibil \n. Prin urmare, acest text provoacă o eroare.

Pentru a evita erorile, luați în considerare 4 puncte:

# 1 Cuibări adecvate

De exemplu, am avut această structură:

.......aici este codul......... ?>

Corect asa:

# 2 Fără întreruperi de rând, spații, text înainte

Acest cod va provoca o eroare:

Dar acesta nu:

Este mai logic să scrii așa:

Se întâmplă ca o întrerupere de linie să fie plasată chiar la sfârșitul funcțiilor.php, iar apoi aceasta devine o problemă reală, deoarece totul pare să fie corect, dar site-ul nu funcționează. De fapt, după?> sau înainte

este o linie goală aici

Din acest motiv, mulți dezvoltatori elimină complet eticheta de închidere ?>; acest lucru este acceptabil în PHP. Vă recomand să faceți întotdeauna acest lucru:

# 3 Utilizațiîn interiorul funcțiilor PHP

Dacă există o funcție în functions.php, atunci etichetele pot fi folosite în cadrul acestei funcții, de exemplu, pentru a evidenția vizual codul HTML din interiorul unei funcții:

acesta este codul html

Cert este că în acest caz funcția este doar înregistrată și nu efectuează nicio acțiune. Tot ceea ce este în interiorul unei funcții (între ( )) nu funcționează până când această funcție este apelată, iar astfel de funcții sunt de obicei apelate dintr-un șablon sau prin filtre, după ce anteturile HTTP au fost trimise. Deci, în acest exemplu, putem ignora rupturile de linie și putem folosi ?> și

#4 Codificare

O altă notă referitoare la fișierul functions.php: setați codificarea fișierului la UTF-8 (UTF-8 fără BOM). În caz contrar, dacă fișierul cu funcții conține text în chirilic, acesta va fi afișat cu caractere de neînțeles: gibberish, scribbles - numiți-l așa cum doriți.