WordPress’de Yazılan Son Mesajlar

Php, Wordpress | | 25 Kasım 2008

Merhabalar, uzun zamandır ne yazık ki yoğunluktan ötürü çok yazı yazamadım. Şimdi ise, bir çok kişiye lazım olabilecek basit bir uygulama yapımını öğreniyoruz.

Bu uygulama ile, istediğiniz bir wordpress blog’dan son mesajları çekebilirsiniz. Hem de veritabanı bilgilerine ihtiyaç duymadan, yazılan son mesajların başlığını sayfada gösterebiliriz.

İlk olarak, verileri çekebilmemiz için bize gereken şey, verileri çekeceğimiz wordpress blog sayfasının RSS adresi. Mesela, t-infection.com ‘un rss adresi http://www.t-infection.com/feed/rss/ ‘dir.

Bunu belirleyip not aldıktan sonra, PHP yazmaya başlayalım.

İlk olarak, son kaç mesajı çekeceğimizi ve hangi RSS adresinden çekeceğimizi belirtelim. Bu örnekte ben son 5 mesajı alıyorum.

___________________________________
< ?php
$mesajsayisi = 5;
$adres = “http://www.t-infection.com/feed/rss/”;
?>
___________________________________

Bunu belirttikten sonra, “for” döngüsünde kullancağımız bir geçici değer oluşturalım, bu değeri for döngüsünde kullanacağız ve mesaj sayısının bir fazlası olması gerekiyor, böylece istediğimiz sayıda mesajı alsın ve dursun.

___________________________________
< ?php
$mesajsayisi = 5;
$adres = “http://www.t-infection.com/feed/rss/”;

$c = $mesajsayisi+1;
?>
___________________________________

Şimdi ise, arasinial isminde bir fonksiyon oluşturalım. Bu fonksiyon, bir değerdeki istediğimiz bölümlerin arasındaki kısmı çekip alacak bir fonksiyondur.

___________________________________
< ?php
$mesajsayisi = 5;
$adres = “http://www.t-infection.com/feed/rss/”;

$c = $mesajsayisi+1;

function arasinial($a,$b,$data,$kacinci)
{
$x = explode($a,$data);
$z = explode($b,$x[$kacinci]);
$oh = $z[0];
if($x && $z) { return $oh; } else { return false; }
}
?>
___________________________________

Bu fonksiyonumuzu da oluşturduktan sonra, RSS sayfasını açıp içindeki verileri bir değişken olarak kaydedelim. bu iş için bize file_get_contents fonksiyonu gerekiyor.

___________________________________
< ?php
$mesajsayisi = 5;
$adres = “http://www.t-infection.com/feed/rss/”;

$c = $mesajsayisi+1;

function arasinial($a,$b,$data,$kacinci)
{
$x = explode($a,$data);
$z = explode($b,$x[$kacinci]);
$oh = $z[0];
if($x && $z) { return $oh; } else { return false; }
}

$tumsayfa = file_get_contents($adres);
?>
___________________________________

$tumsayfa değişkenine RSS içindeki verilerin tamamını aktardık. Yani, bu RSS sayfasının bütün kaynak kodunu içeriyor. Bizim şimdi yapmamız gereken, bu kaynak kodunu parçalayıp son 5 mesajı almak. Fakat o da ne! RSS sayfasının karakter kodlaması utf8 olduğu için, ISO-8859-9 kodlama kullanan sayfalarda çekilen veriler bozuk geliyor! Önce bu bozuk harfleri düzeltelim, sonra parçalamaya başlayalım.

___________________________________
< ?php
$mesajsayisi = 5;
$adres = “http://www.t-infection.com/feed/rss/”;

$c = $mesajsayisi+1;

function arasinial($a,$b,$data,$kacinci)
{
$x = explode($a,$data);
$z = explode($b,$x[$kacinci]);
$oh = $z[0];
if($x && $z) { return $oh; } else { return false; }
}

$tumsayfa = file_get_contents($adres);

$tumsayfa = str_replace(“ÄŸ”, “ğ”, $tumsayfa);
$tumsayfa = str_replace(“Ğ”, “Ğ”, $tumsayfa);
$tumsayfa = str_replace(“ü”, “ü”, $tumsayfa);
$tumsayfa = str_replace(“Ü”, “Ü”, $tumsayfa);
$tumsayfa = str_replace(“ÅŸ”, “ş”, $tumsayfa);
$tumsayfa = str_replace(“Ş”, “Ş”, $tumsayfa);
$tumsayfa = str_replace(“İ”, “İ”, $tumsayfa);
$tumsayfa = str_replace(“ı”, “ı”, $tumsayfa);
$tumsayfa = str_replace(“ö”, “ö”, $tumsayfa);
$tumsayfa = str_replace(“Ö”, “Ö”, $tumsayfa);
$tumsayfa = str_replace(“ç”, “ç”, $tumsayfa);
$tumsayfa = str_replace(“Ç”, “Ç”, $tumsayfa);
?>
___________________________________

Bu işlemi ben arka arkaya str_replace kullanarak yaptım. Türkçe karakterlerin bozuk olan utf8 karşılıklarını türkçe halleri ile değiştirdim. Aynı işlem array ile de yapılabilir, nasıl isterseniz.

Şimdi sırada RSS içindeki <item> kısımlarını kesip, yani mesajları kesip gerisini atmaya geldi. Bu iş için arasinial fonksiyonunu kullanıyoruz ve “<language>en</language>” ile “</channel>” kısımlarının arasını alıp ayrı bir değişken belirliyoruz. Böylece elimizde sadece <item> içeren mesaj kısımları kalıyor.

___________________________________
< ?php
$mesajsayisi = 5;
$adres = “http://www.t-infection.com/feed/rss/”;

$c = $mesajsayisi+1;

function arasinial($a,$b,$data,$kacinci)
{
$x = explode($a,$data);
$z = explode($b,$x[$kacinci]);
$oh = $z[0];
if($x && $z) { return $oh; } else { return false; }
}

$tumsayfa = file_get_contents($adres);

$tumsayfa = str_replace(“ÄŸ”, “ğ”, $tumsayfa);
$tumsayfa = str_replace(“Ğ”, “Ğ”, $tumsayfa);
$tumsayfa = str_replace(“ü”, “ü”, $tumsayfa);
$tumsayfa = str_replace(“Ü”, “Ü”, $tumsayfa);
$tumsayfa = str_replace(“ÅŸ”, “ş”, $tumsayfa);
$tumsayfa = str_replace(“Ş”, “Ş”, $tumsayfa);
$tumsayfa = str_replace(“İ”, “İ”, $tumsayfa);
$tumsayfa = str_replace(“ı”, “ı”, $tumsayfa);
$tumsayfa = str_replace(“ö”, “ö”, $tumsayfa);
$tumsayfa = str_replace(“Ö”, “Ö”, $tumsayfa);
$tumsayfa = str_replace(“ç”, “ç”, $tumsayfa);
$tumsayfa = str_replace(“Ç”, “Ç”, $tumsayfa);

$veriler = arasinial(“<language>en</language>”, “</channel>”, $tumsayfa, 1);
?>
___________________________________

Şimdi ise, bu <item> kısımlarının her birini parçalayalım. Bu iş için explode bize yardımcı olacak. Buradaki kritik nokta şu ki, explode fonksiyonu kullanıldığında, patlatılan değerin ilk kısmı [0] olarak atanır. Fakat biz <item> kısmını patlatacağımız için ve bizim değişkenimiz <item> ile başladığı için, ilk değer olan [0] değeri boş olacak. Bu yüzden for döngümüzü 0 yerine 1 ile başlatacağız ve yine aynı sebepten dolayı istediğimiz mesaj sayısının bir fazlası olan geçici bir değişken tanımladık.

___________________________________
< ?php
$mesajsayisi = 5;
$adres = “http://www.t-infection.com/feed/rss/”;

$c = $mesajsayisi+1;

function arasinial($a,$b,$data,$kacinci)
{
$x = explode($a,$data);
$z = explode($b,$x[$kacinci]);
$oh = $z[0];
if($x && $z) { return $oh; } else { return false; }
}

$tumsayfa = file_get_contents($adres);

$tumsayfa = str_replace(“ÄŸ”, “ğ”, $tumsayfa);
$tumsayfa = str_replace(“Ğ”, “Ğ”, $tumsayfa);
$tumsayfa = str_replace(“ü”, “ü”, $tumsayfa);
$tumsayfa = str_replace(“Ü”, “Ü”, $tumsayfa);
$tumsayfa = str_replace(“ÅŸ”, “ş”, $tumsayfa);
$tumsayfa = str_replace(“Ş”, “Ş”, $tumsayfa);
$tumsayfa = str_replace(“İ”, “İ”, $tumsayfa);
$tumsayfa = str_replace(“ı”, “ı”, $tumsayfa);
$tumsayfa = str_replace(“ö”, “ö”, $tumsayfa);
$tumsayfa = str_replace(“Ö”, “Ö”, $tumsayfa);
$tumsayfa = str_replace(“ç”, “ç”, $tumsayfa);
$tumsayfa = str_replace(“Ç”, “Ç”, $tumsayfa);

