14 Nisan 2009 | 08:34
yazar: Guardian

Wp: query_posts() fonksiyonu

Kategoriler: Ajax, php, programlama, özgür yazılım
Etiketler: , , , , , , , , , , , , , ,

Wordpress içerikleri görüntülerken Loop adı verilen kendine has meşhur döngüyü oluşturur ve bu döngü sayfada işlenen kriterlere göre veritabanındaki içeriklerin girildiği tabloda bazı seçim (select) işlevini gerçekleştirir. Böylece o anki kriterlere göre veritabanından seçilen satırlar (post verileri) döngüde işlem görürler.

Bu kirterlerin en önemlileri GET metodu ile tanımlanan aşağıdaki verilerdir:

p=[post_id_verisi]

görüntülenecek post verisinin id bilgisini verir. Böylece WP görüntülenecek sayfanın bir post içeriği olduğunu anlar ve ilgili verileri veritabanından alır ve yazdırır.

page_id=[sayfa_id_bilgisi]

görüntülenecek sabit sayfa verisinin id bilgisini verir. WP bu veri sayesinde görüntülenecek içeriğin bir sayfa olduğunu anlar ve veritabanındaki ilgili tablodan işlem yaparak verileri yazdırır.

cat=[kategori_id_bilgisi]

WP bu değişken sayesinde id bilgisi verilen kategoriye ait içeriklerin listelenmesi gerektiğini anlar ve ilgili tablodan verilen id bilgisine ait içerikleri listeler.

tag=[etiket_id_bilgisi]

WP bu değişken sayesinde id bilgisi verilen etikete ait içeriklerin listeleneceğini anlar ve ilgili veritabanı tablosundan verileri listeler.

Wordpress’in sayfaları, içerikleri, kategori içeriklerini, etiket içeriklerini listeleme işleminde yukarıda belirtmiş olduğumuz veriler referans olarak kullanılırlar.

Bütün işlemlerde verilen referans id bilgilerine bağlı olarak veritabanının ilgili tablolarından seçim (select) işlemi gerçekleştirilir. Herhangi bir WP temasının single.php, index.php, page.php vebenzeri betiklerini incelediğinizde aşağıdaki satırları görebilirsiniz:

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

WP’ye özel bu satırlar yukarıda bahsettiğimiz kriterlere bağlı olarak seçim işlemi sonucunda veritabanından seçilen satırların işleme gireceği döngünün başlangıç satırlarıdır. Bu döngüler,

<?php endwhile; ?>

<?php endif; ?>

satırları ile sona ererler.

WP’nin temel işleyişi hakkında bu kadar önbilgi girdikten sonra asıl konumuza adım adım giriş yapalım.

Peki ya Loop döngüsünün dışına çıkarsam?

Özellikle Ajax uygulamalarında sunucuya sayfadan bağımsız yeni bir istek gönderdiğimiz zaman tek içeriğe (tek select satırı sonucuna sahip. örn: ‘p=15′ gibi) sahip kriterlerde çeşitli WP fonksiyonlarını kullanarak içeriği Loop döngüsünden bağımsız oluşturmamız mümkün olmakla birlikte bu işlemin zahmetli bir süreç gerektirdiğini kabul etmeliyiz. Aynı zamanda birden fazla içeriğe sahip olabilecek kriterler (örn: cat=3) söz konusu ise bir şekilde kendi döngümüzü oluşturmamız gerekecektir.

WP geliştiricileride bu durumu düşünerek bizlerin kendi döngülerinden istediğimiz anda yararlanabilmemizi sağlayan bir WP fonksiyonu geliştirmişler: query_posts().

query_posts() fonksiyonu işlevi

Bu kullanışlı fonksiyon bizlere istediğimiz kriteri belirleyerek yeni bir Loop döngüsü oluşturma imkanı sağlamaktadır. Böylece yukarıda belirttiğimiz döngü başlangıcı satırlar belirttiğimiz kritere göre işlem yapabilmektedirler.

Örneğin bir betiğe id bilgisi 12 olan etiket bilgisine sahip içerikleri listeletmek istediğimizde:

<?php query_posts(tag=12);?>

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

[WP fonksiyonlarını içeren tasarıma ait HTML kodları]

<?php endwhile; ?>

<?php endif; ?>

betiğe id bilgisi 9 olan kategori bilgisine sahip içerikleri listeletmek istediğimizde:

<?php query_posts(cat=9);?>

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

[WP fonksiyonlarını içeren tasarıma ait HTML kodları]

<?php endwhile; ?>

<?php endif; ?>

betiğe id bilgisi 3 olan post içeriğini görüntületmek istediğimizde istediğimizde:

<?php query_posts(p=3);?>

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

[WP fonksiyonlarını içeren tasarıma ait HTML kodları]

<?php endwhile; ?>

<?php endif; ?>

yöntemlerini kullanabilmekteyiz. Wp‘in işleyişini daha iyi kavramak için çeşitli Wp temalarının betiklerini incelemenizi ve aynı dizinde bunlardan bağımsız benzer bir betik oluştururarak bu yöntemleri betiğinize uygulamanızı ve tarayıcınızdan ilgili betiğinizi çağırarak betiğinizi test etmenizi tavsiye ederim. Ancak bunun için ilk işlem olarak betiğinizin en üstünde wp-config.php betiğini çağırmanız gerektiğini unutmayın.

Anlaşılmayan noktalar üzerine sorulan sorular beni sevindirecektir. :)

4.390 defa okundu | Yorum Yaz

2 adet yorum var

  • Parametreler

    * cat=3 – id’si 3 olan kategorideki yazılar
    * category_name=kategori adı – Adını girdiğiniz kategoriye ait yazılar
    * author_name=yazar adı – Adını girdiğiniz yazara ait yazılar
    * author=3 – id’sini girdiğiniz bir yazarın yazıları
    * p=1 – idsini girdiğiniz bir yazıyı göstermek
    * name=yazı adı – İstediğiniz bir yazıyı göstermek
    * page_id=7 – id’si 7 olan sayfayı gösterir
    * pagename=sayfa adı – Herhangi bir sayfayı göstermek için
    * showposts=10 – Girdiğiniz değer kadar yazı gösterilir
    * hour= – İstediğiniz bir saate ait yazılar
    * minute= – İstediğiniz dakikaya ait yazılar
    * second= – İstediğiniz saniyeye ait yazılar
    * day= – İstediğiniz bir güne ait yazılar
    * monthnum= – İstediğiniz aya ait yazılar
    * year= – İstediğiniz yıla ait yazılar
    * paged=2 – İkinci sayfaya ait yazılar
    * posts_per_page=10 – Sayfa başına kaç tane yazı gösterileceğini belirler. -1 değer tüm yazıları gösterir.
    * order=ASC – Yazıları eskiden yeniye doğru sıralar. DESC değeri yeniden eskiye doğru sıralar.

    Alıntı: sebvan.com

  • Yukarda ki yazıda etiket bilgi sorgusu olarak query_post(tag=12) hatalı bilgi verilmiş.

    Doğrusu:
    query_post(tag_id=12)

    Codex sayfasından diğer sorgu değerlerine bakıla bilir.

    Yazın için teşekkürler. Kolay gelsin.

Cevap yazın

* kararkteri ile işaretlenmiş alanların doldurulması zorunludur.

Share/Save/Bookmark