Shubhasiz, siz yangi funksiyalarni qo'shish uchun WordPress saytingizga bir nechta kod qo'shish zarurligiga bir necha bor duch kelgansiz. Men mavzuingizning sarlavha qismiga kiritgan Google Analytics skriptlari haqida gapirmayapman. Yo'q. Men Internetdagi forumlarda topib, darhol ularni faylingizga qo'shish uchun yugurgan o'sha kichik kod parchalari haqida gapiryapman. functions.php.

Rostini aytsam, siz buni kamida bir marta qilgansiz, to'g'rimi? Va bu tushunarli, chunki u forumda yozilgan - ushbu kodni WordPress mavzuingizning functions.php ga qo'shing.

Haqiqat shundaki, siz Internetda topilgan har bir kodni functions.php ga qo'shishdir har doim ham yaxshi fikr emas. Ushbu kod yordamida o'zingizning shaxsiy mini plaginingizni yaratish xavfsizroq yechim bo'ladi.

Ushbu o'quv qo'llanmada biz sizga qaysi holatlarda functions.php ga kod qo'shishingiz mumkinligini va qaysi hollarda alohida plagindan foydalanish yaxshiroq ekanligini aytib beramiz. Shuningdek, biz qanday qilib o'zingiz maxsus plagin yaratishingiz va unga o'z kodingizni qo'shishingiz mumkinligini ko'rsatamiz.

functions.php nima

Agar siz WordPress saytingiz fayllari bilan tanishgan bo'lsangiz, siz bir nechta functions.php fayllariga duch kelgan bo'lishingiz mumkin. Ushbu qo'llanmada biz gaplashadigan functions.php fayli quyidagi papkada joylashgan: wp-contentthemesyourthemefunctions.php.

Shubhasiz, bu sizning mavzuingizning barcha funktsiyalari va sozlamalarini saqlaydigan bir xil fayl, hozirda faol. "Faol" so'ziga e'tibor bering, chunki bu darsning asosiy xabari bo'ladi.

Nima uchun doimo functions.php dan foydalanish yomon fikr

Meni noto‘g‘ri tushunmang, bir-ikki qatordagi kichik kodlar uchun functions.php dan foydalanish mutlaqo normal holat. Biz shuni aytmoqchimizki, functions.php dan siz qo'shgan barcha kodlar uchun ombor sifatida foydalanish yaxshi fikr emas. Bu har bir vaziyat uchun yagona yechim emas.

Sabab №1.

Agar mavzuingizda yangilanish bo'lsa, siz functions.php faylida yozgan hamma narsani yo'qotasiz. Siz nima deb o'ylaganingizni bilaman - lekin shunga o'xshash holatlar uchun bittasi bormi?

Albatta bor. Ammo bolalar mavzusi nima ekanligini bilmaydigan odamlar ham ko'p. Yoki sizdan mavzuga kod qo'shishda yordam so'ragan odamlar bor.

Shuning uchun bu sabab ushbu ro'yxatda. Agar siz functions.php ga kichik mavzudan foydalanmasdan kod qo'shayotgan bo'lsangiz, bu sizning birinchi qizil bayroqingizdir.

Sabab # 2.

Agar siz bolalar mavzusini to'g'ri sozlagan va foydalanayotgan bo'lsangiz ham. Agar siz boshqa mavzuga o'tmoqchi bo'lsangiz nima bo'ladi? Umid qilamanki, siz functions.php faylingizga kiritgan har bir o'zgartirishingizga sharh qo'shasiz, chunki usiz boshqa mavzuga o'tish juda og'riqli bo'ladi. Menimcha, siz bu fikrni tushundingiz.

Sabab №3.

Agar siz functions.php-ga saytingizni butunlay buzadigan kod qo'shgan bo'lsangiz va sizda bo'sh oq ekran qolsa, buzilgan functions.php-ni yuklab olish, uni tahrirlash uchun sizga FTP mijozi kerak bo'ladi. va uni yana saytingizga yuklang. Xursandchilik ham shunday.

functions.php dan qachon foydalanish kerak

Hozirda faol bo'lgan bolalar mavzusi uchun functions.php dan to'g'ri foydalanish to'g'ri variantdir. Ammo esda tutingki, men bu so'zni ta'kidladim " faol"?

Agar siz ushbu mavzu bilan ishlashda ma'noga ega bo'lgan kod qismlarini qo'shsangiz, siz functions.php-dan xavfsiz foydalanishingiz mumkin (bolalar mavzusida). Bu o'rinli bo'lgan ba'zi misollar:

  • Mavzu uchun boshqa uslublar faylini (.css) qo'shish
  • Saytni yaxshiroq ko'rsatish uchun postdan parcha uzunligini o'zgartirish
  • Joriy mavzu uchun maxsus shriftlarni qo'shish
  • Joriy mavzuni tarjima qilish uchun mahalliylashtirish faylini qo'shish

Boshqacha qilib aytganda, joriy mavzuga tegishli biror narsani qo'shsangiz yoki o'zgartirsangiz, functions.php dan xavfsiz foydalanishingiz mumkin.

Qachon functions.phpsiz qilish yaxshiroq

