Elbette, yeni işlevsellik eklemek için WordPress sitenize bir miktar kod ekleme ihtiyacıyla sık sık karşılaşmışsınızdır. Temanızın başlık kısmına eklediğiniz Google Analytics komut dosyalarından bahsetmiyorum. HAYIR. İnternetteki forumlarda bulduğunuz ve hemen çalıştırıp dosyanıza eklediğiniz küçük kod parçacıklarından bahsediyorum. işlevler.php.

Dürüst olalım, bunu en az bir kez yaptın, değil mi? Ve bu anlaşılabilir bir durumdur, çünkü forumda yazılmıştır - bu kodu WordPress temanızın Function.php dosyasına ekleyin.

Gerçek şu ki, internette bulduğunuz her kodu işlevler.php'ye eklemek, her zaman iyi bir fikir değil. Bu kodla kendi özel mini eklentinizi oluşturmak daha güvenli bir çözüm olacaktır.

Bu dersimizde size hangi durumlarda Function.php dosyasına kod ekleyebileceğinizi, hangi durumlarda ayrı bir eklenti kullanmanın daha iyi olduğunu anlatacağız. Ayrıca kendiniz nasıl özel bir eklenti oluşturabileceğinizi ve ona kendi kodunuzu nasıl ekleyebileceğinizi de göstereceğiz.

Function.php nedir?

WordPress sitenizin dosyalarını incelediyseniz birçok function.php dosyasıyla karşılaşmış olabilirsiniz. Bu eğitimde bahsedeceğimiz Function.php dosyası şu klasörde bulunur: wp-contentthemesyourthemefunctions.php.

Açıkçası bu, özel temanızın tüm işlevlerini ve ayarlarını saklayan dosyanın aynısıdır. şu anda aktif. “Aktif” kelimesine dikkat edin çünkü bu dersin ana mesajı bu olacaktır.

Neden her zaman Function.php kullanmak kötü bir fikir?

Beni yanlış anlamayın, birkaç satırdaki küçük kod parçaları için function.php'yi kullanmak tamamen normal bir durumdur. Eklediğiniz tüm kodlar için işlevler.php'yi depo olarak kullanmanın iyi bir fikir olmadığını söylüyoruz. Bu her duruma uygun tek çözüm değildir.

Sebep #1.

Temanızda bir güncelleme varsa, Function.php dosyanıza yazdığınız her şeyi kaybedersiniz. Az önce ne düşündüğünü biliyorum ama bu gibi durumlara özel bir tane var mı?

Elbette var. Ancak çocuk temasının ne olduğu hakkında hiçbir fikri olmayan birçok insan da var. Veya temalarına bir kod parçası eklemek için sizden yardım isteyen insanlar var.

Bu nedenle bu listede yer alıyor. Function.php dosyasına alt tema kullanmadan kod ekliyorsanız, bu sizin ilk tehlike işaretinizdir.

Sebep #2.

Bir alt temayı doğru şekilde yapılandırmış ve kullanıyor olsanız bile. Farklı bir temaya geçmek isterseniz ne olur? Umarım Function.php dosyanızda yaptığınız her değişikliğe bir yorum eklersiniz, çünkü o olmadan başka bir temaya geçmek son derece acı verici olacaktır. Sanırım fikri anladınız.

Sebep #3.

Function.php'ye birdenbire sitenizi tamamen bozan bir kod eklediyseniz ve boş bir beyaz ekranla kaldıysanız, bozuk Function.php'yi indirmek, düzenlemek ve düzenlemek için bir FTP istemcisine ihtiyacınız olacaktır. ve sitenize geri yükleyin. Zevk böyle bir şeydir.

Function.php ne zaman kullanılmalı?

Şu anda aktif olan alt tema için Function.php'nin doğru şekilde kullanılması geçerli bir seçenektir. Ama unutmayın, bu kelimeyi vurguladım " aktif"?

Yalnızca söz konusu temayla çalışırken anlamlı olacak kod parçaları ekliyorsanız, o zaman function.php'yi (alt temada) güvenle kullanabilirsiniz. Bunun uygun olabileceği bazı örnekler aşağıda verilmiştir:

  • Temanız için başka bir stil dosyası (.css) ekleme
  • Sitenin daha iyi görünmesi için yazı alıntı uzunluğunu değiştirme
  • Geçerli tema için özel yazı tipleri ekleme
  • Geçerli temayı çevirmek için yerelleştirme dosyası ekleme

Başka bir deyişle, belirli bir mevcut temayla ilgili herhangi bir şey eklediğinizde veya değiştirdiğinizde, Function.php'yi güvenle kullanabilirsiniz.

Function.php olmadan yapmak ne zaman daha iyidir?

Başka bir tema için teorik olarak ihtiyaç duyabileceğiniz daha genel şeyler ve işlevler eklemek için Function.php'yi kullanmak kötü bir fikirdir.

Function.php olmadan yapmanın daha iyi olduğu durumlara birkaç örnek:

  • Sık kullanacağınız özel widget'lar oluşturun
  • Özel kısa kodlar oluşturma
  • Temaya bağlı olmayan kodların eklenmesi (Google Analytics kodu vb.)

Bu gibi durumlarda temanız ne olursa olsun bu kodu kaydetmeniz daha doğru olacaktır. Ve bunu özel eklentilerle yapabilirsiniz.

Şimdi, Function.php'yi düzenleyebileceğiniz bir eklenti oluşturma konusunda kafa yormayı mı düşünüyorsunuz? Bu çok zor! İnan bana, bu doğru değil. Bu çok kolay ve hızlı bir şekilde yapılır.

Function.php yerine özel bir eklenti nasıl kurulur?

Kodunuzu saklayacak kendi özel eklentinizi oluşturmak için şunlara ihtiyacınız vardır:

  1. Kodunuzu içeren bir metin dosyası oluşturun ve bunu bir .php dosyası olarak kaydedin
  2. Ortaya çıkan .php dosyasını bir .zip arşivine paketleyin
  3. Bu arşivi menüye normal bir WordPress eklentisi olarak yükleyin Eklentiler → Yeni ekle

İşte bu kadar, sadece 3 adım.

1. Adım. Kodunuzu içeren bir .php dosyası oluşturun

Bilgisayarınızda Not Defteri'ni açın ve aşağıdaki metni yapıştırın:

Elbette Eklenti Adı satırında eklenti için kendi adınızı kullanabilirsiniz:

Dosyayı kaydedin ve ona benzersiz bir ad verin, böylece WordPress, eklentinizi önceden kurulu olanlarla karıştırmaz. Örneğin: wpcafe-özel-işlevler.php.

Evet, kaydederken “Tüm dosyalar” dosya tipini seçip .php uzantısını eklemeyi unutmayın:

2. Adım. Bir .zip arşivi oluşturun

Burada herhangi bir açıklamaya gerek olmadığını düşünüyorum. Herhangi bir kullanışlı arşivleyiciyi kullanarak dosyanızla birlikte bir .zip arşivi oluşturmanız yeterli.

3. Adım. Normal bir eklenti olarak yükleyin

En basit kısım. WordPress yöneticinize şu adresten gitmeniz yeterli: Eklentiler → Yeni ekle ve arşivinizi normal bir eklenti olarak yükleyin.

Etkinleştirdiğinizde, yeni eklentinizi diğer tüm yüklü eklentiler listesinde görebileceksiniz:

Kendi kodunuzu nasıl ekleyebilirsiniz?

Kendi kod pasajınızı eklemek için, onu oluşturduğunuz .php dosyasına yapıştırmanız yeterlidir. Veya iki farklı işlev için her zaman ayrı bir eklenti oluşturabilirsiniz.

Örneğin, "Merhaba Dünya!" kısa kodunu oluşturmak istiyorsanız .php dosyanız şu şekilde görünecektir:

Bu yorumlar hiçbir şekilde kodunuzun performansını veya eklentinin yürütme hızını etkilemez. Ancak gezinmenizi ve eklediğiniz her özelliğin ne yaptığını hatırlamanızı kolaylaştıracaklar.

Yorumunuzu eğik çizgi ve yıldız işareti sözdizimiyle sarmanız yeterlidir: /* senin yorumun */

Kodunuzda değişiklik yaptıktan sonra, .php dosyasını FTP aracılığıyla yeniden yükleyebilir veya yeni bir .zip arşivi oluşturup bunu yeni bir eklenti olarak yükleyebilir ve eskisini silebilirsiniz.

Function.php'yi düzenlemekten kaçınmanın diğer yolları

Genel olarak, yeteneklerinize yeterince güveniyorsanız ve function.php'ye nasıl kod ekleyeceğinizi biliyorsanız, özel eklentilerle ilgili herhangi bir zorluk yaşamamalısınız. Burada karmaşık bir şey yok.

Ancak tüm bunları manuel olarak düzeltmek istemiyorsanız bunu çok iyi anlıyoruz. Sonuçta bu WordPress. Bu nedenle, ek kodunuzu siteye kolayca eklemenizi sağlayan ücretsiz Kod Parçacıkları eklentisini kullanmak yararlı olabilir:

Bu eklentiyle, kod içeren farklı parçacıklar ekleyebilir, bunlara bir başlık, açıklama verebilir ve bir veya başka bir kod parçasını seçerek etkinleştirebilir ve devre dışı bırakabilirsiniz.

Bir başka harika özellik de kod parçacıklarınızı siteler arasında içe/dışa aktarabilmenizdir.

Sonuçlar

Bu küçük bir detay gibi görünebilir ancak ek kodunuzu doğru bir şekilde yerleştirmeniz, ileride herhangi bir sorun yaşamadan diğer temalar arasında geçiş yapmanızı sağlayacaktır. Her ek işlevi ayrı eklentiler arasında bölerseniz, bu veya bu işlevi ayrı ayrı etkinleştirebilir veya devre dışı bırakabilirsiniz.

Dolayısıyla bu yöntem gerçekten ilgiyi hak ediyor.

8 cevap

Observer şablonunu kullanabilirsiniz. Bunu başarmanın basit ve işlevsel bir yolu:

Çözüm:

Bu benim ÇILGIN uygulamam 4 + 5 = 9 4 * 5 = 20

Notlar:

Bu örnek kaynak kodunda, genişletmek istediğiniz gerçek kaynak kodundan önce tüm eklentilerinizi bildirmeniz gerekir. Eklentiye iletilen bir veya daha fazla değerin nasıl işleneceğine dair bir örnek ekledim. Bunun en zor kısmı, her kancaya hangi argümanların iletildiğini listeleyen gerçek belgeleri yazmaktır.

Bu, PHP'de eklenti sistemi oluşturmanın yalnızca bir yoludur. Daha iyi alternatifler var, daha fazla bilgi için WordPress belgelerine göz atmanızı öneririm.

Kusura bakmayın, alt çizgilerin yerini HTML Markdown nesneleri mi alıyor? Bu hata düzeltildikten sonra bu kodu yeniden gönderebilirim.

Düzenleme: Neyse, yalnızca düzenleme yaparken görünüyor

Diyelim ki Observer modeline ihtiyacınız yok çünkü bu, dinleme görevini yerine getirmek için sınıf yöntemlerini değiştirmenizi gerektiriyor ve genel bir şey istiyorsunuz. Ve diyelim ki extends kalıtım kullanmak istemiyorsunuz çünkü sınıfınızı zaten başka bir sınıftan miras alıyor olabilirsiniz. Herhangi bir sınıfı çok fazla çaba harcamadan takılabilir hale getirmenin genel bir yolunun olması harika olmaz mıydı? İşte nasıl:

_Class = get_class(&$RefObject); $this->_RefObject = $RefObject; ) public function __set($sProperty,$mixed) ( $sPlugin = $this->_Class . "_" . $sProperty . "_setEvent"; if (is_callable($sPlugin)) ( $mixed = call_user_func_array($sPlugin, $ mix); ) $this->_RefObject->$sProperty = $mixed; ) public function __get($sProperty) ( $asItems = (array) $this->_RefObject; $mixed = $asItems[$sProperty]; $sPlugin = $this->_Class . "_" . $sProperty . "_getEvent"; if (is_callable($sPlugin)) ( $mixed = call_user_func_array($sPlugin, $mixed); ) return $mixed; ) public function __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"; if ( is_callable($sPlugin)) ( call_user_func_array($sPlugin, $mixed); ) ) ) ) //son sınıf Eklenti sınıfı Takılabilir eklentiyi genişletir ( ) //son sınıf Takılabilir ////////////// ////// // BÖLÜM 2 //////////////////// class Köpek ( public $Name = ""; public function bark(&$sHow) ( echo "$sHow
\n"; ) public function sayName() ( echo "
\nBenim Adım: " . $this->Name . "
\n"; ) ) //Köpek sınıfının sonu $Köpek = yeni Köpek(); ///////////////////// // BÖLÜM 3 /////// ///////////// $PDog = new Takılabilir($Dog); function Dog_bark_beforeEvent(&$mixed) ( $mixed = "Woof"; // "Miyav" demesini "Woof" ile geçersiz kıl / /$mixed = "BLOCK_EVENT"; // eğer olayı engellemek istiyorsanız $mixed'i döndürün; ) function Dog_bark_afterEvent(&$mixed) ( echo $mixed; // geçersiz kılmayı göster ) function Dog_Name_setEvent(&$mixed) ( $mixed = "Coco"; // "Fido"yu "Coco" ile geçersiz kılın, return $mixed; ) function Dog_Name_getEvent(&$mixed) ( $mixed = "Farklı"; // "Coco"yu "Farklı" ile geçersiz kılın, return $mixed; ) ///////////////////// // BÖLÜM 4 ///////////////////// $PDog-> Name = "Fido"; $PDog->Bark("miyav"); $PDog->SayName(); echo "Yeni Adım: " . $PDog->Name;

İlk kısım, PHP betiğinizin üst kısmındaki require_once() çağrısıyla etkinleştirebileceğiniz kısımdır. Takılabilir bir şey yapmak için sınıfları yükler.

2. bölümde sınıfı yüklediğimiz yer. Not. Observer modelinden önemli ölçüde farklı olan sınıf için özel bir şey yapmam gerekmedi.

Bölüm 3'te sınıfımızı "eklenti" olarak değiştireceğiz (yani sınıf yöntemlerini ve özelliklerini geçersiz kılmamıza olanak tanıyan eklentileri destekleyeceğiz). Yani örneğin bir web uygulamanız varsa eklenti kaydınız olabilir ve eklentileri buradan aktif hale getirebilirsiniz. Ayrıca Dog_bark_beforeEvent() fonksiyonuna da dikkat edin. Eğer return ifadesinden önce $mixed = "BLOCK_EVENT" ayarını yaparsam, köpeğin havlamasını engelleyecek ve herhangi bir olay olmayacağından Dog_bark_afterEvent'i de engelleyecektir.

4. bölümde bu normal işlem kodudur, ancak çalışmayacağını düşündüğünüz şeyin nasıl çalıştığı olduğunu unutmayın. Örneğin köpek adını "Fido" olarak değil, "Coco" olarak duyurur. Köpek "miyav" değil "hav" diyor. Daha sonra köpeğin ismine bakmak istediğinizde bunun "Coco" değil "Çeşitli" olduğunu göreceksiniz. Bu geçersiz kılmaların tümü Bölüm 3'te tanıtıldı.

Peki nasıl çalışıyor? Pekala, eval()'ı (herkesin "kötü" olduğunu söylediği) göz ardı edelim ve bunun bir Observer şablonu olmadığını göz ardı edelim. Yani bunun çalışma şekli, Dog sınıfı tarafından kullanılan yöntemleri ve özellikleri içermeyen, Pluggable adı verilen gizli, boş bir sınıftır. Dolayısıyla bu gerçekleşirken bizim için sihirli yöntemler devreye girecektir. Bu nedenle 3. ve 4. bölümlerde Dog sınıfı yerine Pluggable sınıfından türetilen nesneye bağlanıyoruz. Bunun yerine Plugin sınıfının Dog nesnesine bizim için "dokunmasına" izin verdik. (Bu bilmediğim bir tasarımsa lütfen bana bildirin.)

Kanca ve dinleyici yöntemi en sık kullanılan yöntemdir ancak yapabileceğiniz başka şeyler de vardır. Uygulamanızın boyutuna ve kodu kimin görmek istediğine bağlı olarak (bu bir FOSS betiği mi olacak yoksa şirket içi bir şey mi olacak), eklentilere nasıl izin vermek istediğinizi büyük ölçüde etkileyecektir.

kdeloach'un güzel bir örneği var, ancak uygulanması ve kanca işlevi biraz güvensiz. Mektubunuz için php uygulamasının doğası ve eklentileri nasıl gördüğünüz hakkında daha fazla bilgi vermenizi rica ediyorum.

1'den kdeloach'a benden.

İşte benim kullandığım yaklaşım, Qt'nin sinyal/yuva mekanizmasından bir tür Gözlemci modeli kopyalama girişimidir. Nesneler sinyal yayabilir. Her sinyalin sistemde bir tanımlayıcısı vardır - bir kimlik + bir gönderen nesneden oluşur. Her sinyal, yalnızca "çağrılabilir" olan alıcılara bağlanabilir. Sinyalleri almakla ilgilenen herkese iletmek için bir veri yolu sınıfı kullanırsınız Bir şey olduğunda, bir sinyal gönderiyorsunuz. Aşağıda bir örnek ve uygulama örneği bulunmaktadır

giriş yapmak(); ?>

En kolay yolun Jeff'in tavsiyesine uymak ve mevcut koda bakmak olduğuna inanıyorum. API'lerinin nasıl göründüğünü ve nasıl hissettirdiğini görmek için Wordpress, Drupal, Joomla ve diğer tanınmış PHP CMS'lerine bakmayı deneyin. Bu şekilde, işleri biraz daha kalın hale getirmek için daha önce düşünmediğiniz fikirler bile edinebilirsiniz.

Daha doğrudan bir yanıt, kullanım kolaylığı sağlamak için bir içerme dosyasına dahil edilecek genel dosyaları yazmak olacaktır. Bu, kategorilere ayrılacak ve tek bir "hooks.php" MASSIVE dosyasında SAĞLANMAYACAKTIR. Dikkatli olun, çünkü içerdikleri dosyalar giderek daha fazla bağımlılığa ve işlevselliğe sahip olur. API bağımlılıklarını sınırlamaya çalışın. I.E'nin bunları içerecek daha az dosyası var.

7 Mayıs versiyonu PHP 2015 yılının sonlarında piyasaya sürüldü. Bu programlama dilinin geliştirilmesinde yeni bir aşama, onu kullanan herkes için birçok fırsatı beraberinde getirdi. PHP. Yeni sürümün avantajları arasında hızın öne çıkarılması gerekiyor. Yani geliştiricilere göre komut dosyalarının hızı PHP7Önceki sürümlerle karşılaştırıldığında neredeyse iki katına çıktı. Bu bağlamda, eski sürümlerin yüklü olduğu sitelerin birçok sahibi PHP, yenisine geçmek istiyorum.

