Conditional Tags dan query_posts() WordPress
January 2, 2008
Tadi malam, saya masih sempat mengutak-atik template WordPress yang sudah dikerjakan sejak beberapa hari sebelumnya. Ada sedikit hambatan karena kekurangtahuan saya. Saat itu saya ingin menempatkan dua blok fasilitas pada sidebar di mana blok-blok tersebut hanya akan muncul pada halaman home. Melihat pemaparan mengenai Conditional Tags, maka saya gunakan fungsi is_home() untuk mengecek apakah halaman tersebut merupakan halaman home atau bukan. Blok pertama yang saya tempatkan pada bagian atas (begitu juga dengan letak kodenya) berhasil dengan hanya muncul pada halaman home, tetapi blok satunya dimana saya ingin tampilkan pada bagian bawah tidak berhasil, dengan masih munculnya blok tersebut pada halaman-halaman yang bukan home, seperti halaman single atau category.
<?php query_posts('showposts=10'); ?>
<?php while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
Sempat mengira ada masalah dengan WordPress-nya karena beberapa conditional tags lain dapat berjalan fungsinya pada lokasi kode bagian bawah tersebut, tapi sebagian lain tidak dapat berjalan menurut fungsinya. Untungnya, muncul rasa curiga pada fungsi query_posts() yang letaknya berada diantara bagian kode tersebut. Setelah mencoba, fungsi is_home() yang saya jalankan sebelum fungsi query_posts() akan berjalan dengan semestinya, sedang jika diletakkan setelahnya maka tidak berjalan sesuai yang diharapkan.
Hubungan keduanya saya temukan pada penjelasan di Codex WordPress mengenai Query_posts.
The wp_query object will generate a new SQL query using your parameters. When you do this, WordPress ignores the other parameters it receives via the URL (such as page number or category). If you want to preserve that information, you can use the variable $query_string in the call to query_posts().
Jadi saya baru ngeh, fungsi is_home() yang saya gunakan tidak berjalan karena semua parameter yang diperlukan sebagai dasar pengecekan kebenaran halaman home sudah tidak ada lagi karena sudah penggunaan fungsi query_posts() tadi.
Agar parameter-parameter yang diperlukan masih tersedia, pada halaman yang sama dijelaskan dapat menggunakan variable $query_string dalam penggunaan fungsi query_posts() sehingga jika diterapkan pada baris kode di atas menjadi
<?php query_posts($query_string . "&showposts=10"); ?>
Sayangnya penggunaan seperti itu dapat menghasilkan hasil query yang tidak sesuai seperti yang diharapkan pada saat halaman-halam tertentu diakses.
Jalan keluar yang dapat dilakukan agar parameter yang diperlukan untuk keperluan conditional tags kembali tersedia adalah menjalankan query_posts() setelah eksekusi query_posts() sebelumnya beserta penerapannya selesai dengan hanya memanfaatkan variable $query_string.
<?php query_posts($query_string); ?>
Hal lain yang dapat dilakukan adalah menyimpan hasil fungsi-fungsi conditional tags yang diperlukan sebelum eksekusi pada variable tersendiri, misalnya:
$my_is_home = is_home();
$my_is_paged = is_paged();
$my_is_single = is_single();
dan seterusnya, untuk conditional tags yang memang diperlukan. Dan berikutnya tinggal memanfaatkan variable yang dibentuk tersebut untuk keperluan selanjutnya.

Posted in









Leave A Comment
All fields marked with "*" are required.