Eklenti php koymak. Google Analytics gibi bir etikete kod ekleme. #2 Daha önce satır sonu, boşluk, metin yok

  • 14.05.2019

Merhaba, sevgili arkadaşlar ve blogun misafirleri! Bugünkü gönderi, hem yeni başlayanlar hem de WordPress motoru tarafından yürütülecek şekilde wordpress sayfalarına, gönderilerine ve kenar çubuklarına php kodunu nasıl ekleyeceğini henüz bilmeyen deneyimli bir web yöneticisi için faydalı olacaktır.

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

bazen vardır basit gereklilik bir web sitesi oluştururken, yazılara, sayfalara veya kenar çubuğuna wordpress'e php kodu eklemek için. Bununla kendim bir kez 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 işlev olarak yürütülmedi.

Yazılarda, sayfalarda ve kenar çubuklarında WordPress php kodunu çalıştırmak neden gereklidir? Kendisi için karar vermek her web yöneticisine kalmış! Örneğin, yazılarınıza php kodunda oluşturulmuş bir komut dosyası eklemek gerekli hale geldi veya kenar çubuğunda alışılmadık bir menü görüntülemeniz gerekiyor, asla bilemezsiniz.

Yani burada ne çıkarmak yürütülebilir kod WordPress'te php, bazı eylemler yapmanız gerekiyor ve hangilerini şimdi öğreneceğiz ...

Eklenti olmadan WordPress'te yürütülebilir PHP kodu nasıl görüntülenir?

Bu method php çıktısı WordPress'teki kod, kaynaklarına ekstra eklentiler yüklemenin ateşli bir rakibi olanlar 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 senin aktif konu site tasarımı. Sadece aşağıdaki kodu, en sonuna, işaretinden önce ekleyin " ?> " :

/* makalelere çalıştırılabilir php kodu eklemek için/ WordPress sayfaları, bu 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( $içerik)( $içerik = preg_replace_callback("/\((.|\n)*?)\[\/exec\]/", "exec_php", $içerik); $içerik = preg_replace("/\(( .|\n)*?)\[\/exec\]/", "$1", $içerik); return $içerik; ) add_filter("the_content", "inline_php", 0);

Ardından, yürütülebilir php kodunu eklemek için yazılarınızda ve makalelerinizde bu kısa kodu kullanın:

İşte php kodu

PHP kodunuzu bir kısa koda gömdüğünüzde, şunu kullanmayın: ""! Yani, kısa koda eklenen yürütülebilir php kodunuz şöyle görünmelidir bu taraftan değil " " , a bunun gibi "yankı tarihi ("Y");" . Ve sonunda, onu kısa koda yapıştırdığınızda şöyle görünecektir:

echodate("Y");

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

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

Bu eylemle, birinin bu işlevi kullanmanın bir sonucu olarak oluşan potansiyel "delikten" yararlanabileceği gerçeğini önleyebilirsiniz - php kodunu wordpress'e ekleyin.

Bu, bir eklenti kullanmadan php kodunu WordPress'e eklemekle ilgilidir.

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

Exec-PHP eklentisi ile yürütülebilir PHP kodunu WordPress'e nasıl enjekte edebilirim?

Çalıştırmak için php kodunu wordpress'e eklemek için birçok eklenti var. Ancak hepsi güvenli değildir, çünkü kurulduklarında ve kullanıldığında, motorda, ellerinde temiz olmayan krakerlerin kullanabileceğ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 eklentiden bahsedeceğim - bu PHP'yi Yürüt. Başlamak için şuradan indirmeniz gerekir: resmi wordpress sitesi ya da sadece sitedeki yönetici panelinizden yükleyin. Umarım nasıl yapıldığını biliyorsundur! Bilmiyorsan bak. Her şeyi kendi gözlerinizle görebileceğiniz bir video klip de var. Orada olmasına rağmen Konuşuyoruz başka bir eklenti kurmakla ilgili, ancak prensip aynı.

Eklentiyi kurduktan ve etkinleştirdikten sonra ana yönetici menünüz şunları gösterecektir:

Üzerine tıklayın ve şuraya yönlendirileceksiniz:

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

Ardından, yürütülebilir php kodunu yazılarda ve sayfalarda wordpress'e ekleyebilmeniz için profilinizdeki kutuyu işaretlemeniz gerekir -:

Herşey. Artık wordpress'teki herhangi bir php kodunu sayfalarınıza ve gönderilerinize ekleyebilirsiniz ve çalıştırılacaktır!

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

Selam arkadaşlar. Bugün bunu nasıl çalıştıracağımızı bulacağız. herhangi bir PHP WordPress'teki widget'larda, makalelerde ve sayfalarda kod. Varsayılan olarak, böyle bir işlev bu CMS'de mevcut değildir ve bir kullanıcının güvenebileceği maksimum değer: HTML enjeksiyonu kod.

PHP kodu neden varsayılan olarak çalışmıyor?

Geliştiricilerin neden bu kadar popüler ve kullanışlı bir motor vermediği anlaşılıyor. kullanışlı özellikler PHP kodunun otomatik yürütülmesi için. İlk başta düşündüm, ancak böyle bir politikanın güvenlik pozisyonundan yürütüldüğü sonucuna vardım, çünkü beceriksiz PHP uygulaması widget'larda veya dahili kayıtlarda onarılamaz sonuçlara yol açabilir - veritabanında bir şeyler bozulur ve tüm site homurdanır.

Bu nedenle, PHP ile çalışmak, programcıların veya bu konuda az ya da çok gelişmiş kişilerin insafına kalmıştır - herhangi bir komut dosyası doğrudan dosyalarda yürütülür.

Herkese açık siteler için (birkaç yazarın olduğu yerlerde), makalenin gövdesinde PHP uygulaması kasıtlı sabotaj riskini artırır, çünkü herhangi bir yazar tam erişim makale düzenleme penceresinden siteye.

Tehlike derecesine göre, tüm bu durumu 3 seviyeye bölerdim:

  1. Her şeyi geliştiricilerin amaçladığı gibi bırakmak zordur - siteye güvenli, kazara veya kasıtlı olarak zarar vermek zordur.
  2. Widget'larda PHP yürütülmesine izin ver - ortalama seviye tehlike, yalnızca site yöneticisinin erişimi vardır.
  3. Makaleleri ve sayfaları düzenlemesine izin verilen herkes (moderatörler, yazarlar) siteyi yönetebileceğinden, kodu her yerde kullanmak tehlikelidir.

Widget'larda PHP ne işe yarar?

Soru bireyseldir, çünkü bu programlama dili kullanılarak her şey uygulanabilir. Şahsen, şu anda web sitesini inşa ettiğim bir müşteriden gelen bir siparişle bu yazıyı yazmam istendi. Üzerinde, kenar çubuğunda ayrı bir widget'ta bir başlıktan - "Haberler" den bir haber listesi görüntülemek gerekiyordu. AT standart widget'lar WordPress'te bu seçenek yoktur.

Soru, uygun yeteneklere sahip bir eklenti bulmak veya basit PHP kodunu kullanmak arasındaydı. Böyle bir görev için komut dosyası gerçekten küçük ve siteyi başka hiçbir yerde kullanılmayacak ekstra bir eklenti ile yüklemek istemedim.

Genel olarak, PHP'nin yürütülmesine izin vererek 2 sorunu çözebiliriz:

  • Site eklentilerinin bir kısmını betiklerle değiştirin ve bu şekilde barındırma yükünü azaltın;
  • Henüz eklentileri olmayan işlevleri uygulayın.

İlk aşamada, widget'lardan ve ardından ayrı bir blokta içerikte kodun görüntülenmesinden bahsedeceğim.

Widget'larda PHP için Eklentiler

Eklentilerin avantajı: WordPress temasını değiştirirken, şablona eklenen fonksiyonların çalışması kesintiye uğramaz, webmasterın müdahalesine gerek kalmadan her şey çalışmaya devam eder. Temayı değiştirirken şablona eklenen kancaların manuel olarak yenisine aktarılması gerekecektir.

Yukarıdaki örneğimde, bir müşteri için bir web sitesi yapıyorum ve tasarımı kendi başına değiştirmek isterse, function.php dosyaları ve diğerleri aracılığıyla yapılan ayarlar kaybolacak, bu yüzden mümkün olduğunca kolay hale getiriyorum. eklentilere güvenerek siteyi yönetmesi (özellikle niş trafiği azdır ve yük fazla olmayacaktır).

PHP Kod Widget'ı

Bu eklentiyi uzun zamandır işimde kullanıyorum, mevcut widget'lar listesine normal bir metne benzer, metin ve HTML'ye ek olarak yalnızca PHP'yi işleyebilen bir widget ekliyor.

PHP Code Widget, resmi WordPress deposunda bulunur ve adıyla kolayca bulunur. Bu tür eklentiler nasıl kurulur.

Hiçbir ayar gerekli değildir, widget, eklentiyi kurduktan ve etkinleştirdikten hemen sonra listede görünecektir. "PHP Kodu"nu kenar çubuğuna sürükleyin ve oraya herhangi bir komut dosyası ekleyin.

Eklenti olmadan WordPress widget'ında PHP

Bu durumda, yerini alacak bir kancaya ihtiyacımız var. standart fonksiyon PHP'nin işlenmesine izin veren bir işlev olan bir metin WordPress widget'ının çalışmasını sağlayan .

Bu kanca, geçerli temanın functions.php dosyasına eklenir (en sonunda, ayraçtan önce?>). Bundan sonra, eklenti durumunda olduğu gibi yeni widget seçenekleri görünmez, PHP kodları standart metinde çalışmaya başlar.

Bitmiş kod:

add_filter("widget_text"," text_html_php_widget ",100); function text_html_php_widget($metin) ( if(strpos($metin,"".$metin); $metin = ob_get_contents(); ob_end_clean(); ) dönüş $metin; )

add_filter ("widget_text", "text_html_php_widget", 100);

function text_html_php_widget ( $metin ) (

if (strpos ($metin , "

ob_start();

Değerlendir(" ?> ". $metin ) ;

$metin = ob_get_contents();

ob_end_clean();

$metin döndür;

İlk satır, her çağrıda standart metin widget işlevini yeni bir metinle, text_html_php_widget ile değiştiren bir filtredir ve ardından en yeni işlevin açıklaması gelir.

WordPress Makalelerinde ve Yazılarında Neden PHP Kodu?

Gönderilerin içinde, yürütülebilir PHP kodu, widget'lardan çok daha az gereklidir, bu nedenle makalenin ilk bölümünde, potansiyel olarak tehlikeli işlevleri gereksiz yere eklemekten kaçınabilmeniz için kenar çubuğunu ayrı olarak değerlendirdim.

Ancak gönderilerde bile komut dosyası kullanmaya ihtiyaç vardır. En yaygın örnek, eklentisiz bir site haritasının çıktısıdır. Doğru, harita için başka bir teknik kullanabilirsiniz - özel bir sayfa şablonu yapın (bu ayrı bir konudur).

Bir zamanlar aşağıdaki amaç için PHP çıktısına ihtiyacım vardı:

Bir video sitesi yaptım. Dizinin bölümleri sezona göre oynatma listelerinde gösteriliyordu ve sezonun her bir oynatma listesinin altında sayfanıza bir bağlantı ile bölümlerin bir listesini görüntülemek gerekiyordu. Bir site haritasına benziyor, sadece daha karmaşık - sonuç, ayrı başlık listeleriyle yapılmalıydı. Her bağlantıyı HTML koduyla manuel olarak yazmak mümkündü, ancak birkaç yüz dizi var ve prosedür sıkıcı. Ayrıca, göründüğünde yeni seri buna bir bağlantının manuel olarak eklenmesi gerekir - uygunsuz. Bu yüzden uygulama için PHP fonksiyonlarını kullanmaya karar verdim.

Exec-PHP içeriğinde PHP yürütmek için eklenti

Bu eklenti 7 yıldır güncellenmemiş olmasına rağmen mükemmel bir iş çıkarıyor. Ve bir nedenden dolayı seçtim - rakipler gibi herhangi bir kısa kod kullanmaz, ancak gönderilere eklemenize izin verir wordpress kodu içinde saf formu, ile başlayan .

Exec-PHP eklentisi depodadır ve motor yönetici panelindeki menü aracılığıyla yüklenir.

Ayarlardan yalnızca bir tanesi vardır - metin widget'ındaki kodu yürütmek için izin / yasak, kaldırmanız gerekirse yayınlarda ve sayfalarda çalışmayı devre dışı bırakma imkanı yoktur - eklentiyi devre dışı bırakın.

İçin PHP ekler makaledeki kod HTML moduna dönüştürülmelidir ("Metin" sekmesi). Görsel modun kodu bozması muhtemeldir.

Eklenti Olmadan WordPress Makalelerinde PHP Kodu Çalıştırma

Widget'lara benzeterek, eklentiyi şu şekilde değiştirebiliriz: özel fonksiyon izin vermek PHP yürütme içerikteki komut dosyaları. Ne yazık ki, eklentinin etiketlere tepki vermesi durumunda olduğu gibi kodun otomatik olarak çalışacağı bir seçenek bulamadım. Kısa kod gerekli. PHP bilgim kendi kendine yazmak için yeterli değildi istenen fonksiyon, sim için olduğu gibi getiriyorum. Kısa kodla çalışmak önemli dezavantaj işi zorlaştıran, aşağıda bunun hakkında konuşacağım.

Aşağıdaki işlevle nasıl çalışılır

  1. Bunu temanın function.php dosyasına yapıştırın;
  2. AT Doğru yer makaleler, bir yapı - yürütülebilir kod ekliyoruz

İşlev:

/* php başlangıcı WordPress makalelerinde ve sayfalarında: code */ function start_php($matches)( eval("ob_start();".$matches."$inline_execute_output = ob_get_contents();ob_end_clean();"); return $inline_execute_output; ) function inline_php ($içerik)( $içerik = preg_replace_callback("/\((.|\n)*?)\[\/startphp\]/", "start_php", $içerik); $içerik = preg_replace("/\( (.|\n)*?)\[\/startphp\]/", "$1", $içerik); return $içerik; ) add_filter("the_content", "inline_php");

