16 May 2022
MertKocakaya
0 Yorum

Herkese merhaba. Uzun zamandır merak edilen ve bizlere de defalarca sorulan WordPress eklenti yazma içeriğini nihayet paylaşıyoruz! Bu başlık altında, sıfırdan bir WordPress eklentisi nasıl yazılır, güvenlik aşamaları, test aşaması ve eklentiyi WordPress.Org’da yayınlama aşamasına kadar detaylı bir şekilde değineceğiz. Bu sayede dilerseniz kendi ihtiyaç duyduğunuz eklentileri hazırlayabilir, kullanabilir ve bu eklentileri WordPress.Org’da yayınlayabilirsiniz. Hatta ilerleyen süreçte kendi premium WordPress eklentilerinizi hazırlayarak pazarlamasını yapabilir ve bu işten gelir de elde edebilirsiniz. O halde hiç vakit kaybetmeden hemen başlayalım!

Eklenti Dosyalarının Oluşturulması

wordpress eklenti oluşturma

İlk etapta WordPress dosyalarımızın yer aldığı dizinde “wp-content/plugins/” klasörüne giriş yapıyoruz. Plugins klasörü, WordPress web sitemizde kullandığımız eklentileri barındırdığımız klasördür. Biz de yeni bir WordPress eklentisi yazacağımız için bu dizinde “benim-eklentim” adında yeni bir klasör oluşturuyoruz.

İndex.php Dosyasının Hazırlanıp Eklentinin Tanıtılması

Eklenti klasörümüzü açtık. Şimdi ise eklenti klasörümüzün içerisinde “index.php” adında bir dosya oluşturuyoruz. Bu dosya içerisinde eklentimizi WordPress panelimize tanıtacağız. İndex.php dosyamızda ilk etapta eklenti sahibine dair bilgi alanını oluşturuyoruz.

                                
                                    /*
Plugin Name: Benim Eklentim
Plugin URI: /benim-eklentim
Description: Benim Eklentim deneme bir eklentidir.
Version: 1.0
Author: Mert Kocakaya
Author URI: https://www.mertkocakaya.com
License: GNU
*/
                                
                            

Bu kısımda eklentimizin adı, dosya yolu, açıklaması gibi kısımları oluşturduk. Şimdi ise PHP kodlarıyla eklentimizi admin panelimize tanıtmamız gerekiyor.

                                
                                    add_action('admin_menu', 'benim_eklentim');

function benim_eklentim() {
	add_menu_page('Benim Eklentim', 'Benim Eklentim', 'manage_options', 'benim-eklentim', 'benim_eklentim_fonksiyonum');
}

function benim_eklentim_fonksiyonum() {
	//
}
                                
                            

Bu kısımda neler yaptığımızı detaylıca inceleyelim. Öncelikle:

                                
                                    add_action('admin_menu', 'benim_eklentim');
                                
                            

diyerek WordPress admin panelinde yeni bir aksiyon başlatarak benim_eklentim adında bir fonksiyonu başlattığımızı bildirdik. Hemen alt kısımda

                                
                                    function benim_eklentim() {
                                
                            

ile tanıttığımız fonksiyonumuzu hazırlamaya başladık. Burada ise yine WordPress’in istediği şablonu kullanarak

                                
                                    add_menu_page()
                                
                            

ile eklentimizi WordPress admin panelimize tanıtmış olduk. İçine yazdığımız bilgilerde eklentimizin menüde görünecek ismini, sayfada görünecek ismini, standart ayarlarını, eklentimizin URL’ini ve eklentimizde kullanacağımız fonksiyonu yazdık. Ardından eklediğimiz

                                
                                    function benim_eklentim_fonksiyonum() { }
                                
                            

fonksiyonu ile eklenti fonksiyonumuzu başlatmış olduk. Şimdi öncelikle bir kontrol edelim bakalım eklentimiz gerçekten panelde vs. görünüyor mu?

wordpress sıfırdan eklenti yazma

Harika! Eklentimiz panelimizde görünüyor! Şimdi sıra geldi eklentiyi etkinleştirip test etmeye.

Eklentiyi Etkinleştirip Test Etme

wordpress kendi eklentini yazmak

Eklentimizi başarıyla oluşturduk. Şimdi eklentimizi etkinleştiriyoruz. Etkinleştirme sonrasında sol tarafta yer alan menümüzde eklentinin geldiğini görüyoruz. Buraya kadar herşeyimiz yolunda gidiyor! Şimdi dilerseniz yeni bir fonksiyon yazalım ve bakalım gerçekten eklentimiz başarıyla çalışıyor mu? Kodlarımızı bir kez daha hatırlayalım. İndex.php dosyasında kullandığımız tüm kodlar şu şekildeydi:

                                
                                    /*
Plugin Name: Benim Eklentim
Plugin URI: /benim-eklentim
Description: Benim Eklentim deneme bir eklentidir.
Version: 1.0
Author: Mert Kocakaya
Author URI: https://www.mertkocakaya.com
License: GNU
*/

	add_action('admin_menu', 'benim_eklentim');

	function benim_eklentim() {
		add_menu_page('Benim Eklentim', 'Benim Eklentim', 'manage_options', 'benim-eklentim', 'benim_eklentim_fonksiyonum');
	}

	function benim_eklentim_fonksiyonum() {
		//
	}
                                
                            

Eklenti sayfamıza girerek herhangi bir hata vs. olmadığını kontrol ediyoruz.

wordpress eklenti sayfası

Harika! Eklenti sayfamızda herhangi bir hata kodu dönmüyor. Şimdi eklenti sayfamıza bir “echo” ekleyerek yansımasını kontrol edelim. Bunun için yukarıda oluşturduğumuz benim_eklentim_fonksiyonum isimli fonksiyonumuzun içerisinde yeni bir echo değeri oluşturuyorum.

                                
                                    function benim_eklentim_fonksiyonum() {
	echo 'Merhabalar. Bu yeni eklentimiz.';
}
                                
                            

wordpress yeni bir eklenti oluşturma

Harika! Çıktımız ekrana yansıdı! Bu da demek oluyor ki eklentimiz başarıyla çalışıyor! Şimdi sıra geldi eklentimize özel CSS dosyamızı dahil etmeye.

Kendi Stil Dosyalarımızı Eklentiye Dahil Etme

Kendi CSS dosyalarımızı eklentimize dahil etmek için WordPress’in kendi include methodlarını kullanmamız gerekiyor. Bunun için wp_enqueue_style methodunu kullanacağız. Fonksiyonumun içerisine aşağıdaki kodu ekliyorum:

                                
                                    wp_enqueue_style( 'benim_eklentim_style', plugins_url( 'css/style.css', __FILE__ ), '', '1.0' );
                                
                            

Burada dikkat etmeniz gereken nokta, eklenti klasörümüzün içerisinde dilersek “css” adında bir klasör oluşturabilir dilersek direk eklentimizin ana dizinine atabiliriz. Ancak burada stil dosyamızı çağırırken “plugins_url” kullanıyoruz. Böylece WordPress bizim yerimize eklentinin yer aldığı klasörü direk tespit ediyor. Şimdi eklenti dosyalarımızda “css” adında bir klasör oluşturup içerisine “style.css” adında bir dosya oluşturacağız. CSS dosyamın içerisinde test için şöyle bir ekleme yapıyorum:

                                
                                    body { background-color: orange; }
                                
                            

CSS dosyamın başarıyla eklentime dahil olduğunu ve işlevsel olduğunu görebilmek için ufak bir CSS koduyla body’e bir arka plan rengi atadım. Şimdi bakalım eklenti sayfamızda gerçekten stil dosyamız işlevsel mi?

wordpress eklentiye css dahil etme

Harika! Eklentime dahil ettiğim stil dosyam başarıyla çalışıyor! Bu noktadan sonra artık yapılması gereken kendi fonksiyonlarımı üreterek kendi eklentilerimi hazırlamak! Sıra geldi eklentimize bazı güvenlik aşamalarını eklemeye.

WordPress Eklentisi İçin Güvenlik Methodları

Bu başlıkta, eklentimiz için WordPress’in şart koştuğu bazı güvenlik tedbirlerinden bahsedeceğim. Örneğin admin olmayan bir kullanıcının eklentiye erişmemesi, web sitenizden veri sızdırmaması ve indekslenme gibi hack saldırılarına karşı WordPress, bazı oturum (session) güvenlik önlemlerini uygulamamızı istiyor. Bunun için öncelikle eklentimizin en başına:

                                
                                    if ( ! defined( 'ABSPATH' ) ) exit;
                                
                            

ekliyoruz. Böylece eklentimize izinsiz bir kullanıcı erişim sağlamak istediği zaman web sitemizden çıkartmış oluyoruz. Bunun yanı sıra eğer eklentimizde veritabanı vb. işlemler kullanacaksak eklentimizde yukarıdaki güvenlik sorgusundan hemen sonra:

                                
                                    if (current_user_can('upload_files')) { //EKLENTİ KODLARI BURAYA }
                                
                            

eklemeniz ve bu koşulun içine eklenti kodlarımızı yazmamız gerekiyor. Veritabanı işlemlerinde, herhangi bir veri çekme ve listeleme işlemleri veya POST işlemleri kullanıyorsanız, verilerde sanitize_text_field() kullanmanız gerekiyor. Örneğin veritabanından bir bilgi çekiyoruz, burada güvenlik için WordPress, çekilen veriyi şu şekilde almamızı istiyor:

                                
                                    $cekilenveri = sanitize_text_field($_POST['postedilenveri']);
                                
                            

Son olarak çektiğiniz verileri ya da post edilen herhangi bir veriyi “echo, print vb.” methodlarla HTML içerisinde yayınlayacaksanız wp_kses_post() kullanmanız gerekmektedir. Örneğin yukarıda bir veriyi post etmiştik şimdi bu veriyi echo ile yazdıralım:

                                
                                    echo wp_kses_post($cekilenveri);
                                
                            

Güvenlik aşamalarımızı tamamladıktan sonra sıra geldi eklentimize readme.txt dosyası oluşturmaya.

Readme.txt dosyası oluşturmak

Eklentimizi tamamladıktan sonra eklememi gereken son dosya “readme.txt” dosyasıdır. Bu dosya eklentimiz hakkında bilgi veren, güncellemeleri ve kurulum bilgilerini eklediğimiz beni oku dosyasıdır. Örnek bir metin içeriğini paylaşıyorum:

                                
                                    === Benim Eklentim ===

Contributors: Mert Kocakaya
Tags: eklentim, benim eklentim, anahtarkelimeler
Requires at least: 4.6
Tested up to: 5.5
Stable tag: 1.4
Requires PHP: 5.7
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

== Description ==
Benim eklentim deneme için hazırladığımız bir WordPress eklentisidir.

== Installation ==

= Automatic Installation =
Once you have entered the WordPress panel, you can automatically install the plugin by searching for “Benim Eklentim” in the “Install Add-ons” page…

= Manual Installation =
1. Load the “benim-eklentim” folder in the ZIP file you downloaded into the “wp-content/plugins” folder in the directory of your WordPress installation.
2. From your WordPress panel, go to the “Plugins” page and activate the “Benim Eklentim” plugin.
It’s that easy! Now you can start benim eklentim.

== Frequently Asked Questions ==

= Is there a setting panel? =
Yes there is.

== Screenshots ==
1. An image from the setting panel of the “Benim Eklentim” plug-in.

== Changelog ==
                                
                            

Eklentimizin otomatik veyahut manuel kurulum bilgilerini ekledik ve gerekli bilgileri girdik. Sıra geldi son aşamaya.

Eklentiyi WordPress.Org Adresinde Yayınlamak

Bu aşamada eklentimizi tamamladıktan sonra, eklenti dosyalarımızı .zip formatında kaydediyoruz. (Örn: benim-eklentim.zip) Ardından WordPress.Org’un paylaşmış olduğu Add Your Plugin kısmından (Wordpress Add Your Plugin) eklentimizin zip dosyasını yükleyerek WordPress’in onayına sunuyoruz. Eklentimizin onaylanması durumunda WordPress bizlere bir onay maili ve SVN kimliği göndermektedir. Onaylanan bir eklentiyi SVN ile WordPress’e göndermek için uygulamanız gereken başlıkları WordPress SVN Eklenti Yayınlama başlığımızdan takip edebilirsiniz. Eklentinizde olabilecek hatalarda WordPress bu hataları ve çözüm yöntemlerini anlatan bir mail gönderip, hataları düzeltmenizi istemektedir. Hataları düzelttikten sonra eklentinizi tekrardan size gönderilen maili yanıtlayarak paylaşabilirsiniz. Eklenti için oluşturduğumuz klasörümüz artık bu şekilde:

wordpress eklenti yayınlama

Dikkat Edilmesi Gereken Bazı Unsurlar

Eklentimizi hazırlarken ve WordPress.Org’a gönderirken dikkat etmemiz gereken bazı unsurlar mevcut. Şimdi bu unsurları maddeler halinde yazalım.

  • Öncelikle eklentinizde kullandığınız dosya yollarında, görsel, css, js vb. işlemlerle kullanırken mutlaka yukarıda değindiğimiz plugins_url() methodunu kullanmalısınız. Çünkü WordPress dosyaları açık kaynak kodlu ve esnektir. Siz wp-content/plugins yolunu kullanıyor olabilirsiniz ancak bir başkası wp-content/eklentilerim şeklinde bir yol da kullanabilir. Bu yüzden WordPress, eklentilerimizde dosya yolunu ben bulurum diyerek bize plugins_url() işlevini sunmuştur.
  • Stil ve JS dosyalarını dahil ederken wp_enqueue_style() ve wp_enqueue_script() işlevlerini kullanın. Eski usül HTML’de <link> kullandığımız veya <script> methodlarını veya PHP’deki “include” methodlarını kullanmayacağız.
  • Eklentinizi yayınlamadan önce mutlaka bir tane readme.txt dosyası oluşturup bu dosyanın içerisinde eklenti hakkında bilgiler verin.
  • Güvenlik aşamalarını eksiksiz uygulamaya çalışın çünkü bu aşama WordPress için oldukça önemli.

Aklınıza takılan yahut takıldığınız tüm noktaları bu başlık altında sorabilirsiniz. Herkese iyi çalışmalar dileriz! :)