Döngü (Loop)
WordPress Türkiye Belgeleri, özgür ansiklopedi
|
[değiştir] Giriş
Döngü mekanizması (kısaca "döngü") WordPress'in temel çalışma mekanizmasını ifade eder ve WordPress tarafından yazdığınız her bir yazının gösterilmesini sağlamak için kullanılır. WordPress döngüyü kullanarak, gösterimi yapılan sayfada bulunan her bir yazıyı içerdiği "döngü etiketleri"nin belirlediği kriterler çerçevesinde işleme alır ve yayınlar. Döngünün başlangıcı ve bitişi arasında yer alan tüm HTML ve PHP etiketleri her bir yazı için tekrarlanırlar. WordPress ile (özellikle de eklenti veya tema etiketleri ile) ilişkili bir metin okurken karşınıza çıkan "bu etiket döngü (loop) içerisinde yer almalıdır" ifadesindeki "döngü" burada bahsedilen döngüdür.
[değiştir] WordPress nasıl çalışır?
WordPress'in ilk yaptığı şey ihtiyacı olan tüm dosyaların yerli yerinde olmadığını kontrol etmektir. Daha sonra blog yöneticisi tarafından kaydedilen ayarları veri tabanından alır. Bunlar bir sayfada kaç tane yazının gösterileceği, yorumların aktifleştirilip aktifleştirilmediği gibi ayarlardır. Bu bilgileri elde ettikten sonra WordPress, kullanıcının (okurun) ondan ne istediğine bakar ve elde ettiği bilgiyi de veri tabanında ilgili yazı (veya yazılara) ulaşmakta kullanır.
Eğer kullanıcı özel bir yazı, kategori, sayfa veya tarih için istekte bulunmamışsa, WordPress daha önceden algıladığı ayarlardaki ön tanımlı bilgileri kullanarak kullanıcıya hangi yazıların sunulmak üzere hazırlanacağına karar verir. Örneğin, eğer blog yöneticisi her sayfada en fazla 5 yazının görüntülenmesini tercih etmişse, WordPress veri tabanından en yakın tarihli 5 yazıyı alır. Eğer kullanıcı özel bir yazı, kategori, sayfa ya da tarih için istekte bulunmuşsa, bu kez WordPress veri tabanından hangi yazıyı (veya yazıları) eşleştireceğine kullanıcının sağladığı bu bilgi ile karar verir.
Karar verme işlemi tamamlanınca WordPress veri tabanına ulaşır, gerekli bilgileri alır ve sonuçları bir değişkende depolar. Döngü de bu değişkeni işleme alır ve içerdiği değerleri temanıza yansıtır.
Ön tanımlı olarak, eğer kullanıcı özel bir yazıyı, sayfayı, kategoriyi ya da tarihi seçmemişse, WordPress içeriği görüntülemek için, tema dosyaları arasında bulunan, index.php dosyasından yararlanır. Dolayısı ile döngü'nün anlatıldığı bu makalede ilk önce sadece index.php ve blogunuzun ana sayfasının görüntülenmesi üzerine yoğunlaşılacaktır. İşlerin nasıl yürüdüğünü anladıktan sonra diğer tema dosyalarının barıdndırdığı döngü mekanizmaları üzerinde tartışacağız.
[değiştir] Dünyanın en basit index sayfası
Aşağıdaki kod döngünün oluşturulduğu koşullar doğrultusunda, sadece her bir yazının içeriğin gösterimini sağlayacak, tamamen fonksiyonel bir index sayfasıdır. Bu kodun size gösterilmesinin tek amacı fonksiyonel bir "döngü"nün gerçekleşebilmesi için ne kadar az kod gerektiğini göstermektir. Temanızın index.php dosyası içinde bu kodlar dışındaki tüm diğer içerik temanızın göze hoş görünmesini sağlayan CSS, XHTML ve PHP tanımlamalarıdır.
<?php
get_header();
if (have_posts()) :
while (have_posts()) :
the_post();
the_content();
endwhile;
endif;
get_sidebar();
get_footer();
?>
Şimdi bu kodlar dışında kalan ve temanızın göze hoş kılan diğer kodlara bir bakalım.
[değiştir] Öntanımlı döngü
Yazının bu bölümünde standart bir WordPress kurulumundaki Default ve Classic temaları ile birlikte gelen öntanımlı döngü mekanizmasının kullanımını adım adım inceleyeceğiz.
[değiştir] Döngünün başlangıcı
Öntanımlı WordPress temanızın index.php dosyasının içeriğinde en üstte bulunan kodlar döngünün başlatılma kodlarıdırlar.
<?php if (have_posts()) : ?><br /> <?php while (have_posts()) : the_post(); ?>
Bu kodlar;
- İlk önce,
have_posts()fonksiyonu ile çağrılmış herhangi bir yazının bulunup bulunmadığını kontrol eder. - Eğer çağrılmış bir yazı varsa bu kez bir PHP
whiledöngüsü başlatılır.whiledöngüsü parantez içerisindeki koşul doğruluğunu (true) koruduğu sürece tekrarlanır. Dolayısı ilehave_posts()fonksiyonu geçerli bir değer ile yanıt verdiği sürece döngü tekrarlanacaktır. have_posts()fonksiyonu, gösterilmek için toplanmış olan yazıların içerisinde her seferde bir sonraki yazının varlığını kontrol eder: ve eğer döngüye son eklenen yazıdan sonra sırada eklenmesi gereken başka bir yazı varsa "doğru" (true) değeri ile dönüş yapar, eğer sırada eklenmesi gereken yazı kalmamışsa "yanlış" (false) değeri ile dönüş yapar.
[değiştir] Yazının gösterimi
the_post() fonksiyonu yayınlanmak için toplanmış yazı kümesinden yayınlanma sırası gelen yazıyı alır ve döngü içerisinde yer alacağı tekrarda gösterimini sağlar. the_post() olmazsa, temanızda yer alan bir çok tema etiketi işlevini yitirecektir.
Yayınlanacak yazı bilgisi bir kez hazır hale geldiğinde temanız yazıları ziyaretçinize göstermeye başlayacaktır.
[değiştir] Başlık, tarih ve yazar
Aşağıdaki tema etiketleri o an gösterimde olan yazının başlığını, yazarını ve yayınlanma tarihini görüntüleyeceklerdir.
<h2 id="post-<?php the_ID(); ?>">
<a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?> için kalıcı bağlantı"><?php the_title(); ?></a>
</h2>
<small><?php the_time('F j, Y') ?> <!-- by <?php the_author() ?> --></small>
[değiştir] Yazı içeriği
the_content() tema etiketi yazının içeriğini görüntüler. Bu döngü içinden geçen her yazının gövdesini oluşturur.
<div class="entry">
<?php the_content('Devamı için tıklayın »'); ?>
</div>
Eğer yazınızın içinde more (daha fazla) etiketini kullanacak olursanız, sadece bu etiketi eklediğiniz noktanın üzerindeki metin gösterilecektir ve ana sayfada okurun yazının devamına ulaşabilmesi için bir bağlantı oluşturulacaktır. Dolayısı ile, eğer ana sayfanızda her bir gönderinin sadece ilk iki cümlesine yer vermek istiyorsanız, bunu en kısa yoldan yazdığınız metin içerisindeki ikinci cümleden sonra <!--more--> etiketi girerek yapabilirsiniz.
Sadece tek bir yazının görüntülediği tekil sayfalar ziyaret edilirken <!-- more --> etiketi WordPress tarafından dikkate alınmayacak ve yazının tamamı görüntülenecektir.
[değiştir] İlave detaylar
Temanızın index.php dosyası içerisindeki her yazının içeriğinin altında söz konusu yazının hangi kategori (veya kategoriler) altında, hangi tarhite yayınlandığı ve yazıya kaç yorum yapıldığı (ya da yazının yorumlara açık olup olmadığı) gibi ilave bilgileri barındıran bir alan vardır. Eğer siteye belirli yetiklere sahip bir kullanıcı hesabı ile giriş yaptıysanız, yazı bilgisi (Post Meta Data) bölümü olarak adlandırılan bu alanda, edit_post_link() etiketi sayesinde, bir de "Düzenle" bağlantısı görürsünüz.
<p class="postmetadata">
Kategori: <?php the_category(', ') ?>
<strong>|</strong>
<?php edit_post_link('Düzenle','','<strong>|</strong>'); ?>
<?php comments_popup_link('Yorum yapılmamış »', '1 yorum yapılmış »', '% yorum yapılmış »'); ?></p>
Eğer yazı yayınlanırken yazıya yorum yapılmasına izin verilmişse, veya yazıya yapılmış yorumlar varsa, comments_popup_link() tema etiketi yorumlar bölümü için bir bağlantı oluşturacaktır. Eğer yorum sıçrama penceresi kullanıyorsanız, bu bağlantı yorumları yeni bir sayfada açacaktır; kullanmıyorsanız okuyucuyu doğrudan yazının yorumlar kısmına taşıyacaktır.
Eğer ziyaretçiniz birden fazla yazının bulunduğu bir sayfayı görüntülüyorsa (döngüde birden çok yazı varsa), comments_popup_link() onu ilgili yazının tekil sayfasına yönlendirecektir.

