Wordpress Eklenti Yazarlığı – Örnek: Karalama Defteri
- Cumartesi Eki 31,2009 04:08 AM
- yazar: Berkant Aydin
- kategori: Wordpress
Sizler için hızlıca, db kullanan basit bir eklenti hazırladım. Wordpress Eklenti Yazarlığı konusunda aklınızdaki soru işaretlerinin çoğunu ortadan kaldıracaktır.
<?php
/*
Plugin Name: Karalama Defteri
Plugin URI: http://www.snowbattle.com
Description: Sisteminize kişisel notlar ekleyebileceğiniz, üyelerinize kişisel notlar ekletebileceğiniz bir karalama defteri ekler.
Author: Berkant AYDIN
Version: 1.0.
Author URI: http://www.snowbattle.com/
*/
/* Create Database - Veritabani Olusturma */
$wpdb->kd = $wpdb->prefix . 'karalamadefteri';
/*
Tablomuzun adi KaralamaDefteri olup, bunu $wpdb isimli
WP'nin veritabani sinifina $wpdb->kd olarak tanitiyoruz
*/
function karalama_defteri_kurulum() {
/* Kurulum islemini yapacak olan fonksiyonumuz, ismini istediğiniz gibi verebilirsiniz */
global $wpdb;
/* $wpdb adli WP'nin veritabani sinifini fonksiyonumuza cağiriyoruz. Fonksiyonlarimizda veritabani islemleri yapmak icin bunu
yapmamiz gerekiyor */
$db_sql="CREATE TABLE IF NOT EXISTS ".$wpdb->kd." (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`id_user` bigint(20) NOT NULL,
`n_baslik` varchar(255) NOT NULL,
`n_icerik` text NULL,
`t_ekleme` datetime,
PRIMARY KEY (`id`)
)";
/* Tablomuzu olusturacak SQL ifadesi */
$wpdb->query($db_sql);
/* SQL ifademizi calistiriyoruz */
}
if (isset($_GET['activate']) && $_GET['activate'] == 'true') {
/* Eğer kullanici "Etkinlestir" bağlantisina tikladiysa, "karalama_defteri_kurulum" fonksiyonunu cağir */
add_action('init', 'karalama_defteri_kurulum');
}
/* Admin Panel - Yonetim Paneli Olusturma */
/*
add_submenu_page(ana_menü_dosya_adi, alt_menü_sayfa_basliği, alt_menü_basliği, yetki_düzeyi, eklenti_dosyasinin_adi,
menü_basliğina_tiklandiğinda_cağirilacak_fonksiyon)
ana_menü_dosya_adi olarak post-new.php (Yaz), edit.php (Yönet), edit-comments.php (Yorumlar), link-manager.php (Bağlantilar),
themes.php (Görünüm), plugins.php (Eklentiler), users.php (Kullanicilar), options-general.php (Tercihler) dosya adlarini
kullanabilirsiniz.
yetki_düzeyi, bu menüyü kullanabilecek yöneticinin yetki düzeyini belirler ki 10 en yüksek düzeydir. Detayli level bilgisi icin
(http://codex.wordpress.org/User_Levels). eklenti_dosyasinin_adi, menüye tiklandiğinda cağirilacak dosyayi belirler, bu
parametreyi yönetim islemlerini ayri dosyada halletmek icin de kullanabiliriz, böylece eklentimizi parcalayarak kücük dosyalar
haline getirebiliriz (bu fikir simdi aklima geldi, gercekten de iyi olacaktir) ancak biz __FILE__ ifadesi ile menünün olusturulduğu
dosyayi fonksiyona bildirmis olduk.
*/
add_action('admin_menu', 'yonetime_ekle');
function yonetime_ekle() {
add_submenu_page('post-new.php', 'Karalama Defteri', 'Karalama Defteri', 3, __FILE__, 'kd_menu');
}
function kd_menu() {
global $wpdb, $user_id;
/* Veritabanini kullanacağimiz icin $wpdb sinifini global olarak tanimliyoruz, $user_ID kendinden tanimli halde wp ile geliyor. */
echo '<div>';
/* wrap isimli stil klasi yönetim panelindeki icerik bölümünü gösteriyor */
if ($_POST['islem']== 'ekle') { kd_ekle (); }
if ($_GET['islem']== 'sil') { kd_sil (); }
if ($_POST['islem']== 'duzenle') { kd_duzenle (); }
/*
Yukaridaki kontroller ile POST ya da GET'den gelen "islem" değiskeninin
değerine göre ilgili islemi yapacak fonksiyonlara dallaniyoruz
*/
$sorgu = "SELECT * FROM $wpdb->kd where id_user='$user_id' order by id desc";
$sonuclar = $wpdb->get_results($sorgu);
/*
Kayitlari listelemek icin veritabanindan aliyoruz. Ve asağidaki kodlarla
düzenli liste seklinde bir liste olusturuyor, kayitlarin sonlarina da
islem yapacak linkleri ekliyoruz.
*/
if ($sonuclar) {
echo "<strong>Kayitlar:</strong>";
echo '<table width="%100" style="border:1px #000000 solid">';
echo "<tr><td>ID</td><td>Baslik</td><td>Icerik</td><td>Eklendi</td><td></td><td></td></tr>";
foreach ($sonuclar as $sonuc) {
$id=stripslashes($sonuc->id);
$baslik=stripslashes($sonuc->n_baslik);
$icerik=stripslashes($sonuc->n_icerik);
$t_ekleme=stripslashes($sonuc->t_ekleme);
echo "<tr><td width='%10' style='border:1px #000000 solid; text-align:right;'>";
echo $id;
echo "</td><td width='%15' style='border:1px #000000 solid'>";
echo $baslik;
echo "</td><td width='%25' style='border:1px #000000 solid'>";
echo substr($icerik,3,40)."...";
echo "</td><td width='%15' style='border:1px #000000 solid; text-align:right;'>";
echo $t_ekleme;
echo "</td><td width='%7' style='border:1px #000000 solid; text-align:center;'>";
echo "[<a href='".$_SERVER['PHP_SELF']."?page=karalama_defteri.php&degistir=".$id."'>Duzenle</a>]";
echo "</td><td width='%5' style='border:1px #000000 solid; text-align:center;'>";
echo "[<a href='".$_SERVER['PHP_SELF']."?page=karalama_defteri.php&islem=sil&silno=".$id."'>Sil</a>]";
echo "</td></tr>";
}
echo "</table>";
} else { echo "Hic Kayit bulunamadi!"; }
/* Eğer düzenleme islemi yapilmak istenmemisse bos bir metin kutusu olusturuyoruz */
if (!isset($_GET['degistir'])) {
/* Değistir Denilmemisse */
?>
<form action="<?php $_SERVER['PHP_SELF'] ?>?page=karalama_defteri.php" method="post">
<fieldset>
<table width="600">
<tr>
<td>
</td>
<td>
<input type="hidden" name="id" value="" /><td>
</tr>
<tr>
<td>
Baslik
</td>
<td>
<input type="text" name="baslik" value="" />
</td>
</tr>
<tr>
<td>
Icerik
</td>
<td>
<textarea name="icerik" cols="40" rows="10"></textarea>
</td>
</tr>
<tr>
<td>
</td>
<td>
<input type="hidden" name="islem" value="ekle" />
<input type="submit" name="submit" value="Kaydet" />
</td>
</tr>
</table>
</fieldset>
</form>
<?php
}
else
{
$sorgu = "SELECT * FROM $wpdb->kd where id='$_GET[degistir]' AND id_user='$user_id' limit 1";
$sonuclar = $wpdb->get_results($sorgu);
if ($sonuclar) {
foreach ($sonuclar as $sonuc) {
$id=stripslashes($sonuc->id);
$baslik=stripslashes($sonuc->n_baslik);
$icerik=stripslashes($sonuc->n_icerik);
$deger=stripslashes($sonuc->n_deger);
}
}
?>
<form action="<?php $_SERVER['PHP_SELF'] ?>?page=karalama_defteri.php" method="post">
<fieldset>
<table width="400">
<tr>
<td>
</td>
<td>
<input type="hidden" name="id" value="<? echo $id; ?>" />
<td>
</tr>
<tr>
<td>
Baslik
</td>
<td>
<input type="text" name="baslik" value="<? echo $baslik; ?>" />
</td>
</tr>
<tr>
<td>
Icerik
</td>
<td>
<textarea name="icerik" cols="40" rows="10"><? echo $icerik ?></textarea>
</td>
</tr>
<tr>
<td>
Deger
</td>
<td>
<input type="text" name="deger" value="<? echo $deger ?>" />
</td>
</tr>
<tr>
<td>
</td>
<td>
<input type="hidden" name="islem" value="duzenle" />
<input type="submit" name="submit" value="Kaydet" />
</td>
</tr>
</table>
</fieldset>
</form>
<?
}
echo "</div>";
}
/* kd_menu Fonksiyon Sonu */
/* Yeni - New */
function kd_ekle (){
global $wpdb, $user_id;
/*
Asağidaki kod ile POST'dan gelen verileri mySQL acisindan zararsiz hale getiriyoruz
Sayisal verilerde ise (int) ifadesi ile zararsiz hale getirebiliyoruz.
*/
$baslik=$wpdb->escape($_POST['baslik']);
$icerik=$wpdb->escape($_POST['icerik']);
$sql= "INSERT INTO ".$wpdb->kd." VALUES (NULL,'".$user_id."','".$baslik."','".$icerik."', now())";
$wpdb->query($sql);
//Asağidaki koddaki "updated fade" klasi uyari mesajlarina fade efekti uyguluyor.
?>
<div id="message"><p>Yeni kayit eklendi! </p></div>
<?php
}
//Sil-Delete
function kd_sil () {
global $wpdb, $user_id;
$sql="DELETE FROM ".$wpdb->kd." WHERE id='".(int) $_GET['silno']."' AND id_user='$user_id'";
$sonuc=$wpdb->query($sql);
?>
<div id="message"><p><strong>Kayit silindi!</strong></p></div>
<?php
}
//Edit - Düzenle
function kd_duzenle () {
global $wpdb, $user_id;
$baslik=$wpdb->escape($_POST['baslik']);
$icerik=$wpdb->escape($_POST['icerik']);
$sql="UPDATE ".$wpdb->kd." SET n_baslik='".$baslik."', n_icerik='".$icerik."' where id='". (int) $_POST['id']."' AND
id_user='$user_id'";
$wpdb->query($sql);?>
<div id="message"><p><strong>Kayit duzenlendi!</strong> </p></div>
<?php
}
?>
Görüşmek üzere…
eklenti, Wordpress, Wordpress Eklenti Örneği, Wordpress Eklenti Yazarlığı, Wordpress Eklenti Yazmak
Yorum Bırakın