Neden uyumluluğu kontrol etmelisiniz?

Hostinginizin kontrol panelindeki sürümü değiştirmeden önce unutulmamalıdır. PHP daha yeni ve daha hızlı bir siteye geçmek için WordPress sitesinin uyumluluğunu, yani temaları ve eklentileri kontrol etmeniz gerekir. Bu ihtiyaç, genellikle yazılımın yeni sürümlerine bazı işlevlerin eklenmesi ve bazılarının tamamen ortadan kalkması nedeniyle ortaya çıkar. Bir eklenti veya tema, yeni sürümde bulunmayan işlevleri veya yöntemleri kullanıyorsa, bu, sitenin bir bütün olarak çalışmasını bozabilecek bir hatanın işaretidir.

PHP 7.0 ile uyumluluk nasıl kontrol edilir?

PHP Uyumluluk Denetleyicisi Eklentisi

PHP Uyumluluk Denetleyicisi eklentisi, sitenin tamamını taramanıza ve hangi bileşenlerinin (temalar, eklentiler) seçilen sürümle uyumlu olmadığını belirtmenize olanak tanır PHP. Öncelikle onu kurup etkinleştirmeniz, ardından yönetici paneline gitmeniz gerekir. Araçlar -> PHP Uyumluluğu.

Gördüğünüz gibi eklenti oldukça net ayarlar sunuyor. Kontrol etmeye başlamak için bir sürüm seçmeniz gerekir PHP, siteyi kontrol etmek istediğiniz uyumluluk için (engel PHP Sürümü). Eklentinin kullanışlı bir işlevi, kontrol edilen bileşenlerin durumunu seçmektir. Aralarından seçim yapabileceğiniz iki seçenek vardır: ya etkin temalar ve eklentiler arasında kontrol edin ya da etkin olmayanları (alan Eklenti/Tema Durumu). Kontrol etmeye başlamak için düğmeye basmanız gerekir Siteyi tekrar tarayın.

Test sonucu aynı zamanda düğmeye tıklanarak bir metin dosyasına da indirilebilir. Raporu İndir.

Merhaba sevgili arkadaşlar ve blog misafirleri! Bugünkü gönderi, WordPress motoru tarafından yürütülebilmesi için WordPress'e sayfalara, gönderilere ve kenar çubuklarına PHP kodunu nasıl ekleyeceklerini henüz bilmeyen hem yeni başlayanlar hem de deneyimli web yöneticileri için faydalı olacaktır.

Bu yazımda sizlere bunu ve eklenti kullanmadan, eklenti kullanmadan wordpress'e php kodunu nasıl ekleyebileceğinizi anlatmak istiyorum. Ayrıca WordPress'te bu işlevi gerçekleştirirken sizi bekleyebilecek tüm nüansları ve incelikleri, artıları ve eksileri de öğreneceksiniz.

Bazen bir web sitesi oluştururken yazılara, sayfalara veya kenar çubuklarına WordPress'e PHP kodu eklemek için basit bir ihtiyaç vardır. Bununla bir kez ben de karşılaştım ve php kodunu kenar çubuğuna yapıştırmaya çalıştığımda düz metin olarak görüntülendi. Yani bir fonksiyon olarak yürütülmedi.

Neden WordPress'te yazılarda, sayfalarda ve kenar çubuklarında PHP kodunu çalıştırmanız gerekiyor? Her web yöneticisi kendisi için karar verir! Örneğin, yazılarınıza PHP koduyla oluşturulmuş bir tür komut dosyası eklemeye ihtiyaç vardı veya kenar çubuğunda hiç bilmeyeceğiniz alışılmadık bir menü görüntülemeniz gerekiyordu.

Yani, WordPress'te çalıştırılabilir php kodunu görüntülemek için bazı eylemler yapmanız gerekiyor ve şimdi hangilerinin olduğunu öğreneceğiz...

Çalıştırılabilir PHP kodunu WordPress'te eklenti olmadan nasıl görüntüleyebilirim?

PHP kodunu WordPress'e aktarmanın bu yöntemi, kaynaklarına gereksiz eklentiler kurmanın ateşli muhalifleri için uygun olacaktır. Ve şimdi bunu nasıl yapacağınızı öğreneceksiniz.

Bunu yapmak için dosyada bazı değişiklikler yapmanız gerekecek işlevler.php aktif web sitenizin teması. Bu kodu "" satırından önce en sona eklemeniz yeterli. ?> " :

/* WordPress makalelerine/sayfalarına çalıştırılabilir php kodu eklemek için şu kısa kodu kullanın: 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 ); $content = preg_replace("/\((.|\n)*?)\[\/exec\]/", "$1", $content); return $content; ) add_filter("the_content", " satır içi_php", 0);

Daha sonra çalıştırılabilir php kodunu eklemek için yazılarınızda ve makalelerinizde bu kısa kodu kullanın:

İşte php kodu

  • Küçük bir açıklama, sitedeki yazılarınızda php kodunun doğru görüntülenmesi ve çıkması için çok önemli bir nokta!

PHP kodunuzu bir kısa koda yerleştirdiğinizde şunu kullanmayın: “"! Yani, kısa koda eklenen çalıştırılabilir php kodunuz şöyle görünmelidir: bu taraftan değil " " , A bunun gibi "yankı tarihi("Y");". Ve sonuçta bunu kısa koda yapıştırdığınızda şöyle görünecektir:

Yankı tarihi("Y");

  • Acemi web yöneticileri için bir uyarı daha!

PHP kodunu WordPress gönderilerinizde bu şekilde çalıştırmak, motorunuzu her türlü bilgisayar korsanına, yani onu kendi bencil amaçları için kullanabilen korsanlara karşı savunmasız hale getirir. Bunu yapmak için değeri değiştirmelisiniz " yönetici"dosyaya eklenen kodda işlevler.php sadece sizin tarafınızdan bilinen kendinize! Ve buna göre aynı değeri kullanın kısa kodlar yazılara eklemek için.

Bu eylemle, birisinin bu işlevin kullanılması sonucunda oluşturulan potansiyel "delikten" yararlanabileceği gerçeğini önleyebilirsiniz - PHP kodunu Wordpress'e ekleyin.

Bunların hepsi bir eklenti kullanmadan WordPress'e php kodu eklemekle ilgilidir.

Şimdi WordPress'e php kodunu nasıl ekleyebileceğinizi öğrenelim, ancak bir eklenti kullanarak...

Yürütülebilir PHP kodunu Exec-PHP eklentisiyle WordPress'e nasıl gömebilirim?

Yürütülmek üzere WordPress'e PHP kodu eklemek için birçok eklenti vardır. Ancak bunların hepsi güvenli değildir, çünkü kurulduklarında ve kullanıldıklarında, motorda vicdansız bilgisayar korsanlarının yararlanabileceği güvenlik açıkları ortaya çıkar.

Şimdi size WordPress'te php kodunu çalıştırmak için en güvenli ve en işlevsel eklentiyi anlatacağım - bu Exec-PHP. Öncelikle onu indirmeniz gerekir veya resmi WordPress web sitesi veya sitedeki yönetici panelinizden kolayca yükleyin. Umarım bunu nasıl yapacağını biliyorsundur? Bilmiyorsanız bir göz atın. Ayrıca her şeyi kendi gözlerinizle görebileceğiniz bir video klip de var. Her ne kadar farklı bir eklenti kurmaktan bahsediyor olsak da prensip aynı.

Eklentiyi kurup etkinleştirdikten sonra ana yönetici menünüzde aşağıdakiler görünecektir:

Üzerine tıkladığınızda şuraya yönlendirileceksiniz:

Widget'larda PHP kodunu yürütmek/yok saymak için burayı seçin, hepsi bu.

Ardından, yazılara ve sayfalara WordPress'e çalıştırılabilir PHP kodu ekleyebilmeniz için profilinizdeki kutuyu işaretlemeniz gerekir - :

Tüm. Artık WordPress'teki herhangi bir PHP kodunu sayfalarınıza ve yayınlarınıza ekleyebilirsiniz ve yürütülecektir!

İlginiz için teşekkür ederiz! Hepinize iyi şanslar! Tekrar görüşürüz!

WordPress'e aşina olan herkes tema (şablon) Function.php dosyasını duymuştur. Ancak, onu yalnızca çeşitli PHP işlevlerini saklayan bir dosya olarak gördüğü için herkes amacını iyi anlayamıyor. İnternette, sitemde olduğu gibi, bu dosyaya PHP kodunun eklenmesi sıklıkla önerilmektedir. Ancak bu dosyada her kod çalışmayacaktır. İşe yaramayacağından değil, kullanım mantığına uymadığından.

Ayrıca, yeni başlayanlar, Function.php'yi düzenlerken sitenin çalışmayı durdurmasına neden olan hatalar yapar.

Bu makalede tüm bu noktaları dikkate almaya çalışacağım: Function.php ne zaman kullanılmalı ve bunu yapmamak daha iyi olduğunda, Function.php'yi düzenlerken ne gibi hatalar meydana gelebilir?

Function.php'nin özellikleri

Function.php tema klasöründe bulunur ve sitenin harici bölümünü görüntülerken, yönetici panelinde ve hatta AJAX istekleri sırasında her zaman yüklenir. Function.php'nin dahil edilmeyeceği bir durum yoktur ve bu, geliştiriciler için geniş fırsatlar doğurur.

Örneğin, temanın Function.php dosyasına eklenen aşağıdaki kod, gönderi küçük resimleri desteğini etkinleştirerek temanın yeteneklerini genişletecektir:

Add_action("after_setup_theme", "wp_kama_theme_setup"); function wp_kama_theme_setup())( // Küçük resim desteği add_theme_support("küçük resim sonrası"); )

Başka bir örnek olarak kod, WordPress yönetici panelinin altbilgisindeki metni veritabanı isteklerinin sayısı, sayfa oluşturma süresi ve bellek kullanımıyla ilgili verilerle değiştirecektir:

## Yönetici panelindeki veritabanına yapılan istek sayısına ilişkin veriler add_filter("admin_footer_text", "wp_usage"); // yönetici panelinde add_filter("wp_footer", "wp_usage"); // web sitesinde function wp_usage())( echo sprintf(__("SQL: %s saniyede %d. %s MB", "km"), get_num_queries(), timer_stop(0, 3), round(memory_get_peak_usage () /1024/1024, 2)); )

Function.php vs eklentiler

- Cahiller, "Eklentiler, function.php dosyasındaki koddan daha yavaş çalışır" diyor - öyle değil!

Teorik olarak, function.php dosyasına kod eklemek eklenti yüklemekle aynıdır ancak aynı şey değildir. Sonuçta temayı değiştirdiğimizde tamamen farklı bir function.php elde edeceğiz ve yapılan tüm değişiklikler kaybolacak, ancak tema ne kadar değişirse değişsin eklenti kalacak. Bu sebeplerden dolayı function.php dosyasına başvurmamız gerekiyor. Eklenen işlevsellik yalnızca temayla değil aynı zamanda bir bütün olarak siteyle de ilgiliyse, onu bir eklenti olarak bağlamayı düşünmelisiniz.

Yukarıdaki ikinci örnek “Yönetici paneli altbilgisindeki veritabanına yapılan istek sayısına ilişkin veriler.” Mantıksal olarak function.php dosyasında kullanıma uygun değildir. Çünkü şablonu değiştirirsek bu işlevselliği kaybederiz ancak yönetici panelinde kullanılır ve hangi tema kullanılırsa kullanılsın ihtiyaç duyulur.

Öyleyse onu işlevler.php'den kaldıralım ve bir eklenti yapalım - bu çok kolay!

Bir eklenti oluşturmak için aşağıdaki koda sahip bir dosya oluşturmanız (dosya adı herhangi bir şey olabilir), onu wp-content/plugins/ eklenti dizinine eklemeniz ve eklentiyi yönetici panelinde etkinleştirmeniz gerekir:

Yönetici panelinde başka bir eklenti görmek istemiyorsanız Kullanılması Gereken eklentileri kullanabilirsiniz.

Functions.php gerçekte ne işe yarar?

Yukarıda yazdığım gibi: Function.php, temanın işlevselliğini genişletmek için gereklidir ve sadece bunun için! Bu dosyaya, şablonun kendisi için gerekli olan ancak sitenin tamamı için gerekli olmayan herhangi bir kodu eklemeniz gerekir.

Herhangi bir kaynakta, function.php dosyasına kod eklemeniz istenirse ve kodun işlevi doğrudan şablonla ilgili değilse, bu koddan bir eklenti yapmak için tembel olmayın ve belki gelecekte bunu yapacaksınız. önceden eklenen işlevlerin beklenmeyen kaybını önleyin.

Function.php nasıl yüklenir?

Function.php, tüm WordPress işlevleri ve tüm etkin eklentiler etkinleştirildikten sonra mevcut temanın başlatılması sırasında eklenir. Önemli dosyaların ne zaman bağlandığını görebileceğiniz WordPress’in yükleme kronolojisini kısaca anlatacağım:

Index.php wp-blog-header.php wp-load.php wp-config.php wp-settings.php // En temel işlevler bağlanır ($wpdb veritabanına ve filtre sistemine bağlantı) // Temel filtreler bağlı // SHORTINIT: Yalnızca en temel olanın olduğu yerde yükleme durduruluyor: if (SHORTINIT) false değerini döndürür; // WordPress ortamının tamamı bağlı: temel işlevler, filtreler // kullanılması gereken eklentiler bağlı, ardından olay tetikleniyor: do_action("muplugins_loaded"); // etkinleştirilmiş eklentiler bağlanır, ardından olay tetiklenir: do_action("plugins_loaded"); // global değişkenler ayarlandı: wp_the_query, wp_query, wp_rewrite, wp, wp_widget_factory, wp_roles ... do_action("setup_theme"); // geçerli temayı yükler // tema dosyasını bağlar >>>>>>>>>>>>> function.php<<<<<<<<<<<< do_action("after_setup_theme"); // событие, когда среда WP, все плагины и тема полностью подключены, но на экран еще ничего не выведено: do_action("init"); // проверка статуса сайта для мультисайтовой сборки // тоже самое что init только после проверки статуса (до этой строки работа PHP может не дойти) do_action("wp_loaded"); wp() // заполняет основной запрос WP и все глобальные переменные связанные с ним wp-includes/template-loader.php // подключает нужный файл шаблона

WordPress'in ve özellikle de Function.php'nin yükleme işlemi bu şekilde iyi bir şekilde gösterilmiştir:

WordPress Yükleme Şeması

Function.php dosyasında kod yapıştırırken oluşan hatalar

Hatalarla ilgili olarak defalarca şu tür sorularla karşılaştım: "Kodu işlevler.php dosyasına yükledikten sonra site çalışmayı durdurdu - beyaz bir ekran. Ne yapmalıyım?" Bir zamanlar ben de benzer bir şeyle karşılaştım.

Benim için bu sorunun bazı çözümleri uzun süre bir sır olarak kaldı - sanki hiçbir şey yapmamışım gibi görünüyordu ve tefle dans bile yoktu, ama bir kez her şey işe yaradı. Bu neden oluyor? Sitenin "kırılabileceği" olası durumlara ve bunların açıklamalarına bakalım:

    Bitmiş kodu eklersiniz - site çalışmayı durdurur.

  1. Function.php'yi düzenlersiniz - site çalışmayı durdurur.

Çoğu zaman bu, PHP'nin açma ve kapama etiketleri meselesidir. Genellikle, eklediğiniz kodun başında ve sonunda bu etiketler varsa bunların kaldırılması gerekir. Ayrıca, Function.php dosyasının ekranda herhangi bir metin (HTML kodu veya başka içerik) görüntülememesi gerekir. Metin çıktısına yalnızca daha sonra şablonda kullanılacak veya kancalara iliştirilecek işlevler içinde izin verilir (daha fazla ayrıntı için aşağıya bakın).

Daha önce karaktere izin verilmiyor, görünmez karakterler de dahil (satır sonu), çünkü Function.php, http başlıklarını ayarlamadan önce bağlanır (bu tür başlıklar, örneğin bunun bir html belgesi olduğu; utf-8 kodlamasının farklı olduğu gibi çeşitli veriler taşır). PHP kurallarına göre başlıklar gönderildikten sonra içeriğin ekranda görüntülenmesi gerekir. Ve dışarıda olan her şeyiçerik budur; ekranda görüntülenen metin, hatta görünmez \n karakteri. Bu nedenle bu metin bir hataya neden oluyor.

Hataları önlemek için 4 noktayı göz önünde bulundurun:

#1 Doğru yerleştirme

Örneğin şu yapıya sahiptik:

.......işte kod......... ?>

Doğru şekilde şu şekilde:

#2 Satır sonu, boşluk, öncesinde metin yok

Bu kod bir hataya neden olacaktır:

Ama bu şunu yapmıyor:

Şöyle yazmak daha mantıklı:

Function.php dosyasının en sonuna bir satır sonu yerleştiriliyor ve bu gerçek bir sorun haline geliyor çünkü her şey doğru görünüyor, ancak site çalışmıyor. Aslında sonra mı yoksa önce mi?

burada boş bir satır var

Bu nedenle çoğu geliştirici ?> kapanış etiketini tamamen kaldırır; bu PHP'de kabul edilebilir bir durumdur. Her zaman şunu yapmanızı öneririm:

#3 KullanımPHP fonksiyonlarının içinde

Function.php dosyasında bir fonksiyon varsa bu fonksiyonun içinde etiketler kullanılabilir.örneğin, bir işlevin içindeki HTML kodunu görsel olarak vurgulamak için:

bu html kodudur

Gerçek şu ki, bu durumda işlev yalnızca kayıtlıdır ve herhangi bir işlem gerçekleştirmez. Bir işlevin içindeki her şey (( ) arasında) bu işlev çağrılana kadar çalışmaz ve bu tür işlevler genellikle HTTP başlıkları gönderildikten sonra bir şablondan veya filtreler aracılığıyla çağrılır. Yani bu örnekte satır sonlarını yok sayabilir ve ?> ve kullanabiliriz.

#4 Kodlama

Function.php dosyasıyla ilgili başka bir not: dosya kodlamasını UTF-8 (BOM olmadan UTF-8) olarak ayarlayın. Aksi takdirde, işlev dosyası Kiril dilinde metin içeriyorsa, anlaşılmaz karakterlerle görüntülenecektir: anlamsız kelimeler, karalamalar - ona ne isterseniz onu söyleyin.