/* WordPress makalelerinde ve sayfalarında php çalıştırın: kod */

function start_php ( $eşleşmeler ) (

eval ("ob_start();" . $eşleşir [ 1 ] . "$inline_execute_output = ob_get_contents();ob_end_clean();") ;

$inline_execute_output döndür;

işlev inline_php ( $içerik ) (

$içerik = preg_replace_callback( "/\((.|\n)*?)\[\/startphp\]/", "start_php" , $içerik ) ;

$içerik = preg_replace( "/\((.|\n)*?)\[\/startphp\]/", "$1" , $içerik ) ;

$içerik döndür;

add_filter ("the_content", "inline_php");

kusur

Girilen PHP kodunun içinde ise HTML ekler veya metin, işe yaramaz. Herhangi bir metin veya etiket, her zaman uygun olmayan echo komutu kullanılarak eklenmelidir. Yani, kod tamamen PHP-shny 100 doğru biçimde olmalıdır.

Doğru şekilde

Echo "Bu işe yarayacak";

[startphp]

Eko "İşte böyle olacak";

[/startphp]

düzgün değil

Nispeten sık sık, hayatı büyük ölçüde basitleştiren çeşitli yayınlar yapıyorum. Ve neredeyse her zaman onları doğru şekilde nasıl bağlayacağıma odaklanırım.


Elbette, geleneksel yoldan gitmek ve aptalca snippet'i dosyaya eklemek daha kolay ve daha tanıdık. işlevler.php aktif konunuz Fakat 10 vakanın 9'unda snippet kodunu ayrı bir eklentiye taşımak daha uygun ve doğru olacaktır.. Son çare olarak, sitenizin özel bir işlevsel eklentisine ekleyin. Lafta. Bölgeye özgü WordPress eklentisi , sitenizin tüm ek işlevlerinin depolanacağı.

neden gerekli

açıklayacağım basit örnek. Diyelim ki bir web sitesi geliştirdiniz karmaşık yapı desteği olan bir dizi özel veri türü, taksonomi, filtre, menü büyük miktarözel alanlar ve Kullanıcı ayarları. Tüm özelleştirmeler, bu duruma yakışır şekilde, dosyaya yerleştirdiğiniz işlevler.php. Her şey yolunda, ancak biraz zaman geçecek ve yeniden tasarlama göreviyle karşı karşıya kalacaksınız. değiştirmek veya geliştirmek ister misiniz yeni Konu. O zaman sorunlar başlayacak. Çünkü sitenin tüm işlevselliği, entegre eski konu, onunla kapanacaktır.

nasıl olunur

anlamak gerekiyor Basit gerçek. Tema özellikleri dosyası yalnızca sitenizin tasarımıyla ilgili özellikleri içermelidir. Özellikle, fonksiyon dosyası düzenlenmekte olan konuya. Ve bütün sözde. "Mekanik", sitenin çalışma işlevselliği ve tüm özelleştirmeleri eklentilere yerleştirilmelidir. Veya tek bir eklentide. Ardından temayı değiştirdiğinizde, dokunulmadan kalacaktır.

Özel WordPress İşlevleri Eklentisi Oluşturma

Aslında, her şey çok basit bir şekilde yapılır.

  • WordPress eklentileri dizininizde bir klasör oluşturun. Örneğin: /wp-içerik/eklentiler/sitem-eklenti/;
  • Bu klasörde bir dosya oluşturun, örneğin, eklentim.php;
  • Aşağıdaki kodu bu dosyaya yapıştırın:
  • Eklenti yönetimi ayarlarına gidin ve yeni eklentinizi etkinleştirin.

Başlık, açıklama ve kod yorumları kendi yorumlarınızla değiştirilebilir. Artık gerekli tüm parçacıkları ve özelleştirmeleri bu eklentiye yerleştirebilirsiniz. Aktif temanın bir sonraki değişikliği ile sitenin işlevselliğini kaybetme korkusu olmadan.

Orada durabilirsin, ama sözde olanlardan bahsetmemek benim için tamamen doğru olmaz. MU eklentileri.

MU Eklentileri (Eklentiler Kullanılmalıdır)

MU eklentileri, bir eklentinin devre dışı bırakılmasının kabul edilemez olduğu ve neden olabileceği durumlarda çok kullanışlıdır. kritik hatalar sitenin işleyişinde. Örneğin, müşteri sitelerinde. İstemcinin site yönetim konsolunda yanlış hareketlerinden kaçınmak için.

MU eklentileri zorunlu eklentilerdir. WordPress'i kullanmaközel bir dizine yüklenen ve her zaman etkin olan . MU eklentileri, site eklentilerinin genel listesinde görüntülenmez, onlar için ayrı bir sekme vardır. Yalnızca MU eklentisi dosyasını dizinden doğrudan silerek devre dışı bırakılabilirler.

MU eklentilerinin faydaları

  • MU eklentilerinin etkinleştirilmesi gerekmez, her zaman etkindirler, site yönetim konsolunda devre dışı bırakılamazlar;
  • MU eklentisi, eklenti dosyasını mu-plugins dizinine yükleyerek bağlanır ve etkinleştirilir;
  • MU eklentileri şuraya yüklenir: alfabetik sıra normal eklentileri yüklemeden önce.

MU eklentilerinin alt dizinlerinin, normal olanlardan farklı olarak desteklenmediğini lütfen unutmayın. Son çare olarak, bir eklenti oluşturabilir ve içine eklentileri dizinlerden yükleyecek basit bir yükleyici yazabilirsiniz. Aşağı yukarı şöyle:

Nihayet

Gördüğünüz gibi, işlevsel eklentileri kullanmanın temelde zor bir tarafı yoktur. Ve bunları kullanmanın faydaları açıktır. Eklentilerin sitede inanılmaz bir yük oluşturduğuna dair sık ​​sık bir görüş duydum. Birçok kullanıcının eklentileri kullanmanın tehlikeleri hakkında bazı önyargıları vardır. Bu tamamen doğru değil. Kimsenin kim olduğunu bilmediği ve nereden indirildiğini bilmediği solcu eklentiler zarar verebilir. Eklentinin kötü optimizasyonu, eski PHP ve WordPress işlevlerinin kullanımı. Zarar şuradan olabilir Büyük bir sayı eşzamanlı eklentiler Özellikle yinelenen işlevsellik ile. Banal bir eklenti çatışması, temalı eklentiler de mümkündür. Ve yetkin ve makul bir yaklaşımla, eklentiler web sitenize olağanüstü faydalar getirecek.

WordPress dünyasından en yeni ve en ilginç şeyler Telegram kanalımda. Abone olmak!

WordPress'e aşina olan herkes tema (şablon) function.php dosyasını duymuştur. Ancak, herkes amacını iyi anlamıyor, içinde yalnızca depolayan bir dosya görüyor. çeşitli php fonksiyonlar. İnternette, bu sitede olduğu gibi, genellikle bu dosyaya PHP kodunun eklenmesi önerilir. Ancak, her kod bu dosya için uygun değildir. İşe yaramayacağından değil, kullanım mantığına uymadığından.

Ayrıca, function.php'yi düzenlerken, yeni başlayanlar sitenin çalışmayı durdurması nedeniyle hatalar yaparlar.

Bu yazıda, tüm bu noktaları ele almaya çalışacağım: function.php ne zaman kullanılır ve ne zaman kullanılmaması daha iyidir, function.php düzenlenirken ne gibi hatalar olabilir.

Functions.php'nin özellikleri

function.php, tema klasöründe bulunur ve her seferinde, sitenin önünde gezinirken, yönetici panelinde ve hatta sırasında yüklenir. AJAX istekleri. Functions.php'nin dahil edilmeyeceği bir durum yoktur ve bu açılır geniş fırsatlar geliştiricilerin önünde.

Örneğin, aşağıdaki kod temanın function.php dosyasına eklenmesi, temanın yeteneklerini, küçük resimler için destek içerecek şekilde 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 resimler sonrası"); )

Başka bir örnek, kod altbilgideki metnin yerini alacak WordPress yönetici panelleri, veritabanı isteklerinin sayısı, sayfa oluşturma süresi ve bellek kullanımıyla ilgili verilerde:

## Yönetici alt bilgisindeki veritabanına yapılan istek sayısıyla ilgili veriler add_filter("admin_footer_text", "wp_usage"); // yönetici panelinde add_filter("wp_footer", "wp_usage"); // site işlevinde wp_usage()( echo sprintf(__("SQL: %d, %s saniye %s MB", "km")), get_num_queries(), timer_stop(0, 3), round(memory_get_peak_usage() / 1024/1024, 2)); )

function.php vs eklentiler

- "Eklentiler function.php dosyasındaki koddan daha yavaştır", bilgisizler söyleyin - öyle değil!

Teoride, function.php'ye kod yapıştırmak, bir eklenti kurmakla eşdeğerdir, ancak bunlar aynı değildir. Sonuçta, temayı değiştirirken tamamen farklı bir function.php elde edeceğiz ve bu kadar değişiklikler yapıldı kaybolacak, ancak tema ne kadar değiştirilirse değiştirilsin eklenti kalacaktır. Bu sebeplerden dolayı function.php dosyasına başvurmanız gerekmektedir. Eklenen işlevsellik yalnızca tema için değil, aynı zamanda bir bütün olarak site için de geçerliyse, onu bir eklenti olarak bağlamayı düşünmelisiniz.

Yukarıdaki ikinci örnek, "Yönetici alanının bodrum katındaki veritabanına yapılan istek sayısına ilişkin veriler"dir. Functions.php dosyasında kullanım için mantıksal olarak uygun değildir. Çünkü şablonu değiştirirsek, bu işlevi kaybederiz, ancak admin panelinde kullanılır ve hangi tema kullanılırsa kullanılsın gereklidir.

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

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

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

Functions.php aslında ne için?

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

Herhangi bir kaynakta function.php dosyasına kod eklemeniz teklif edilirse ve kodun işlevi doğrudan şablonla ilgili değilse, o zaman bu koddan bir eklenti yapmak için tembel olmayın ve belki gelecekte, önceden eklenen işlevselliğin beklenmedik şekilde kaybolmasını önleyin.

Functions.php nasıl yüklenir?

Functions.php, tüm WordPress işlevleri ve tüm aktif eklentiler dahil edildikten sonra, mevcut temanın başlatılması sırasında dahil edilir. Önemli dosyaların ne zaman eklendiğini görebileceğiniz WordPress indirme 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üklemeyi durdurun: if (SHORTINIT) return false; // tüm WordPress ortamı bağlanır: temel işlevler, filtreler // kullanılması gereken eklentiler bağlanır, ardından olay tetiklenir: do_action("muplugins_loaded"); // etkinleştirilmiş eklentiler bağlanır, ardından olay tetiklenir: do_action("plugins_loaded"); // global değişkenler ayarlanır: wp_the_query, wp_query, wp_rewrite, wp, wp_widget_factory, wp_roles ... do_action("setup_theme"); // mevcut temayı kurun // tema dosyasını dahil et >>>>>>>>>>>> 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'in ve özellikle function.php'nin yükleme işlemi bu resimde iyi bir şekilde gösterilmiştir:

WordPress Yükleme Şeması

Kodu yapıştırırken function.php'deki hatalar

Hatalarla ilgili olarak tekrar tekrar sorularla karşılaştım, örneğin: "Kodu function.php dosyasına yükledikten sonra site çalışmayı durdurdu - beyaz bir ekran. Ne yapmalıyım?". Ben de bir zamanlar buna benzer bir şeyle karşılaştım.

Benim için, bu sorunun bazı çözümleri uzun süre bir gizem olarak kaldı - hiçbir şey yapmıyor gibiydim ve tef ile dans bile yoktu, ama - bir kez işe yaradı. Bu neden oluyor? Sitenin "kırılabileceği" olası durumlara ve açıklamalarına bakalım:

    Bitmiş kodu yapıştırın - site çalışmayı durdurur.

  1. Functions.php'yi düzenleyin - site çalışmayı durdurur.

Çoğu zaman mesele, açılış ve kapanış PHP etiketlerindedir.. Genellikle, eklenen kodun başında ve sonunda bu etiketler varsa, bunların kaldırılması gerekir. Ayrıca, function.php dosyası herhangi bir metin (HTML kodu veya diğer içerik) görüntülememelidir. Metin çıktısına yalnızca daha sonra şablonda kullanılacak veya kancalara eklenecek olan işlevlerin içinde izin verilir (daha fazla ayrıntı için aşağıya bakın).

Daha önce hiçbir karaktere izin verilmez, görünmez karakterler dahil (satır sonları) çünkü function.php kurulumdan önce dahil edilmiştir http başlıkları(bu tür başlıklarda çeşitli veriler iletilir, örneğin, nedir html belgesi; bu utf-8 kodlaması farklıdır). İle PHP kuralları, başlıklar gönderildikten sonra içerik ekrana işlenmelidir. Ve dışarıdaki her şeyiçerik budur - ekranda görüntülenen metin, hatta görünmez \n karakteri. Bu nedenle, böyle bir metin bir hataya neden olur.

Hatalardan kaçınmak için 4 noktayı göz önünde bulundurun:

#1 Uygun yuvalama

Örneğin, bu yapıya sahiptik:

........kod burada......... ?>

Bu şekilde düzeltin:

#2 Daha önce satır sonu, boşluk, metin yok

Bu kod bir hata verecektir:

Ama bu değil:

Şu şekilde yazmak daha mantıklı.

Function.php'nin en sonuna bir satır sonu yerleştirilir ve sonra bu gerçek bir sorun haline gelir, çünkü her şey doğru görünüyor, ancak site çalışmıyor. Aslında sonra?> veya önce

işte boş bir satır

Bu nedenle, birçok geliştirici PHP'de kabul edilebilir olan kapanış ?> etiketini tamamen kaldırır. Bunu her zaman yapmanızı tavsiye ederim:

#3 KullanımPHP işlevi içinde

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

bu html kodu

Gerçek şu ki, bu durumda işlev yalnızca kaydedilir ve herhangi bir işlem yapmaz. İşlevin içindeki her şey ( ( ) arasındaki) 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. Bu nedenle, bu örnek, satır sonlarını görmezden gelebilir ve ?> kullanabiliriz ve

#4 Kodlama

Functions.php dosyasıyla ilgili bir not daha: dosya kodlamasını UTF-8'e ayarlayın (BOM'suz UTF-8). Aksi takdirde, dosyadaki işlev Kiril metni içeriyorsa, anlaşılmaz karakterlerle görüntülenecektir: krakozyabry, karalamalar - istediğiniz gibi adlandırın.