Buat yang familiar dengan Wordpress, mungkin pernah melihat fungsi “Custom Filed” di bagian Post; tapi pasti jarang yang mempergunakannya. Fasilitas ini sesungguhnya satu rahasia kemampuan lain Wordpress. Jika sebelumnya kita menulis posting hanya bisa mengisi Title, Post, Category, Tags, Excerpt, maka dengan Custom Field kita bisa menambahkan fungsi-fungsi baru. Katakanlah kalau kita punya blog yang mengkhususkan diri pada resensi buku, kita bisa menambahkan form Judul Buku, Penerbit, ISBN, Penulis, dan lain sebagainya.

Caranya gampang. Di bagian bawah tempat posting biasa, kita akan menemukan form Custom Field ini. Di sana ada dua table: Key dan Value. Isi Key dengan Nama Fungsi tertentu, sementara Value isi dengan Kontent dari Nama Fungsi tersebut. Contoh isi Key dengan “Judul” dan isi Value dengan “Cantik itu Luka”. Setelah itu kita klik Add Custom Field.

Kita bisa menambah Key dan Value lainnya (misal Key=”Penulis”, Value=”Eka Kurniawan”). Setiap Key yang sudah dimasukkan (di-add), bisa dipergunakan di posting lainnya dengan memberi Value baru. Key yang sudah dimasukkan tersedia di menu drop-down (yang ada tulisan -select-).

Bagaimana menampilkan Custom Field ini di template? Gampang. Pergunakan kode ini untuk memanggil isi Custom Field:

<?php the_meta(); ?>

Jika mempergunakan contoh di atas, hasil kode di atas akan menjadi:

Kode di atas akan mengeluarkan semua isi Custom Field tanpa kecuali. Ok, barangkali kita ingin memiliki otoritas lebih untuk mengaturnya. Untuk itu kita harus mempergunakan kode:

get_post_meta()

Begini caranya:

<?php $judul = get_post_meta($post->ID, 'Judul', true); ?>
<?php $penulis = get_post_meta($post->ID, 'Penulis', true); ?>

//ganti 'Judul' dan 'Penulis' dengan Key kamu sendiri

<?php echo '<strong>Judul:</strong> ' . $judul; ?>
<?php echo '<strong>Penulis:</strong> ' . $penulis; ?>

Hasilnya akan sama:

Problemnya, barangkali tidak semua posting memiliki Custom Field (karena tidak semua posting berupa resensi buku, misalnya). Dengan cara seperti ini, di posting yang tak memiliki Custom Field “Judul” dan “Penulis”, tampilannya akan menjadi seperti ini:

Tentu saja itu tidak enak dilihat. Kita harus mencari cara bagaimana Custom Field hanya tampil kalau memang ada isinya. Saya mencoba ini di template, dan berhasil:

<?php $judul = get_post_meta($post->ID, 'Judul', true); ?>
<?php $penulis = get_post_meta($post->ID, 'Penulis', true); ?>

//ganti 'Judul' dan 'Penulis' dengan 'Key' kamu sendiri

<?php if($judul !== '')
echo '<strong>Judul:</strong> ' . $judul . '<br />'; ?>
<?php if($penulis !== '')
echo '<strong>Penulis:</strong> ' . $penulis . '<br />'; ?>

Dengan cara ini, hanya posting yang memiliki Custom Field dengan Key “Judul” dan “Penulis” yang akan menampilkan kode di atas. Oh ya sebelum lupa, masukkan kode di atas di dalam Loop, sebab tanpa itu, $post->ID tidak akan dikenali. Semoga berguna.

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. 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 / * (Ini harus ada sebagai nama template)
*/

//  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 (atau file lain) 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.

Tags: