Yeni Üretilenler
Sende Tıkla
Etiketler

query_posts sayfalama hatası

Pazartesi, Temmuz 13th, 2009 | wordpress | ercani

Daha önce buradaki yazımda query_posts kullanımını anlatmıştım. Bu fonksiyon anasayfada gösterdiğimiz yazılarda, istediğimiz kategorinin yazılarını çıkarma yada sadece o kategoriye ait yazıları göstermeye yarıyordu. Fakat bu fonksiyon kullanıldığında bir sorun ortaya çıktığını gördüm. Sayfalama dediğimiz pagenavi eklentisi çalışmıyordu. Aslında çalışmayan eklenti değil döngüdür. yazıların çıktığı döngü içerisi hep anasayfayı gösteriyordu.

Benim yapmak istediğim anasayfada iki döngü oluşacak. Birisinde son yazılar gösterilecek ama “wp tema cümbüşü” isimli kategorideki yazılar burada gösterilsin istemiyorum.
İkincisinde de sadece “wp tema cümbüşü” kategorisindekiler görünsün istiyorum. Bunun için bu fonksiyonu kullandım ama dediğim gibi sayfalama hatası oluştu. İnternette de bir çok kişi bunu sormuş , bende bir yöntem geliştirdim onu anlatayım.

get_the_category() fonksiyonu bir kategorinin adını içinde barındırır. Öncelikle aşağıdaki kodlarla bu fonksiyondan kategori adını çekelim.

<?php $category = get_the_category();
$cat_name = $category[0]->cat_name; ?>

burada  $category[0]bize kategorinin adını verir ve bu adı $cat_name isimli değişkene yazar. Bu ismi döngü içerisinde kullanabiliriz. Eğer “wp tema cümbüşü” ise kategori adı , o zaman o kategoriyi atla ve diğer kategorideki yazıları basmaya devam et diyeceğiz.

öncelikle yazılarımızın çıktığı döngü şudur;

<?php while (have_posts()) :the_post(); ?> – Burası döngünün başı
<div  id=”post-<?php the_ID(); ?>”></div>
<div>
<h3><a href=”<?php the_permalink(); ?>” rel=”bookmark” title=”<?php the_title(); ?>”><?php the_title(); ?></a></h3>
<?php the_excerpt(); ?>
</div>
<?php endwhile; ?>
– burası döngünün sonu

bu döngüye aşağıdaki gibi kodları yerleştiriyoruz.

<?php while (have_posts()) :the_post(); ?>    – Burası döngünün başı
<?php $category = get_the_category();
$cat_name = $category[0]->cat_name; ?>
<?php if ( $cat_name != ‘wp tema cümbüşü’): ?>

<div  id=”post-<?php the_ID(); ?>”></div>
<div>
<h3><a href=”<?php the_permalink(); ?>” rel=”bookmark” title=”<?php the_title(); ?>”><?php the_title(); ?></a></h3>
<?php the_excerpt(); ?>
</div>
<?php endif; ?>
<?php endwhile; ?>  – burası döngünün sonu

yeşil ile gösterdiğim kodları ekleyince artık “wp tema cümbüşü” kategorisindeki yazılar gösterilmeyecektir.
Şimdi ikinci aşamaya yani sadece “wp tema cümbüşü” kategorisindeki yazıları göstermeye geldi. Bunun için sadece döngideki if ifadesinde != yerine == diyeceğim. Yani eğer kategori adı “wp tema cümbüşü” ise yazıları bas. o zaman ikinci döngümüz aşağıdaki gibi olacaktır.

<?php while (have_posts()) :the_post(); ?>    – Burası döngünün başı
<?php $category = get_the_category();
$cat_name = $category[0]->cat_name; ?>
<?php if ( $cat_name == ‘wp tema cümbüşü’): ?>

<div  id=”post-<?php the_ID(); ?>”></div>
<div>
<h3><a href=”<?php the_permalink(); ?>” rel=”bookmark” title=”<?php the_title(); ?>”><?php the_title(); ?></a></h3>
<?php the_excerpt(); ?>
</div>
<?php endif; ?>
<?php endwhile; ?>  – burası döngünün sonu

Böylelikle bir sayfada iki döngü ve bu döngülerde istediğimiz kategorinin yazılarını çıkarabileceğiz.

2 KonuşmaBakalım Kim Ne Demiş?


1
FFatih
16 Ağustos 2009

Bende aynı sorunla karşılaşmıştım ve araştırmalarım sonucu daha doğru bir çözüm buldum (Burada). Zira sizin önerdiğiniz yöntem kayıt sayısı arttığında permormans sorununa yol açabilir :) .


$paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
query_posts(“cat=123&paged=$paged”);

Anlaşılacağı üzere sorun sorguda sayfa numarasının gönderilmemesinden kaynaklanıyormuş.

Malesef bu gibi konularda geliştiriciler için çok az türkçe kaynak var. Bu açıdan içeriğinizin hoşuma gittiğini belirtmeliyim. Başarılar.


2
ercani
16 Ağustos 2009

Evet ne yazıkki türkçe içerik bu konuda az. Ama zaman geçtikçe bu içeriklerle zengin bir kaynak sahibi oluruz umarım.

~Sadece Düşünme Sende Konuş~

Markup Controls
Emoticons Smile Grin Sad Surprised Shocked Confused Cool Mad Razz Neutral Wink Lol Red Face Cry Evil Twisted Roll Exclaim Question Idea Arrow Mr Green

NOT:Kod Eklerken, kodu yazdıktan sonra kodları işaretleyip "Kod Ekle" butonuna basalım.

Yazılar Emailine Gelsin

Email Adresinizi Yazın:

Delivered by FeedBurner

Site İstatistik

  • 204 adet yazı var.
  • 2,045 adet yorum var.
  • 9 Kişi şu anda çevrimiçi
  • 127 aynı anda maksimum çevrimiçi kişi
  • 190968 Toplam ziyaretçi