Iznyn Blog - Your Web Design Solution

Jika anda melihat pesan ini, berarti bahwa anda masih menggunakan browser yang cukup tua untuk dapat melihat secara maksimal semua content dari web site ini. Tolong untuk segera upgrade browser anda sehingga dapat secara maksimal menikmati content dari web site ini.

More Info

Download Lastest Version Of Mozilla Firefox

Membuat Post list di dalam Wordpress Tanpa The Loop()

Wordpress saat ini telah menjadi salah satu mesin blog yang paling banyak digunakan. Kemudahan serta flexibilitas dari wordpress mempermudah kita di dalam membuat suatu blog atau bahkan suatu web yang lebih rumit. Salah satu fasilitas yang dimiliki oleh Wordpress yang dapat mempermudah dalam penyusunan blog adalah the loop(). The loop merupakan serangkaian php function yang disediakan untuk mempermudah dalam menampilkan setiap post di dalam suatu halaman.

Namun disini kita tidak akan menjelaskan bagaimana menggunakan fasilitas ini. Kita disini akan mencoba untuk mencapai hasil yang sama dengan menggunakan cara yang berbeda. Meskipun kita akan tetap menjelaskan bagaimana The Loop berkerja.

Proses Pengambilan Data Post Di Dalam Wordpress

Sebelum kita menggali lebih dalam tentang cara kerja The Loop, kita akan melihat bagaimana Wordpress bekerja menangani setiap request. Setiap request yang diterima oleh Wordpress akan diuraikan untuk mendapatkan variable-variable request. Proses penguraian dilakukan dengan menyamakan URI Request dengan suatu rangkaian rewrite_rule. Dengan variable request yang didapatkan kemudian akan digunakan oleh Wordpress untuk mengambil data post di dalam database. Jadi pada setiap request yang diterima, Wordpress akan selalu berusaha untuk mendapatkan data posts.

Pada dasarnya Wordpress akan menangani fungsi-fungsi tersebut dengan menggunakan beberapa class. Beruntungnya objek dari class tersebut oleh Wordpress disimpan dalam suatu global variable. Sehingga kita dapat mempelajari proses wordpress dengan memeriksa global variable tersebut, antara lain :

$wp_rewrite
Membawa object WP_Rewrite yang digunakan oleh Wordpress untuk membentuk rewrite_rule
$wp_query
Membawa object WP_Query yang digunakan oleh Wordpress untuk mendapatkan data post berdasarkan variable request yang di dapatkan
$wp
Di dalam class yang di bawa oleh variable ini akan menguraikan URI Request berdasarkan rewrite_rule dan menyuplai variable request yang di dapatkan ke dalam class WP_Query

Kita dapat memeriksa variable tersebut dengan menggunakan fungsi php print_r() dan disarangkan di dalam tag pre. Sebagai contoh masukkan kode berikut ke dalam file header.php di dalam folder theme anda.

<pre>
  <?php
    global $wp_query;
    print_r($wp_query);
  ?>
</pre>

Seharusnya anda sekarang telah mendapatkan ide tentang bagaimana wordpress menangani setiap request. Selanjutnya akan dijelaskan tentang bagaimana The Loop bekerja

Cara Kerja The Loop

Pada dasarnya fungsi-fungsi dalam The Loop hanya memanipulasi object wp_query. Kita menggunakan The Loop untuk mendapatkan data posts sebagai berikut :

<?php
  if (have_post()) :
    while(have_post()) :
      the_post();
?>		
      //Html code here

<?php endwhile; endif; ?>  

Dari kode diatas, pertama kita mempunyai function have_post(). Fungsi ini berfungsi untuk memeriksa apakah suatu request menghasilkan data post atau tidak. Apabila terdapat data posts yang dihasilkan maka fungsi ini juga akan melakukan proses iteration dengan menambahkan nilai counter ke dalam attribute class.

Kemudian kita mempunyai fungsi the_post(). Fungsi ini akan mendapatkan data post tunggal berdasarkan nilai counter yang disuplai oleh fungsi have_post(). Dari data post yang didapatkan, kemudian akan menyuplai beberapa nilai penting ke dalam global variable, sebagai contoh adalah $id, sehingga kemudian dapat digunakan oleh fungsi-fungsi templete.

Membangun Post List Tanpa The Loop

Sekarang kita masuk pada inti dari artikel ini. Untuk dapat menampilkan data post tanpa menggunakan The Loop, maka kita dapat menggunakan class WP_Query. Pada dasarnya dari setiap request yang didapatkan, Wordpress akan membuat object baru dari class WP_Query dan disimpan dalam global variable $wp_query yang kemudian menggunakannya untuk mendapatkan data post.

Tanpa The Loop, kita dapat menggunakan data dalam object $wp_query untuk mendapatkan data post, sebagai contoh :

<?php
  $posts = $wp_query->posts;
  if (!empty($posts)) :
    foreach($posts as $post) :
?>
  
  <h2><?php echo $post->post_title; ?></h2>
  <div class="entry-content">
    <?php echo $post->post_content; ?>
  </div>
	
<?php endforeach; endif; ?>		

Salah satu keuntungan dengan menggunakan class WP_Query adalah kita dapat secara bebas menentukan data post yang ingin di dapatkan tanpa harus tergantung pada request halaman. Sebagai contoh adalah mendapatkan 5 data post terbaru, sebagai berikut :

<?php
  $posts = new WP_Query();
  $q = array("posts_per_page" => 5);
  $post = $posts->query($q);
  
  if (!empty($post)) :
    foreach($post as $value) :
?>
  
  <h2><?php echo $value->post_title; ?></h2>
  <div class="entry-content">
    <?php echo $value->post_content; ?>
  </div>
	
<?php endforeach; endif; ?>		

Sebagai catatan penting adalah bahwa ketika kita menampilkan data post tanpa menggunakan The Loop, maka kita sama sekali tidak dapat menggunakan fungsi-fungsi templete seperti the_ID(), the_title(), the_content().

Terakhir, tujuan dibuatnya artikel ini bukanlah memberikan suatu rekomendasi, namun lebih ingin menjelaskan bagaimana proses pengambilan data post di dalam Wordpress. Saya tetap merekomendasikan untuk menggunakan The Loop untuk kondisi-kondisi biasa. Baru kemudian jika The Loop dirasa kurang dapat memenuhi kebutuhan pengambilan data post, kita dapat menggunakan tehnik-tehnik yang telah dijelaskan diatas.

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

relatedPosts

COMMENTS

noComments

There are no comments posted yet. Be the first one!

Leave a Comment

  1. You can use these XHTML tags : <a href="" title="">, <abbr title="">, <acronym title="">, <blockquote cite="">, <b>, <cite>, <code>, <del datetime="">, <em>, <i>, <pre lang="" line="" escaped="">, <q cite="">, <Strike>, <strong>