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]
<?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());
}
?>
[/php]

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]
<?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 />";

}
?>
[/php]

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ığı.

[php]$row[post_title][/php]

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.

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

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.

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

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:

[php]define(‘WP_POST_REVISIONS’, false);[/php]

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

[php]mysql_query("SET NAMES ‘utf8’");[/php]

şu kodunun altına ekleyin:

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

Şu şekilkde görünecek:

[php]
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’");
[/php]

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.

7 yorum “WordPress veritabanından veri çekmek

  1. 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?

  2. merhaba; öncelikle teşekkür ederim.kodlama bilmeden anlattığınız konuyla istediğimi yapabildim.Başlıkları çektim her şey güzel fakat bu otomatik kayıt ile ilgili işlemi yaptığım halde yeni bir yazı eklendiğinde çift title çekiyor.bunu otomatik kayıt olayını ebediyen kapatmanın bir yolu yokmudur?

  3. @Ahmet konuda yazı sürümleri ve autosave özelliğini kapatmakla ilgili satırlara bakınız.

  4. verilen kod da yayınlanmış yayınlanmamış taslak vs.. bütün içerikleri çekiyor.
    sadece yayınlanmış yazıları göstermek istiyorsanız aşağıdaki kodu gerekli yer ile değiştirin.

    $sonuclar1 = mysql_query( “SELECT id, post_name, post_title FROM wp_posts WHERE post_status = ‘publish’ ORDER by id DESC limit 0,10”);

  5. merhaba, çok yararlı bilgi. burda SİL,GÜNCELLE,EKLE gibi seçenekleride anlatırsan çok şahane olur

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir