Browse for free high-quality wallpapers at http://wallpapercamp.itrello.com. You can share your wallpapers too.
Powered by MaxBlogPress 

Menampilkan Posting Berdasarkan Custom Field Tertentu



Post Page Rank

Translated from How to Only Retrieve Posts With Custom Fields

Satu pertanyaan yang mungkin sering terlintas di kepala para blogger adalah bagaimana caranya menyaring (retrieve) posting hanya berdasarkan custom field tertentu.

Sebagai contoh, jika suatu posting mempunyai custom field “MyData”, kita hanya ingin menyaring posting yang hanya mempunyai custom field tersebut.

WordPress Codex membahas teknik untuk menyaring posting berdasarkan custom field tertentu, yang menyangkut menulis query Anda sendiri dan melakukan perulangan pada hasil query-nya (loop results).

Teknik yang dibahas pada Codex bagus, tapi saya menemukan sebuah cara yang dapat dipakai berulang untuk menyaring posting berdasarkan custom field tertentu.

Teknik ini menggunakan dua fungsi yang dibuat sendiri dan ditempatkan di file “functions.php” pada theme Anda dan sebuah perulangan (loop).

Mari Kita Mulai — File “functions.php”

Pertama-tama, kita buat dua fungsi di file “functions.php” file. File ini biasanya berada di direktori theme yang Anda gunakan, jika belum ada, silakan membuat file tersebut dengan teks editor kesukaan Anda (misalkan Notepad di Windows).

Berikut ini adalah kedua fungsi yang dimaksud:

function get_custom_field_posts_join($join) {
  global $wpdb, $customFields;
  return $join . ” JOIN $wpdb->postmeta postmeta ON (postmeta.post_id =
  $wpdb->posts.ID and postmeta.meta_key in ($customFields)) “;
}

function get_custom_field_posts_group($group) {
  global $wpdb;
  $group .= ” $wpdb->posts.ID “;
return $group;
}

Fungsi “get_custom_field_posts_join” menggunakan filter advanced WordPress yang disebut “posts_join“. Setiap kali Anda ingin menyaring atau menampilkan posting, Anda bisa memberikan parameter MySQL tambahan dengan menggunakan filter. Dalam hal ini, saya menambahkan parameter untuk mencari postmeta tertentu. Perlu Anda catat penggunaan variabel global “customFields“, yang akan saya jelaskan lebih lanjut nanti.

Fungsi “get_custom_field_posts_group” menggunakan filter advanced WordPress yang disebut “posts_group“. Ini digunakan untuk menghindari duplikasi pada nilai kembalian query.

Perulangan (Loop)

Setelah kedua fungsi di atas ditempatkan pada file “functions.php” file, kini saatnya Anda menempatkan kode atau script yang benar di salah satu file template Anda.

Sebagai contoh, saya akan mengubah file “sidebar.php” di theme default WordPress. Anda dapat menempatkan kode berikut pada file lain di theme yang Anda gunakan, terserah Anda.

<?php /* Mulai posting dengan custom field */ ?>
<h2>Custom Posts</h2>
<ul>
<?php
  global $customFields;
  $customFields = “‘Links’, ‘MyData’”; //Pisahkan dengan koma ’s1′, ’s2′, ’s3′

Bagian pertama kode berkaitan dengan tampilan struktur output. Anda bisa menambahkan apa saja disini.

Tolong catat penggunaan variabel “customFields“. Kita membuat variabel yang dipisahkan koma (comma-separated variable) yang akan kita gunakan untuk mencari custom field yang diinginkan. Variabel “customFields” digunakan dalam fungsi “get_custom_field_posts_join”.

Dalam contoh ini, kita asumsikan bahwa kita akan menyaring posting yang mempunyai custom field “Links” dan “MyData“.

Custom Field WordPress

Kode berikutnya membuat instan (instantiate) WP_Query dan menjalankan query untuk mencari posting.

$customPosts = new WP_Query();
add_filter(’posts_join’, ‘get_custom_field_posts_join’);
add_filter(’posts_groupby’, ‘get_custom_field_posts_group’);
$customPosts->query(’showposts=5′ ); //Gunakan parameter sama
  //seperti query_posts
remove_filter(’posts_join’, ‘get_custom_field_posts_join’);
remove_filter(’posts_groupby’, ‘get_custom_field_posts_group’);

Perhatikan penggunaan fungsi “add_filter” dan “remove_filter”. Karena kita akan menjalankan query untuk menyaring posting tertentu, kita bisa langsung menambahkan parameter-parameternya. Jadi, sebelum query diinisialisasi, dua tipe query ditambahkan, dan setelah query diinisialisasi, kedua filter tersebut dinonaktifkan karena kita hanya menginginkan filter-filter tersebut dijalankan sekali.

Bagian terakhir kode menginisialisasi pengulangan, mendapatkan nilai tertentu (custom value), menampilkannya dan mengakhiri pengulangan.

while ($customPosts->have_posts()) : $customPosts->the_post();
  $links = get_post_custom_values(”Links”);
  $data = get_post_custom_values(”MyData”);
?>
<li><a href=’<?php echo $links[0]; ?>’><?php echo $data[0]; ?></a></li>
<?php endwhile; ?>
<?php /* End Custom Field Posts */ ?>

Fungsi WordPress “get_post_custom_values” memberikan nilai kembalian berupa array yang mempunyai key yang sesuai. Kita asumsikan bahwa hanya ada satu key tiap posting, dan kita menampilkannya menggunakan perintah echo $links[0]).

Full Code

Inilah kode script selengkapnya. Yang perlu Anda ubah hanyalah custom field yang ingin Anda tampilkan (ubah nilai customFields) dan masukkan nilai sesuai kebutuhan Anda.

<?php /* Mulai posting dengan custom field */ ?>
<h2>Custom Posts</h2>
<ul>

<?php
global $customFields;
$customFields = “‘Links’, ‘MyData’”; //Pisahkan dengan koma ’s1′, ’s2′, ’s3′
$customPosts = new WP_Query();
add_filter(’posts_join’, ‘get_custom_field_posts_join’);
add_filter(’posts_groupby’, ‘get_custom_field_posts_group’);
$customPosts->query(’showposts=5′ ); //Gunakan parameter sama
  //seperti query_posts
remove_filter(’posts_join’, ‘get_custom_field_posts_join’);
remove_filter(’posts_groupby’, ‘get_custom_field_posts_group’);
while ($customPosts->have_posts()) : $customPosts->the_post();
$links = get_post_custom_values(”Links”);
$data = get_post_custom_values(”MyData”);
?>

<li><a href=’<?php echo $links[0]; ?>’><?php echo $data[0]; ?></a></li>
<?php endwhile; ?>
</ul>
<?php /* Selesai */ ?>

Custom field output

Download Code

Full code dalam tutorial ini dapat diunduh dalam bentuk file zip berisi file functions.php dan sidebar.php.
Silakan unduh disini.

Kesimpulan

Dengan menggunakan teknik diatas, Anda dapat melakukan hal-hal yang keren. Contohnya, Anda dapat menampilkan posting yang hanya mempunyai custom field berupa gambar tertentu untuk mendapatkan efek seperti majalah.

Translated from How to Only Retrieve Posts With Custom Fields




This post is filed under Tutorials, WordPress.
Bookmark and share this post to:
Add to Blinklist Add to del.icio.us Digg this Add to furl Add to ma.gnolia Add to Newsvine Add to Redd It StumbleUpon It Add to Technorati 

Don't forget to browse for free high-quality wallpapers at http://wallpapercamp.itrello.com. You can share your wallpapers too.


Do you like the post? Then, please donate via

If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Comments

Hello

Bye

Leave a comment

(required)

(required)