Halaman dari Kategori Tertentu di WordPress

WordPress memiliki dua jenis section: post dan page. Post untuk menulis blog biasa (dinamis), sementara page untuk menulis halaman yang cenderung statis. Halaman-halaman “page” biasanya berderet di atas menyerupai navigasi. Problemnya adalah ketika kita ingin membuat halaman “page” yang isinya dinamis seperti halaman “post”.

Misalnya: domain.com/blog dimana kita ingin menempatkan “blog” tidak di halaman utama. Atau: domain.com/esai dimana kita ingin membuat halaman esai yang isinya blog denga kategori esai.

WordPress mengatasinya dengan “page template”. Kita harus membuat dulu halaman php sebagai template (dan disimpan di folder themes yang dipergunakan). Misalnya: esai.php. Halaman ini harus berisi:

<?php
/*
Template Name: Esai
*/

/* Untuk menentukan bahwa ini ada di "page"? */
$paged = get_query_var('paged');
query_posts('cat=2&paged='.$paged);

/* cat=2, menunjukkan hanya category dengan id=2
/* kalau mau semua isi blog masuk, tulis cat=-0

/* ini untuk mengeluarkan tag "more". */
global $more;
$more = 0;

/* ambil file index.php untuk layout tampilan. */
load_template(TEMPLATEPATH . '/index.php');
?>

setelah itu, kamu bikin halaman Esai di admin WordPress (Write – Page). Di bagian bawah ada Paga Template, pilih Esai.

Jadi deh halaman Esai, yang muncul di navigasi atas, tapi isinya blog dengan kategori esai (yang di contoh memiliki id=2).

Untuk Halaman Depan

Problemnya kalau kita mau menempatkan halaman semacam ini (katakanlah halaman Esai) untuk tampil di halaman depan (front page). Tentu saja WordPress menyediakan cara untuk ini yang umum diketahui: Masuk ke Setting, trus ke Reading. Di kolom Front page display: pilih A static page (select below). Di pilihan Front page: kita pilih halaman Esai. Ini artinya, kita ingin halaman Esai (yang isinya blog dari kategori Esai) tampil di halaman depan, menggantikan default yang biasanya seluruh isi blog tampil.

Cara ini berhasil untuk halaman depan. Tapi sebagaimana sudah saya coba, begitu mengklik halaman berikutnya (katakanlah satu halaman ada 5 posting, nah halaman berikutnya berarti kita mau melihat halaman 6 sampai 10), keadaan mulai kacau. Ternyata WordPress tidak menampilkan halaman Esai dari posting ke 6 sampai 10, melainkan halaman blog secara keseluruhan dari posting 6 hingga 10. Artinya, ada posting-posting non kategori Esai yang juga masuk.

Coba bandingkan keadaanya antara: domain.com/page/2 dan domain.com/esai/page/2. Asumsi kita mestinya isinya sama, karena halaman depan kita mempergunakan halaman esai. Ternyata yang sama hanya halaman satu, halaman dua dan berikutnya menampakkan perbedaan. Problem ini terjadi karena, pada domain.com/page/2 Wodpress hanya mengambil template dari index.php, tanpa melalui template esai.php yang sudah kita buat. esai.php hanya dipanggil di halaman pertama saja.

Dengan keadaan seperti itu, cara diatas tidak bisa saya pakai (mungkin ada cara lain, saya belum tahu). Untuk menampilkan halaman depan (dan halaman-halaman berikutnya), dari satu kategori tertentu, saya memilih untuk melakukannya langsung dengan menambah kode di index.php. Tapi sebelumnya, karena index.php ini banyak dipergunakan oleh yang lain, kita bikin back-up dan dimpan misalnya dengan nama category.php (kalau file ini tidak ada, secara default semua kategori akan mempergunakan index.php, tapi kalau ada, akan mempergunakan category.php).

Cara ini relatif gampang. Edit index.php dan bubuhkan kode ini:

<!--UNTUK MEMILIH SATU KATEGORI SAJA-->
<?php query_posts($query_string.'&cat=2'); ?>
<!--UNTUK MEMILIH SATU KATEGORI SAJA-->

tepat sebelum baris kode ini (yang pasti ada di setiap template index.php di folder theme yang dipergunakan):

<?php if (have_posts()) : ?>

penggunaan $query_string diperlukan untuk bisa menampilkan posting dari kategori yang sama di halaman depan maupun halaman-halaman berikutnya. cat=2 menunjukan kategori dengan id=2. Dengan cara ini, saya berhasil menampilkan halaman depan hanya dari kategori tertentu.

Ini mengatasi salah satu kelemahan WordPress yang tidak memiliki banyak section. Dengan cara ini, kita bisa bikin multi-blog. Tinggal bikin kategori blog1, blog2, dst. Kemudian bikin masing-masing kategori ini halaman sendiri sebagaimana contoh halaman esai di atas. Sehingga kita bisa memiliki lebih dari satu blog: domain.com/blog1, domain.com/blog2, dst.

10 comments on “Halaman dari Kategori Tertentu di WordPress

  1. Pertamax, Gan, akhirnya ketemu juga apayang selama ini sya ccari, tenkyu Gan

  2. badar online says:

    Terimakasih tutorialnya mas, saya dapat informasi bagus.

  3. SemuaOke says:

    Thanks mas eka, artikel ini sangat membantu saya. Dan kebetulan masalah ini yang sedang saya cari. I coba dulu ya mas.. thanks.
    Good Luck

  4. witsong says:

    sy coba di website sy,technoeater.com, yg memakai theme visionary, nama pagenya did-you-know, setelah jadi, dilink ternyats eror, keluar tampilan putih sepenuh layar, kenapa?mohon jawabannya krn sy awam ttg php

  5. rudi says:

    wah hebat, sastrawan kita ini ada bakat buat nge hack wp. My comment: Themenya wp nya bagus, 2column simple, jadi kepingin juga aku memilikinya, untung di footer ada link ke authornya. Nuwun sewu mau unduh. nanti sy pake di web yg lain. Thanks salam kenal klikrudi.com dari sidoarjo.

  6. Habib says:

    om, kok malah jadi Blank page ?

  7. veni afrilya says:

    Thank you …..

  8. denyzafa says:

    bingung mas… mungkin ada visualnya lebih baik.. bukan cuma kata2.. yg bisa banyak penafsiran.. dicoba error…

    1. ekakurniawan says:

      @denzafa: visual gimana, ya? contohnya sih yang paling jelas di halaman “Resensi” blog ini. Halaman itu, persis aku pakai trik ini.

  9. angga says:

    Pas seperti yg aq cari, membantu banget buat yg belajar oprek oprek themes wordpress, sementara aq ctrl+d dulu, ntar di baca lagi achhh..

Comments are closed.