Boshqa mavzu uchun nazariy jihatdan kerak bo'lishi mumkin bo'lgan ko'proq global narsalar va funktsiyalarni qo'shish uchun functions.php dan foydalanish yomon fikrdir.

Functions.phpsiz qilish yaxshiroq bo'lgan bir nechta misollar:

  • Tez-tez foydalanadigan maxsus vidjetlar yarating
  • Maxsus qisqa kodlarni yaratish
  • Mavzuga bog'liq bo'lmagan kodni qo'shish (Google Analytics kodi va boshqalar).

Bunday hollarda, mavzuingizdan qat'i nazar, ushbu kodni saqlash yaxshiroqdir. Va buni maxsus plaginlar bilan qilishingiz mumkin.

Functions.php-ni tahrirlashda plagin yaratish ustida bosh qotirish haqida o'ylayapsizmi? Bu juda qiyin! Ishoning, bu haqiqat emas. Bu juda oson va tez amalga oshiriladi.

functions.php o'rniga maxsus plaginni qanday o'rnatish mumkin

Kodingizni saqlash uchun shaxsiy plaginingizni yaratish uchun sizga kerak bo'ladi:

  1. Kodingiz bilan matnli fayl yarating va uni .php fayli sifatida saqlang
  2. Olingan .php faylni .zip arxiviga to'plang
  3. Ushbu arxivni menyuda oddiy WordPress plagini sifatida o'rnating Plaginlar → Yangisini qo'shish

Hammasi, atigi 3 qadam.

Qadam 1. Kodingiz bilan .php faylini yarating

Kompyuteringizda Notepadni oching va quyidagi matnni joylashtiring:

Albatta, plagin nomi qatorida plagin uchun o'z nomingizdan foydalanishingiz mumkin:

WordPress plaginingizni allaqachon o'rnatilganlar bilan aralashtirib yubormasligi uchun faylni saqlang va unga noyob nom bering. Masalan: wpcafe-custom-functions.php.

Ha, saqlash vaqtida “Barcha fayllar” fayl turini tanlashni va .php kengaytmasini qo‘shishni unutmang:

2-qadam. .zip arxivini yarating

Menimcha, bu erda hech qanday tushuntirish kerak emas. Har qanday qulay arxivator yordamida faylingiz bilan .zip arxivini yarating.

Qadam 3. Oddiy plagin sifatida o'rnating

Eng oddiy qismi. Shunchaki WordPress administratoringizga o'ting Plaginlar → Yangisini qo'shish va arxivingizni oddiy plagin sifatida yuklang.

Uni faollashtirganingizdan so'ng siz o'zingizning yangi plaginingizni boshqa barcha o'rnatilgan plaginlar ro'yxatida ko'rishingiz mumkin bo'ladi:

O'z kodingizni qanday qo'shish kerak

O'zingizning kod parchangizni qo'shish uchun uni yaratgan .php fayliga joylashtirish kifoya. Yoki har doim ikki xil funksiya uchun boshqa alohida plagin yaratishingiz mumkin.

Misol uchun, agar siz "Salom Dunyo!" qisqa kodini yaratmoqchi bo'lsangiz, .php faylingiz shunday ko'rinishga ega bo'ladi:

Ushbu sharhlar hech qanday tarzda kodingiz ishlashiga yoki plaginning ishlash tezligiga ta'sir qilmaydi. Lekin ular sizga navigatsiyani osonlashtiradi va siz qo'shgan har bir xususiyat nima qilishini eslab qoladi.

Sharhingizni chiziqcha va yulduzcha sintaksisi bilan o'rash kifoya: /* sharhingiz */

Kodingizga o'zgartirishlar kiritganingizdan so'ng, siz FTP orqali .php faylini qayta yuklashingiz yoki oddiygina yangi .zip arxivini yaratishingiz va uni yangi plagin sifatida yuklashingiz va eskisini o'chirishingiz mumkin.

functions.php ni tahrirlashdan qochishning boshqa usullari

Umuman olganda, agar siz o'z qobiliyatingizga etarlicha ishonchingiz komil bo'lsa va functions.php ga kod qo'shishni bilsangiz, maxsus plaginlar bilan hech qanday qiyinchiliklarga duch kelmasligingiz kerak. Bu erda hech qanday murakkab narsa yo'q.

Ammo bularning barchasini qo'lda qilishni xohlamasangiz, biz juda yaxshi tushunamiz. Axir, bu WordPress. Shu sababli, sizga qo'shimcha kodingizni saytga osongina qo'shish imkonini beruvchi bepul Code Snippets plaginidan foydalanish foydali bo'lishi mumkin:

Ushbu plagin yordamida siz turli xil kodli parchalarni qo'shishingiz, ularga sarlavha, tavsif berishingiz va u yoki bu kod qismini tanlab faollashtirishingiz va o'chirib qo'yishingiz mumkin.

Yana bir ajoyib xususiyat shundaki, siz saytlar o'rtasida kod parchalarini import/eksport qilishingiz mumkin.

Natijalar

Bu kichik tafsilotdek tuyulishi mumkin, ammo qo'shimcha kodingizni to'g'ri joylashtirish kelajakda hech qanday muammosiz boshqa mavzular o'rtasida almashish imkonini beradi. Agar siz har bir qo'shimcha funktsiyani alohida plaginlar o'rtasida ajratsangiz, u yoki bu funksiyani alohida yoqishingiz yoki o'chirib qo'yishingiz mumkin.

Shunday qilib, bu usul haqiqatan ham e'tiborga loyiqdir.

8 ta javob

Observer shablonidan foydalanishingiz mumkin. Buni amalga oshirishning oddiy funktsional usuli:

Xulosa:

Bu mening CRAZY ilovam 4 + 5 = 9 4 * 5 = 20

Eslatmalar:

Ushbu misol manba kodida siz kengaytirmoqchi bo'lgan haqiqiy manba kodidan oldin barcha plaginlaringizni e'lon qilishingiz kerak. Men plaginga o'tkazilgan bir yoki bir nechta qiymatlarni qanday ishlatishga misol keltirdim. Buning eng qiyin qismi - bu har bir kancaga qanday argumentlar uzatilganligini ko'rsatadigan haqiqiy hujjatlarni yozish.

Bu PHPda plagin tizimini yaratishning faqat bir usuli. Yaxshiroq muqobillar bor, qo'shimcha ma'lumot olish uchun WordPress hujjatlarini ko'rib chiqishingizni maslahat beraman.

Kechirasiz, pastki chiziq HTML Markdown obyektlari bilan almashtirilganga o'xshaydi? Bu xato tuzatilgandan so'ng, ushbu kodni qayta joylashtirishim mumkin.

Tahrirlash: Hechqisi yo'q, u faqat tahrirlayotganingizda paydo bo'ladi

Aytaylik, sizga Observer naqsh kerak emas, chunki u tinglash vazifasini bajarish uchun sinf usullarini o'zgartirishni talab qiladi va siz umumiy narsani xohlaysiz. Aytaylik, siz merosni kengaytirishdan foydalanishni xohlamaysiz, chunki siz o'z sinfingizni boshqa sinfdan meros qilib olgan bo'lishingiz mumkin. Har qanday sinfni ko'p harakat qilmasdan ulashning umumiy usuli bo'lsa yaxshi bo'lmaydimi? Mana shunday:

_Class = get_class(&$RefObject); $this->_RefObject = $RefObject; ) umumiy funktsiya __set($sProperty,$mixed) ( $sPlugin = $this->_Class . "_" . $sProperty . "_setEvent"; if (is_callable($sPlugin)) ( $mixed = call_user_func_array($sPlugin, $) aralash); ) $this->_RefObject->$sProperty = $mixed; ) umumiy funktsiya __get($sProperty) ( $asItems = (massiv) $this->_RefObject; $mixed = $asItems[$sProperty]; $sPlugin = $this->_Class . "_" . $sProperty . "_getEvent"; agar (is_callable($sPlugin)) ( $mixed = call_user_func_array($sPlugin, $mixed); ) return $mixed; ) umumiy funktsiya __call($ sMethod,$mixed) ( $sPlugin = $this->_Class . "_" . $sMethod . "_beforeEvent"; if (is_callable($sPlugin)) ( $mixed = call_user_func_array($sPlugin, $mixed); ) agar ( $mixed != "BLOCK_EVENT") ( call_user_func_array(array(&$this->_RefObject, $sMethod), $mixed); $sPlugin = $this->_Class . "_" . $sMethod . "_afterEvent"; agar ( is_callable($sPlugin)) ( call_user_func_array($sPlugin, $mixed); ) ) ) ) //end sinf Plugin sinf Pluggable plaginni kengaytiradi ( ) //end sinf Pluggable ////////////// ////// // 2-QISM /////////////////// sinf iti ( public $Name = ""; umumiy funktsiya bark(&$sHow) ( echo "$sHow
\n"; ) umumiy funksiya sayName() ( echo "
\nMening ismim: " . $this->Ism . "
\n"; ) ) //end sinf iti $Dog = new Dog(); /////////////////// // 3-QISM /////// ///////////// $PDog = new Pluggable($Dog); function Dog_bark_beforeEvent(&$mixed) ( $mixed = "Woof"; // "Miyav" deyishni "Voof" bilan bekor qilish / /$mixed = "BLOCK_EVENT"; // agar siz hodisani bloklamoqchi bo'lsangiz $mixed; ) funksiyasi Dog_bark_afterEvent(&$mixed) ( echo $mixed; // bekor qilishni ko'rsatish ) funksiyasi Dog_Name_setEvent(&$mixed) ( $mixed) = "Coco"; // "Fido" ni "Coco" bilan bekor qilish $mixed; ) funktsiyasi Dog_Name_getEvent(&$mixed) ( $mixed = "Different"; // "Coco" ni "Different" bilan qaytarish $mixed; ) /////////////////// // 4-QISM //////////////////// $PDog-> Ism = "Fido"; $PDog->Bark("miyov"); $PDog->SayName(); echo "Mening yangi ismim: " . $PDog->Name;

Birinchi qism PHP skriptingizning yuqori qismidagi require_once() chaqiruvi bilan nima yoqishingiz mumkin. U biror narsani ulash uchun sinflarni yuklaydi.

2-qismda biz sinfni yuklaymiz. Eslatma. Men sinf uchun maxsus hech narsa qilishim shart emas edi, bu Observer naqshidan sezilarli darajada farq qiladi.

3-qismda biz sinfimizni "plug-in" ga almashtiramiz (ya'ni, sinf usullari va xususiyatlarini bekor qilishga imkon beruvchi plaginlarni qo'llab-quvvatlaydi). Masalan, agar sizda veb-ilovangiz bo'lsa, sizda plaginlar registriga ega bo'lishingiz va plaginlarni shu yerda faollashtirishingiz mumkin. Dog_bark_beforeEvent() funksiyasiga ham e'tibor bering. Qaytish bayonotidan oldin $mixed = "BLOCK_EVENT" ni o'rnatgan bo'lsam, u itning hurishini bloklaydi va Dog_bark_afterEventni ham bloklaydi, chunki hech qanday hodisa bo'lmaydi.

4-qismda bu oddiy opcode, lekin shuni yodda tutingki, siz ishlamasligi mumkin bo'lgan narsa bu qanday ishlaydi. Misol uchun, it o'z ismini "Fido" deb e'lon qilmaydi, balki "Koko" deb e'lon qiladi. It “miyov” demaydi, “vof” deydi. Va keyinroq itning ismini qidirmoqchi bo'lganingizda, bu "Coco" emas, balki "Har xil" ekanligini topasiz. Ushbu bekor qilishlarning barchasi 3-qismda kiritilgan.

Xo'sh, u qanday ishlaydi? Xo'sh, keling, eval() ni (hamma "yovuz" deb aytadi) istisno qilaylik va bu Observer shablonini istisno qilaylik. Shunday qilib, bu Dog sinfi tomonidan ishlatiladigan usullar va xususiyatlarni o'z ichiga olmaydi, Pluggable deb nomlangan yashirin bo'sh sinf bilan ishlaydi. Shunday qilib, bu sodir bo'lganda, biz uchun sehrli usullar qo'llaniladi. Shuning uchun 3 va 4-qismlarda biz Dog sinfining o'ziga emas, balki Pluggable sinfidan olingan ob'ektga bog'laymiz. Buning o'rniga biz Plugin sinfiga Dog ob'ektiga "tegishi" uchun ruxsat beramiz. (Agar bu men bilmagan dizayn bo'lsa, iltimos, menga xabar bering.)

Kanca va tinglovchi usuli eng ko'p qo'llaniladi, ammo siz boshqa narsalarni qilishingiz mumkin. Ilovangiz hajmiga va kodni kim ko'rishni xohlayotganiga qarab (bu FOSS skripti yoki uyda biror narsa bo'ladimi) plaginlarga qanday ruxsat berishingizga katta ta'sir qiladi.

kdeloach-da yaxshi misol bor, lekin uni amalga oshirish va kanca funktsiyasi biroz xavfli. Men sizning maktubingiz uchun PHP ilovasining tabiati va plaginlarni qanday ko'rishingiz haqida ko'proq ma'lumot berishingizni so'rayman.

1 mendan kdeloach.

Mana men ishlatgan yondashuv, bu Qt ning signallari/uyalari mexanizmidan, bir turdagi Observer naqshidan nusxa olishga urinishdir. Ob'ektlar signallarni chiqarishi mumkin. Har bir signal tizimda identifikatorga ega - u identifikator + jo'natuvchi ob'ektdan iborat.Har bir signal qabul qiluvchilarga bog'lanishi mumkin, ular oddiygina "chaqiriqlar". Siz signallarni qabul qilishdan manfaatdor bo'lgan har bir kishiga uzatish uchun avtobus sinfidan foydalanasiz. Biror narsa sodir bo'lganda, siz signal yuborasiz. Quyida misol va amalga oshirish misoli keltirilgan

tizimga kirish(); ?>

Menimcha, eng oson yo'li Jeffning maslahatiga amal qilish va mavjud kodni ko'rib chiqishdir. Wordpress, Drupal, Joomla va boshqa taniqli PHP CMS-larni ko'rib chiqing va ularning API-lari qanday ko'rinishini va his qilishini ko'ring. Shunday qilib, siz narsalarni biroz qalinroq qilish uchun ilgari o'ylamagan g'oyalarni olishingiz mumkin.

To'g'ridan-to'g'ri javob, foydalanish qulayligini ta'minlash uchun ular kiritilgan faylga qo'shiladigan umumiy fayllarni yozishdir. Bu toifalarga bo'linadi va bitta "hooks.php" MASSIVE faylida taqdim EMAS. Ehtiyot bo'ling, chunki ular o'z ichiga olgan fayllar tobora ko'proq bog'liqlik va funksionallikka ega bo'lishi bilan yakunlanadi. API bog'liqliklarini cheklashga harakat qiling. I.E ularni qo'shish uchun kamroq fayllarga ega.

7-may versiyasi PHP yaqinda 2015 yilda chiqarilgan. Ushbu dasturlash tilini rivojlantirishning yangi bosqichi barcha foydalanadiganlar uchun ko'plab imkoniyatlarni taqdim etdi PHP. Yangi versiyaning afzalliklari orasida tezlikni ta'kidlash kerak. Shunday qilib, ishlab chiquvchilarning fikriga ko'ra, skriptlarning tezligi PHP 7, oldingi versiyalar bilan solishtirganda, deyarli ikki barobar oshdi. Shu munosabat bilan, eski versiyalari o'rnatilgan saytlarning ko'plab egalari PHP, yangisiga o'tishni xohlaysiz.

Nima uchun moslikni tekshirish kerak?

Shuni ta'kidlash kerakki, versiyani o'zgartirishdan oldin hosting boshqaruv panelida PHP yangiroq va tezroq bo'lish uchun siz WordPress saytini u bilan mosligini tekshirishingiz kerak, ya'ni mavzular va plaginlar. Bu ehtiyoj odatda dasturiy ta'minotning yangi versiyalarida ba'zi funktsiyalar qo'shilganligi sababli yuzaga keladi va ba'zilari umuman mavjud bo'lmaydi. Agar plagin yoki mavzu yangi versiyada mavjud bo'lmagan funksiyalar yoki usullardan foydalansa, bu xatolik belgisi bo'lib, umuman sayt ishini buzishi mumkin.

PHP 7.0 bilan mosligini qanday tekshirish mumkin?

PHP muvofiqligini tekshirish plagini

PHP muvofiqligini tekshirish plagini butun saytni skanerlash va uning qaysi komponentlari (mavzular, plaginlar) tanlangan versiyaga mos kelmasligini ko'rsatish imkonini beradi. PHP. Avval siz uni o'rnatishingiz va faollashtirishingiz kerak, keyin administrator paneliga o'ting Asboblar -> PHP muvofiqligi.

Ko'rib turganingizdek, plagin juda aniq sozlamalarni taklif qiladi. Tekshirishni boshlash uchun siz versiyani tanlashingiz kerak PHP, saytni tekshirmoqchi bo'lgan muvofiqligi uchun (blok PHP versiyasi). Plaginning qulay vazifasi tekshirilayotgan komponentlarning holatini tanlashdir. Tanlash uchun ikkita variant mavjud: faol mavzular va plaginlar orasida yoki nofaol mavzularda tekshiring (maydon). Plagin/mavzu holati). Tekshirishni boshlash uchun tugmani bosishingiz kerak Saytni yana skanerlang.

Test natijasini tugmani bosish orqali matn faylida ham yuklab olish mumkin Hisobotni yuklab olish.

Salom, aziz do'stlar va blog mehmonlari! Bugungi post yangi boshlanuvchilar uchun ham, tajribali veb-ustalar uchun ham foydali bo'ladi, ular hali Wordpress-ga PHP kodini WordPress dvigateli tomonidan bajarilishi uchun sahifalar, postlar va yon panellarga qanday kiritishni bilmaydilar.

Men sizga ushbu maqolada bu haqda va plagindan foydalanmasdan va plagindan foydalanmasdan php kodini wordpressga qanday kiritishingiz mumkinligini aytmoqchiman. Shuningdek, WordPress-da ushbu funktsiyani bajarishda sizni kutishi mumkin bo'lgan barcha nuanslar va nozikliklar, ijobiy va salbiy tomonlarni bilib olasiz.

Ba'zan veb-sayt yaratishda WordPress-ga postlar, sahifalar yoki yon panellarda PHP kodini kiritish uchun oddiy ehtiyoj bor. Men bunga bir marta duch kelganman va PHP kodini yon panelga joylashtirishga harakat qilganimda, u oddiy matn sifatida ko'rsatildi. Ya'ni, u funktsiya sifatida bajarilmagan.

Nima uchun WordPress-da PHP kodini postlar, sahifalar va yon panellarda ishga tushirishingiz kerak? Har bir webmaster o'zi uchun qaror qiladi! Misol uchun, postlaringizga PHP kodida yaratilgan qandaydir skriptni kiritish kerak edi yoki siz yon panelda qandaydir noodatiy menyuni ko'rsatishingiz kerak, buni hech qachon bilmaysiz.

Shunday qilib, WordPress-da bajariladigan PHP kodini ko'rsatish uchun siz ba'zi amallarni bajarishingiz kerak va biz hozir qaysilarini bilib olamiz...

WordPress-da bajariladigan PHP kodini plaginsiz qanday ko'rsatish mumkin?

PHP kodini WordPress-ga chiqarishning ushbu usuli o'z resurslariga keraksiz plaginlarni o'rnatishga qarshi bo'lganlar uchun tegishli bo'ladi. Va endi buni qanday qilishni bilib olasiz.

Buning uchun faylga ba'zi o'zgarishlar kiritishingiz kerak bo'ladi functions.php Sizning faol veb-saytingiz mavzusi. Ushbu kodni faqat oxirida "" belgisidan oldin qo'shing. ?> " :

/* WordPress maqolalari/sahifalariga bajariladigan PHP kodini kiritish uchun quyidagi qisqa koddan foydalaning: code */ function exec_php($matches)( eval("ob_start();".$matches."$inline_execute_output = ob_get_contents();ob_end_clean() ;"); return $inline_execute_output; ) funksiyasi inline_php($content)( $content = preg_replace_callback("/\((.|\n)*?)\[\/exec\]/", "exec_php", $content ); $content = preg_replace("/\((.|\n)*?)\[\/exec\]/", "$1", $content); return $content; ) add_filter("kontent", " inline_php", 0);