$veriler = arasinial(“<language>en</language>”, “</channel>”, $tumsayfa, 1);

$parcalar = explode(“<item>”, $veriler);
?>
___________________________________

Bu patlatma işini de yaptıktan sonra geriye sadece for döngüsü kaldı. Bu for döngüsünde <title> ve </title> kısımlarının arasını alıp bunu başlık yapacağız, “<link>” ve “</link>” kısımlarının arasını alarak bunu url yapacağız ve linkimizi oluşturacağız. Açıklamaları for döngüsünün kodlarının içinde bulacaksınız.

Bu işlemden sonra ise, aşağıdaki gibi, uygulamamız hazır ve çalışır durumda.

___________________________________
<?php
$mesajsayisi = 5;
$adres = “http://www.t-infection.com/feed/rss/”;

$c = $mesajsayisi+1;

function arasinial($a,$b,$data,$kacinci)
{
$x = explode($a,$data);
$z = explode($b,$x[$kacinci]);
$oh = $z[0];
if($x && $z) { return $oh; } else { return false; }
}

$tumsayfa = file_get_contents($adres);

$tumsayfa = str_replace(“ÄŸ”, “ğ”, $tumsayfa);
$tumsayfa = str_replace(“Ğ”, “Ğ”, $tumsayfa);
$tumsayfa = str_replace(“ü”, “ü”, $tumsayfa);
$tumsayfa = str_replace(“Ü”, “Ü”, $tumsayfa);
$tumsayfa = str_replace(“ÅŸ”, “ş”, $tumsayfa);
$tumsayfa = str_replace(“Ş”, “Ş”, $tumsayfa);
$tumsayfa = str_replace(“İ”, “İ”, $tumsayfa);
$tumsayfa = str_replace(“ı”, “ı”, $tumsayfa);
$tumsayfa = str_replace(“ö”, “ö”, $tumsayfa);
$tumsayfa = str_replace(“Ö”, “Ö”, $tumsayfa);
$tumsayfa = str_replace(“ç”, “ç”, $tumsayfa);
$tumsayfa = str_replace(“Ç”, “Ç”, $tumsayfa);

$veriler = arasinial(“<language>en</language>”, “</channel>”, $tumsayfa, 1);

$parcalar = explode(“<item>”, $veriler);

for($i=1;$i<$c;$i++) {
$a = arasinial(“<title>”, “</title>”, $parcalar[$i], 1); //explode ile parçaladğımız değerin arasını alıp değişken belirliyoruz
$b = arasinial(“<link>”, “</link>”, $parcalar[$i], 1); //explode ile parçaladğımız değerin arasını alıp değişken belirliyoruz
echo “<a href=\”".$b.”\”>”.$a.”</a><br>”; // nihayet sayfaya basılacak olan link
}
?>
___________________________________

Umarım iyi anlatabilmişimdir, umarım işinize yarar.

Dipnot: iG:Syntax Hiliter eklentisi kafayı yediği için kodları bu şekilde ekledim, anlaşılmaz olduysa affola, kodları buradan kopyalayıp Dreamweaver ya da başka bir PHP editörüne yapıştırarak daha düzgün görebilirsiniz. Ayrıca tırnakları WordPress yatırdığı için normal tırnak ile değiştirmelisiniz, yoksa hata verecektir.

Rastgele Yazılar

Bu yazı , , kelimeleriyle etiketlenmiştir. Bu yazıyı beğendiyseniz Delicious, Twitter, Facebook gibi sitelerde paylaşabilirsiniz. Yazılarımızı düzenli olarak takip etmek içinse Rss abonemiz olabilirsiniz.

WordPress’de Yazılan Son Mesajlar yazısı için 3 yorum yapılmış...

  1. Yakup Gövler diyor ki:

    Buradaki eklentinin kodlarındaki yöntemle WP’nin kendi fonksiyonları kullanılarak da başka sitelerden yazılar çekilebilir.
    XML okurken metin fonksiyonlarını değil de PHP’nin bu konulardaki özel fonksiyonlarını kullanmak daha uygun olacaktır.

  2. Eray USTA diyor ki:

    Çok faydalı bir yazı olmuş. Açıklamalarda çok güzel teşekkürker..

  3. Bartuc diyor ki:

    @Yakup Gövler,

    PHP konusunda bilgisi çok ileri düzeyde olmayan kişilere hitaben Wordpress ile ilgili bir yazı yazmaya çalıştım. Ayrıca PHP’nin bu konulardaki özel fonksiyonları bir yana, gerekli kodlama mantığını kurup uygulama konusunda basit bir örnek teşkil etmesini istedim. Umarım bu konularda başarılı olabilmişimdir.

Yorumunuzu Yazın