WordPress veritabanından veri çekmek

WordPress’in hazır fonksiyonları sayesinde tema düzenleme oldukça kolayken hazır fonksiyonlar dışında sisteme müdahale etmek aynı oranda zorlaşıyor.
WordPress alt yapısını kullanan bir siteniz ve birde html sayfanız veya baÅŸka bir cms sisteminiz var. WordPress’te yazdığınız son yazıların bu sayfada yayınlamak istiyorsunuz. İşte burada tam olarak bunu anlatıyoruz.

WordPress veritabanına bağlanmak

Öncelikle veritabanına bağlanalım.
VERİTABANI_KULLANICI_ADINIZ, VERİTABANI_İSMİNİZ, ŞİFRENİZ alanlarını veritabanı bilgilerinize göre doldurun.

<?php
$dbhost = "localhost";
$dbuser = "VERİTABANI_KULLANICI_ADINIZ";
$dbpass = "ŞİFRENİZ";
$dbdata = "VERİTABANI_İSMİNİZ";

if (!@mysql_connect($dbhost, $dbuser, $dbpass)) {
die("Veritabanına bağlanılamadı...
HATA: ".mysql_error());
}

if (!@mysql_select_db($dbdata)) {
die("Veritabanı seçilemedi
HATA: ".mysql_error());
}
?>

WordPress veritabanından yazı çekmek

Aşağıdaki kodları sitenize göre düzenleyip yayınlamak istediğiniz yere eklerseniz wordpress sitenizdeki son 10 yazı alt alta görüntülenir.
www.siteadi.com yerine site adresinizi yazınız.

<?php
$dbhost = "localhost";
$dbuser = "VERİTABANI_KULLANICI_ADINIZ";
$dbpass = "ŞİFRENİZ";
$dbdata = "VERİTABANI_İSMİNİZ";

if (!@mysql_connect($dbhost, $dbuser, $dbpass)) {
die("Veritabanına bağlanılamadı...<br>HATA: ".mysql_error());
}
if (!@mysql_select_db($dbdata)) {
die("Veritabanı seçilemedi<br>HATA: ".mysql_error());
}

$sonuclar1 = mysql_query( "SELECT id, post_name, post_title FROM wp_posts ORDER by id DESC limit 0,10");
while($row=mysql_fetch_assoc($sonuclar1))
{

echo "<a href=\"http://www.siteadi.com/$row[post_name]\" title=\"$row[post_title]\">";
echo "$row[post_title]</a><br />";

}
?>

Açıklamalar

Yukarıdaki kod sayesinde wp_posts tablosuna bağlandık (eğer tablo ön ekini değiştirdiyseniz wp yerine değiştirdiğiniz ön eki yazın) yazıların id sıralamasına göre id, post_name, post_title, verilerini çektik.

id: yazı id’si.
post_name: yazı kalıcı bağlantısı.
post_title: yazı başlığı.

$row[post_title]

yazdığınız yerde yazı başlığınız görüntülenir.

Üstte verdiğim örnekle veritabanından diğer verileri de çekebilirsiniz mesela post_content ile yazı içeriğini çekebilirsiniz.

Listelenecek yazı adedi

Şuan 10 adet yazı listeleniyor, aşağıdaki satırda 10 yazan yer listenecek yazı adetini belirtiyor ihtiyacınıza göre düzeltebilirsiniz.

$sonuclar1 = mysql_query( "SELECT id, post_name, post_title FROM wp_posts ORDER by id DESC limit 0,10");

Kalıcı bağlantı kullanmıyorsanız

Kalıcı bağlantı kullanmıyorsanız kodlarda ufak bir değişiklik yapmalı, aşağıdaki satırda yaptığım gibi post_name yazan yeri id olarak değiştirmelisiniz.

echo "<a href=\"http://www.siteadi.com/$row[id]\" title=\"$row[post_title]\">";

Yazı sürümleri ve otomatik kayıt problemi

Yazı sürümleri wordpess 2.6′dan baÅŸlayıp günümüze kadar gelen (3.0) wordpress sürümlerinde mevcut. Son x yazıyı listelerken eÄŸer yazı sürümleri ve otomatik kayıt özelliÄŸi açıksa wp_posts tablosuna aynı baÅŸlıklı bir/birçok yazı daha ekliyor. Bu da aynı isimde kayıtlar listelemeye sebep oluyor. Zaten çoÄŸu wordpress kullanıcısı yazı sürümleri özelliÄŸini kapatmış. yazı sürümleri özelliÄŸini kapatmak için wp-config.php dosyasını açıp en alt satıra ÅŸu kodu yazmalısınız:

define('WP_POST_REVISIONS', false);

Yazı Sürümlerini Silmek için buraya

Autosave özelliğini kapatmak ve diğerlerini silmek için buraya

Türkçe karakter problemi

Eğer türkçe karakter problemiyle karşılaşırsanız aşağıdaki kodu

mysql_query("SET NAMES 'utf8'");

şu kodunun altına ekleyin:

if (!@mysql_select_db($dbdata)) {
die("Veritabanı seçilemedi<br>HATA: ".mysql_error());
}

Şu şekilkde görünecek:

if (!@mysql_connect($dbhost, $dbuser, $dbpass)) {
die("Veritabanına bağlanılamadı...<br>HATA: ".mysql_error());
}
if (!@mysql_select_db($dbdata)) {
die("Veritabanı seçilemedi<br>HATA: ".mysql_error());
}
mysql_query("SET NAMES 'utf8'");

WordPress veritabanından yazı çekmeyi ve karşılaÅŸtığım problemleri detaylı anlatmaya çalıştım, daha detaylı anlatım için php ve html’yi giriÅŸ bölümünden anlatmaya baÅŸlamak gerekiyor sanırım..
Şimdilik bu kadar. Hızlıca yazdım, eskikler olabilir veya eklemek istedikleriniz olabilir. Yorum formu aracılığıyla yazarsanız cevaplamaya çalışırım.




Bir Yorum to “WordPress veritabanından veri çekmek”

  1. doruk 
    10 Ocak 2012

    TeÅŸekkür ediyorum. Tam aradığım ÅŸeyi pat diye burda buldum. Yanlız yazı 2010′da yazılmış güncel wordpress ile ilgili yada sonrada karşılaÅŸtığın hara çözümleriyle ilgili bir geliÅŸme varsa güncelleme yapabilirmisin yazıda?


Yorum Aparatı

:) Tüm gülücükleri göster »