Keyin bajariladigan PHP kodini kiritish uchun postlar va maqolalaringizda ushbu qisqa koddan foydalaning:

Mana php kodi

  • Saytdagi postlaringizda PHP kodini to'g'ri ko'rsatish va chiqarish uchun juda muhim nuqta bo'lgan kichik tushuntirish!

Ishonch hosil qiling, PHP kodingizni qisqa kodga kiritganingizda, buni ishlatmang: “"! Ya'ni, qisqa kodga kiritilgan bajariladigan PHP kodingiz shunday ko'rinishi kerak unday emas " " , A mana bunday "echo sana ("Y");". Va nihoyat, uni qisqa kodga joylashtirganingizda, u quyidagicha ko'rinadi:

Echo sana (“Y”);

  • Yangi boshlanuvchilar uchun yana bir ogohlantirish!

WordPress postlaringizda PHP kodini shu tarzda bajarish sizning dvigatelingizni har xil xakerlar - o'z g'arazli maqsadlarida foydalanishi mumkin bo'lgan krakerlar uchun himoyasiz qiladi. Buning uchun siz qiymatni o'zgartirishingiz kerak " exec" faylga kiritilgan kodda functions.php faqat o'zingizga ma'lum bo'lgan o'zingizga! Va shunga mos ravishda bir xil qiymatdan foydalaning qisqa kodlar postlarga kiritish uchun.

Ushbu harakat bilan siz kimdir ushbu funktsiyadan foydalanish natijasida yuzaga keladigan potentsial "teshik" dan foydalanishi mumkinligidan qochishingiz mumkin - Wordpress-ga PHP kodini kiriting.

Bu plagindan foydalanmasdan WordPress-ga PHP kodini kiritish haqida.

Keling, WordPress-ga PHP kodini qanday kiritish mumkinligini bilib olaylik, lekin plagin yordamida...

Exec-PHP plagini bilan WordPress-ga bajariladigan PHP kodini qanday joylashtirish mumkin?

Amalga oshirish uchun WordPress-ga PHP kodini kiritish uchun ko'plab plaginlar mavjud. Ammo ularning hammasi ham xavfsiz emas, chunki ular o'rnatilganda va ishlatilganda, vijdonsiz xakerlar foydalanishi mumkin bo'lgan dvigatelda zaifliklar paydo bo'ladi.

Endi men sizga WordPress-da PHP kodini bajarish uchun eng xavfsiz va eng funktsional plagin haqida gapirib beraman - bu Exec-PHP. Avval siz uni yoki undan yuklab olishingiz kerak rasmiy WordPress veb-sayti yoki shunchaki saytdagi administrator panelidan oʻrnating. Umid qilamanki, buni qanday qilishni bilasizmi?! Agar bilmasangiz, ko'ring. Shuningdek, videoklip mavjud bo'lib, unda siz hamma narsani o'z ko'zingiz bilan ko'rishingiz mumkin. Garchi biz boshqa plaginni o'rnatish haqida gapirayotgan bo'lsak-da, printsip bir xil.

Plaginni o'rnatish va faollashtirgandan so'ng, asosiy administrator menyusida quyidagilar paydo bo'ladi:

Unga bosing va siz quyidagi manzilga o'tasiz:

Vidjetlarda PHP kodini bajarish/e'tiborsiz qoldirish uchun shu yerni tanlang va tamom.

Keyin, postlar va sahifalarda WordPress-ga bajariladigan PHP kodini kiritishingiz uchun profilingizdagi katakchani belgilashingiz kerak - :

Hammasi. Endi siz WordPress-dagi istalgan PHP kodini sahifalaringiz va postlaringizga qo'shishingiz mumkin va u bajariladi!

E'tiboringiz uchun rahmat! Hammaga omad! Yana ko'rishguncha!

WordPress bilan tanish bo'lgan har bir kishi mavzu (shablon) functions.php fayli haqida eshitgan. Biroq, hamma ham uning maqsadini yaxshi tushunmaydi, uni faqat turli xil PHP funktsiyalarini saqlaydigan fayl sifatida ko'radi. Internetda, mening saytimda bo'lgani kabi, ko'pincha ushbu faylga PHP kodini qo'shish tavsiya etiladi. Biroq, har bir kod bu fayl uchun ishlamaydi. Bu ishlamasligi uchun emas, balki foydalanish mantiqiga to'g'ri kelmagani uchun.

Bundan tashqari, functions.php-ni tahrirlashda yangi boshlanuvchilar xato qiladilar, buning natijasida sayt ishlashni to'xtatadi.

Ushbu maqolada men ushbu fikrlarning barchasini ko'rib chiqishga harakat qilaman: functions.php-dan qachon foydalanish kerak va qachon buni qilmaslik yaxshiroq, functions.php-ni tahrirlashda qanday xatolar paydo bo'lishi mumkin.

Funktsiyalar functions.php

functions.php mavzu papkasida joylashgan va har safar saytning tashqi qismini ko'rishda, administrator panelida va hatto AJAX so'rovlari paytida yuklanadi. Functions.php ilovasi qo'shilmaydi va bu ishlab chiquvchilar uchun keng imkoniyatlar ochadi.

Masalan, mavzuning functions.php fayliga kiritilgan quyidagi kod post eskizlarini qo‘llab-quvvatlash orqali mavzu imkoniyatlarini kengaytiradi:

Add_action("o'rnatishdan_keyin", "wp_kama_theme_setup"); funktsiya wp_kama_theme_setup())( // Eskizni qo'llab-quvvatlash add_theme_support("post-thumbnails"); )

Yana bir misol, kod WordPress boshqaruv panelining pastki qismidagi matnni ma'lumotlar bazasi so'rovlari soni, sahifa yaratish vaqti va xotiradan foydalanish haqidagi ma'lumotlar bilan almashtiradi:

## Admin panelidagi ma'lumotlar bazasiga so'rovlar soni haqidagi ma'lumotlar add_filter("admin_footer_text", "wp_usage"); // administrator panelida add_filter("wp_footer", "wp_usage"); // veb-saytda wp_usage())( echo sprintf(__("SQL: %d in %s sek. %s MB", "km"), get_num_queries(), timer_stop(0, 3), round(memory_get_peak_usage () /1024/1024, 2)); )

functions.php va plaginlar

- "Plaginlar functions.php faylidagi koddan sekinroq ishlaydi", deydi johillar - bu to'g'ri emas!

Nazariy jihatdan, functions.php ga kod kiritish plaginni o'rnatish bilan bir xil, ammo bu bir xil narsa emas. Axir, biz mavzuni o'zgartirganimizda, biz butunlay boshqacha functions.php-ga ega bo'lamiz va kiritilgan barcha o'zgarishlar yo'qoladi, lekin mavzu qanchalik o'zgartirilmasin, plagin qoladi. Shu sabablarga ko'ra biz functions.php fayliga murojaat qilishimiz kerak. Agar qo'shilgan funksionallik nafaqat mavzuga, balki umuman saytga ham tegishli bo'lsa, uni plagin sifatida ulash haqida o'ylashingiz kerak.

Yuqoridagi ikkinchi misol "Administrator paneli altbilgisidagi ma'lumotlar bazasiga so'rovlar soni to'g'risidagi ma'lumotlar". Mantiqan u functions.php faylida foydalanish uchun mos emas. Chunki shablonni o'zgartirsak, biz bu funksiyani yo'qotamiz, lekin u administrator panelida qo'llaniladi va qaysi mavzudan qat'i nazar, kerak bo'ladi.

Keling, uni functions.php dan olib tashlaymiz va uni plaginga aylantiramiz - bu oson!

Plagin yaratish uchun quyidagi kod bilan fayl yaratishingiz kerak (fayl nomi har qanday boʻlishi mumkin), uni wp-content/plugins/ plagin katalogiga qoʻshing va administrator panelida plaginni faollashtiring:

Agar administrator panelida boshqa plaginni ko'rishni istamasangiz, u holda Mut-Use plaginlaridan foydalanishingiz mumkin.

functions.php aslida nima qiladi?

Yuqorida yozganimdek: functions.php mavzuning funksionalligini kengaytirish uchun kerak va faqat buning uchun! Ushbu faylga siz shablonning o'zi uchun zarur bo'lgan har qanday kodni qo'shishingiz kerak, lekin umuman sayt uchun emas.

Agar biron-bir resursda sizdan functions.php fayliga kod qo'shish so'ralgan bo'lsa va kod funktsiyasi shablonga bevosita bog'liq bo'lmasa, unda ushbu koddan plagin yaratishga dangasa bo'lmang va ehtimol kelajakda siz shunday qilasiz. ilgari qo'shilgan funksiyalarning kutilmagan tarzda yo'qolishidan saqlaning.

functions.php qanday yuklanadi

functions.php barcha WordPress funktsiyalari va barcha faol plaginlari yoqilgandan so'ng joriy mavzuni ishga tushirish vaqtida kiritiladi. Men WordPress-ning yuklanish xronologiyasini qisqacha tasvirlab beraman, u erda muhim fayllar qachon ulanganligini ko'rishingiz mumkin:

Index.php wp-blog-header.php wp-load.php wp-config.php wp-settings.php // Eng asosiy funksiyalar ulangan ($wpdb ma'lumotlar bazasi va filtr tizimiga ulanish) // Asosiy filtrlar ulangan // SHORTINIT: Yuklash to'xtatilmoqda, bu erda faqat eng asosiysi mavjud: agar (SHORTINIT) noto'g'ri qaytariladi; // butun WordPress muhiti ulangan: asosiy funksiyalar, filtrlar // foydalanish kerak bo'lgan plaginlar ulanadi, keyin hodisa ishga tushadi: do_action("muplugins_loaded"); // faollashtirilgan plaginlar ulanadi, keyin hodisa ishga tushadi: do_action("plugins_loaded"); // global o'zgaruvchilar o'rnatildi: wp_the_query, wp_query, wp_rewrite, wp, wp_widget_factory, wp_roles ... do_action("setup_theme"); // joriy mavzuni o'rnatadi // mavzu faylini ulaydi >>>>>>>>>>>>> functions.php<<<<<<<<<<<< do_action("after_setup_theme"); // событие, когда среда WP, все плагины и тема полностью подключены, но на экран еще ничего не выведено: do_action("init"); // проверка статуса сайта для мультисайтовой сборки // тоже самое что init только после проверки статуса (до этой строки работа PHP может не дойти) do_action("wp_loaded"); wp() // заполняет основной запрос WP и все глобальные переменные связанные с ним wp-includes/template-loader.php // подключает нужный файл шаблона

WordPress va xususan functions.php uchun yuklash jarayoni ushbu rasmda yaxshi tasvirlangan:

WordPress yuklash sxemasi

Kodni joylashtirishda functions.php-dagi xatolar

Men bir necha bor xatolar haqida savollarga duch kelganman, masalan: "Functions.php fayliga kod o'rnatilgandan so'ng, sayt ishlashni to'xtatdi - oq ekran. Nima qilishim kerak?" Men o'zim ham bir marta shunga o'xshash narsaga duch kelganman.

Men uchun bu muammoning ba'zi echimlari uzoq vaqt davomida sir bo'lib qoldi - men hech narsa qilmagandek tuyuldi va hatto daf bilan raqs ham yo'q edi, lekin bir marta hammasi ishladi. Nima uchun bu sodir bo'lmoqda? Keling, sayt "buzilishi" mumkin bo'lgan vaziyatlarni va ularning tushuntirishlarini ko'rib chiqaylik:

    Siz tayyor kodni kiritasiz - sayt ishlashni to'xtatadi.

  1. Siz functions.php-ni tahrirlaysiz - sayt ishlashni to'xtatadi.

Ko'pincha, bu PHP teglarini ochish va yopish masalasidir. Odatda, agar siz kiritayotgan kodning boshida va oxirida ushbu teglar bo'lsa, ularni olib tashlash kerak. Shuningdek, functions.php fayli ekranda hech qanday matnni (HTML kodi yoki boshqa kontent) ko'rsatmasligi kerak. Matn chiqarishga faqat keyinchalik shablonda ishlatiladigan yoki ilgaklarga biriktirilgan funksiyalar ichida ruxsat etiladi (batafsil ma’lumot uchun quyida ko‘ring).

Oldin hech qanday belgilarga ruxsat berilmagan, shu jumladan ko'rinmas belgilar (satr uzilishi), chunki functions.php http sarlavhalarini o'rnatishdan oldin ulanadi (bunday sarlavhalar turli ma'lumotlarni uzatadi, masalan, bu html hujjati; utf-8 kodlash boshqacha). PHP qoidalariga ko'ra, sarlavhalar yuborilgandan so'ng kontent ekranda ko'rsatilishi kerak. Va tashqarida bo'lgan hamma narsabu tarkib - ekranda ko'rsatilgan matn, hatto ko'rinmas \n belgi. Shuning uchun bu matn xatolikka sabab bo'ladi.

Xatolarga yo'l qo'ymaslik uchun 4 nuqtaga e'tibor bering:

№1 To'g'ri uy qurish

Masalan, bizda shunday tuzilma bor edi:

.......Mana kod............ ?>

To'g'ri shunday:

#2 Satr uzilishlari, bo'shliqlar, oldin matn yo'q

Ushbu kod xatoga olib keladi:

Lekin bu shunday emas:

Buni shunday yozish mantiqanroq:

Shunday bo'ladiki, functions.php ning eng oxirida qator uzilishi qo'yiladi va keyin bu haqiqiy muammoga aylanadi, chunki hamma narsa to'g'ri ko'rinadi, lekin sayt ishlamayapti. Aslida keyinmi?> yoki undan oldin

bu yerda bo'sh qator bor

Shu sababli, ko'pgina ishlab chiquvchilar ?> yopish tegini butunlay olib tashlashadi; bu PHPda qabul qilinadi. Men har doim buni qilishni tavsiya qilaman:

№3 FoydalanishPHP funktsiyalari ichida

Agar functions.php da funksiya mavjud bo'lsa, bu funksiya ichida teglardan foydalanish mumkin, masalan, funktsiya ichidagi HTML kodini vizual ravishda ajratib ko'rsatish uchun:

bu html kodi

Haqiqat shundaki, bu holda funktsiya faqat ro'yxatga olinadi va hech qanday harakat qilmaydi. Funktsiya ichidagi hamma narsa (( ) oralig'ida) bu funksiya chaqirilmaguncha ishlamaydi va bunday funksiyalar odatda HTTP sarlavhalari yuborilgandan so'ng shablondan yoki filtrlar orqali chaqiriladi. Shunday qilib, bu misolda biz satr uzilishlarini e'tiborsiz qoldirib, ?> va dan foydalanishimiz mumkin

№4 Kodlash

functions.php fayliga oid yana bir eslatma: fayl kodlashni UTF-8 ga o'rnating (BOMsiz UTF-8). Aks holda, agar funktsiya faylida kirill alifbosidagi matn mavjud bo'lsa, u tushunarsiz belgilarda ko'rsatiladi: gibberish, scrabbles - uni xohlaganingizcha chaqiring.