Berkehan BENDİVAR


DevOps Solution Architecture
Kedi ve Çay aşığı 🖤


WordPress Veritabanından Veri Çekmek (MySQL)

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 istiyorsanız doğru yerdesiniz.

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.

<?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());
}
mysql_query("SET NAMES 'utf8'");
$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 />";
}
?>

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 kapattınız ama kapatmadan önceki tüm yazı sürümlerini kaldırmak için phpmyadmin’e girip sorgu kısmından;

DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = 'revision'

sorgusunu çalıştırın eski tüm kayıtlar silinir.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir