Merhabalar, bu gün sizlere wordpress için eklenti nasıl yapılır, bu işin yolu yordamı nedir, anlatmaya çalışacağım, Öncelikle şunu bilmelisiniz, wordpress php bir sistemdir, bu nedenle orta düzeyde de olsa php bilginizin olması gerekir, zira php kodlar, wordpress fonksiyonları vb. birçok şey kullanacağız. Burada size sıfırdan eklenti yapımını anlatacağım, ancak olayı kavrayabilmeniz için, en azından php de fonksiyon nedir, değişken nedir ve nasıl tanımlanır, get post nedir, ne işimize yarar, sql sorgusu nedir ve nasıl yapılır gibi şeyleri bilmelisiniz, aksi takdirde anlatacaklarımızın bir anlamı olmaz. Bu makalemizde php yazmayı değil, wordpress te var olan fonksiyon, hook, class gibi yapıların nasıl kullanılacağını anlatacağım.
Öncelikle wp-content/plugins dizininde bir php dosyası yada bir klasor oluşturup içersine klasor adıyla aynı olacak şekilde boş bir php dosyası oluşturuyoruz. ve içersine alttaki şablonu yapıştırıyoruz. Bu şablon standart olup, herhangi bir php kod içermez, bu şablon sadece wordpress in algılayabileceği şekilde eklenti hakkında bilgilendirmeler bulunur. Açıklama gereği duymuyorum karşılıkları açık ve net şekilde kendinize göre düzenleyebilirsiniz.
<?php
/**
* @package Krm_Ornek
* @version 1.0
*/
/*
Plugin Name: Ornek Eklenti
Plugin URI: http://www.kerimyilmaz.com.tr/
Description: Bu eklenti örnek amaçlı yapılmıştır.
Author: Kerim YILMAZ
Version: 1.0
Author URI: http://www.kerimyilmaz.com.tr/
*/
?>
Ardından wordpress admin paneli üzerinden yüklü eklentilerde oluşturduğunuz bu eklentiyi görüp aktif yada pasif yapabilirsiniz. Ekran görüntüsü şu şekilde olacaktır.

Eklentiyi etkinleştir diyerek eklentiyi yazmaya başlayabiliriz.
Şimdi öncelikle admin panelinde yönetim sayfasında eklentimizin sayfasını bir fonksiyon oluşturarak içersinde yapılandırıyoruz.
function krm_ornek_ayar() {
echo '<div class="wrap">';
echo '<p>Eklenti yönetim sayfası</p>';
echo '</div>';
}
burda krm_ornek_ayar adında bir fonksiyon oluşturdum. Siz farklı bir isimde oluşturabilirsiniz. içeriği standar html ve php kodlar olabilir. Bu fonksiyon içeriği admin panelindeki eklenti ayar sayfasını oluşturacak.
Şimdi admin panelinde ki menüye eklentimizin linkini eklemek için bir ayar oluşturuyoruz.
function krm_ornek_menu() {
add_options_page( 'Krm Ornek Ayarlar', 'Krm Ornek', 'manage_options', 'krm_ornek', 'krm_ornek_ayar' );
}
Wordpress referans sayfasında wordpress fonksiyonlarını bulabilirsiniz.
add_options_page('eklenti sayfa titlesi','eklenti menüdeki link ismi','Hangi menü üzerine dahil edileceği','eklenti sayfasındaki benzersiz get parametresi','çalışacak fonksiyon adı');
Şeklinde kendinize göre yapılandırabilirsiniz. oluşturduğumuz krm_ornek_ayar fonksiyonunu menüde çalıştırılacak fonksiyon olarak tanımladık. ardından son olarak, oluşturduğumuz bu menu ayar yapılandırmasını admin_menu plugin referansı olarak action ediyoruz.
add_action('admin_menu', 'krm_ornek_menu' );
Eklentimizdeki kodların son görünüşü şu şekilde olacaktır.
<?php
/**
* @package Krm_Ornek
* @version 1.0
*/
/*
Plugin Name: Ornek Eklenti
Plugin URI: http://www.kerimyilmaz.com.tr/
Description: Bu eklenti örnek amaçlı yapılmıştır.
Author: Kerim YILMAZ
Version: 1.0
Author URI: http://www.kerimyilmaz.com.tr/
*/
function krm_ornek_ayar() {
echo '<div class="wrap">';
echo '<p>Eklenti yönetim sayfası</p>';
echo '</div>';
}
function krm_ornek_menu() {
add_options_page( 'Krm Ornek Ayarlar', 'Krm Ornek', 'manage_options', 'krm_ornek', 'krm_ornek_ayar' );
}
add_action( 'admin_menu', 'krm_ornek_menu' );
?>
İşlemler bittikten sonra Ayarlar sekmesinde Krm Ornek menüsünü gözükecektir. ve Tıkladığınızda krm_ornek_ayar fonksiyonu çalışacaktır. Bu fonksiyon içersinde php veya html kodlar kullanarak görsel bir ayar paneli oluşturabilirsiniz.
Eklentimizde post alanına örnek bir özel alan ekleme ve bu özel alanı, postmeta olarak kayıt etme vede kayıt edilen veriyi çekme şeklinde anlatıma devam edeceğim,
Şimdi öncelikle özel alanda gözükecek input fonksiyonunu oluşturuyoruz.
function meta_box_fonksiyonu()
{
echo '<input type="text" name="krm_Ornek">';
}
Burada inputları artırabilirsiniz, en basit şekilde anlatmaya çalışacağım. Daha sonra özel alan için bir yapılandırma fonksiyonu oluşturuyoruz
function ornek_meta_box( $post ) {
add_meta_box(
'meta_box_namesi',
__( 'Ornek Meta Box' ),
'meta_box_fonksiyonu',
'post',
'normal',
'default'
);
}
Burada add_meta_box ile oluşturduğumuz özel alan ile ilgili ayarlar mevcut, meta_box_fonksiyonu yukarıda oluşturduğumuz fonksiyonun ismidir, meta_box_namesi bu kısmı kullanmayacağız. diğer kısımları sabit kullanabilirsiniz.
Plugin Api sayfasından yapılandırmalar ile ilgili daha detaylı bilgiye erişebilirsiniz. Son olarak ise oluşturduğumuz yapılandırma dosyasını action ekleyerek çalışmasını sağlayacağız.
add_action( 'add_meta_boxes_post', 'ornek_meta_box' );
Post alanına ornek_meta_box adındaki yapılandırma fonksiyonumuzu ekleyerek post sayfasında çalışmasını sağladık,
Eklentinin son görünüş hali,
<?php
/**
* @package Krm_Ornek
* @version 1.0
*/
/*
Plugin Name: Ornek Eklenti
Plugin URI: http://www.kerimyilmaz.com.tr/
Description: Bu eklenti örnek amaçlı yapılmıştır.
Author: Kerim YILMAZ
Version: 1.0
Author URI: http://www.kerimyilmaz.com.tr/
*/
function krm_ornek_ayar() {
echo '<div class="wrap">';
echo '<p>Eklenti yönetim sayfası</p>';
echo '</div>';
}
function krm_ornek_menu() {
add_options_page( 'Krm Ornek Ayarlar', 'Krm Ornek', 'manage_options', 'krm_ornek', 'krm_ornek_ayar' );
}
add_action( 'admin_menu', 'krm_ornek_menu' );
function meta_box_fonksiyonu()
{
echo '<input type="text" name="krm_Ornek">';
}
function ornek_meta_box( $post ) {
add_meta_box(
'meta_box_namesi',
__( 'Ornek Meta Box' ),
'meta_box_fonksiyonu',
'post',
'normal',
'default'
);
}
add_action( 'add_meta_boxes_post', 'ornek_meta_box' );
?>
Şekilde olmalıdır, çalıştırdığınızda post alanında

Görüntüsünü elde edeceksiniz. Örneğin bu alanı ürün fiyatı olarak farzedelim, ve post update ve ekleme anlarında ekleme ve güncelleme işlemlerini yaptıralım, ardından eklediğimiz bu özel alanı temada nasıl gösterebileceğimize bakalım.
Öncelikle save_post, yani güncelle yada, ekle içerikte işlem yapıldığında kayıt fonksiyonuna dahil oluyoruz.
function krm_Save_Post()
{
global $post_id;
$meta_key = 'krm_Ornek';
$veri = $_POST["krm_Ornek"];
$meta_value = get_post_meta( $post_id, 'krm_Ornek', true );
if ( $veri && '' == $meta_value )
add_post_meta( $post_id, $meta_key, $veri, true );
elseif ( $veri && $veri != $meta_value )
update_post_meta( $post_id, $meta_key, $veri );
elseif ( '' == $veri && $meta_value )
delete_post_meta( $post_id, $meta_key, $meta_value );
}
Şeklinde kayıt edilirken, bizim eklediğimiz özel alanında kendi kontrollerimizi yaparak veritabanına eklenmesini yada güncellenmesini sağlıyoruz. kodları pek açıklama gereği duymuyorum, add, update, delete
Daha sonra oluşturduğumuz bu fonsiyonu action ile çalışır hale getiriyoruz.
add_action( 'save_post', 'krm_Save_Post', 10, 2 );
Özel alanımız artık kayıt altına alınıyor, birde son olarak, kayıt ettiğimiz bu veriyi, özel alan inputunun value değeri olarak yazdıralım, daha önceden yazmış olduğumuz,
function meta_box_fonksiyonu()
{
echo '<input type="text" name="krm_Ornek">';
}
isimli fonksiyonu şu şekilde değiştiriyoruz.
function meta_box_fonksiyonu()
{
global $post;
$meta_value = esc_attr( get_post_meta( $post->ID, 'krm_Ornek', true ) );
echo '<input type="text" name="krm_Ornek" value="'.$meta_value.'">';
}
kolayca aldığımız veriyi, value değeri olarak yazdırıyoruz, artık özel alanımız çalışır durumda, peki bunu temamızda nasıl yazdıracağız, aynı şekilde kullanabileceğiz,
$meta_value = esc_attr( get_post_meta( $post->ID, 'krm_Ornek', true ) );
single sayfasında bu şekilde alabilirsiniz, yada değişik yöntemlerle $post->ID parametresini döngü içersinde alıp işleyebilir, yada elle yazılan bir postid değerinin de meta değerini alabilirsiniz.
Makalemizin sonuna gelmiş bulunurken, eklentinin son halini paylaşıp konuyu kapatıyorum. Soru ve görüşlerinizi yorum olarak atabilirsiniz.
Eklentimizin son hali
<?php
/**
* @package Krm_Ornek
* @version 1.0
*/
/*
Plugin Name: Ornek Eklenti
Plugin URI: http://www.kerimyilmaz.com.tr/
Description: Bu eklenti örnek amaçlı yapılmıştır.
Author: Kerim YILMAZ
Version: 1.0
Author URI: http://www.kerimyilmaz.com.tr/
*/
function krm_ornek_ayar() {
echo '<div class="wrap">';
echo '<p>Eklenti yönetim sayfası</p>';
echo '</div>';
}
function krm_ornek_menu() {
add_options_page( 'Krm Ornek Ayarlar', 'Krm Ornek', 'manage_options', 'krm_ornek', 'krm_ornek_ayar' );
}
add_action( 'admin_menu', 'krm_ornek_menu' );
function meta_box_fonksiyonu()
{
global $post;
$meta_value = esc_attr( get_post_meta( $post->ID, 'krm_Ornek', true ) );
echo '<input type="text" name="krm_Ornek" value="'.$meta_value.'">';
}
function ornek_meta_box( $post ) {
add_meta_box(
'meta_box_namesi',
__( 'Ornek Meta Box' ),
'meta_box_fonksiyonu',
'post',
'normal',
'default'
);
}
add_action( 'add_meta_boxes_post', 'ornek_meta_box' );
function krm_Save_Post()
{
global $post_id;
$meta_key = 'krm_Ornek';
$veri = $_POST["krm_Ornek"];
$meta_value = get_post_meta( $post_id, 'krm_Ornek', true );
if ( $veri && '' == $meta_value )
add_post_meta( $post_id, $meta_key, $veri, true );
elseif ( $veri && $veri != $meta_value )
update_post_meta( $post_id, $meta_key, $veri );
elseif ( '' == $veri && $meta_value )
delete_post_meta( $post_id, $meta_key, $meta_value );
}
add_action( 'save_post', 'krm_Save_Post', 10, 2 );
?>