Menyisipkan Parameter Array pada in_category() – WordPress

Di tempat saya bekerja saat ini beberapa situs web dibangun menggunakan WordPress, saat ini pun saya meneruskan “warisan” programmer terdahulu yang membuat situs web ini. Lalu, saya pun menemukan kode yang menurut saya kurang efisien dalam penulisannya. Setelah saya coba pelajari ternyata programmer yang terdahulu belum memanfaatkan kemudahan penggunaan array sebagai parameter pada function in_category() WordPress.

Sebelum membahas kemudahan menggunakan parameter array pada function in_category(), sekilas menjelaskan terlebih dahulu apa yang akan saya lakukan dengan menggunakan function tersebut.

Terdapat suatu kasus dimana ada beberapa kategori menggunakan custom single page. Nah, untuk menentukan kategori n kepada single page n diarahkan oleh function in_category().

Kembali lagi ke parameter array yang diperbolehkan pada function in_category(). Saya menemukan orang lain menuliskan kode seperti ini:

<?php
if( in_category( '9' ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else if( in_category( '8' ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else if( in_category( '7' ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else if( in_category( '6' ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else if( in_category( '5' ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else if( in_category( '4' ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else if( in_category( '3' ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else if( in_category( '2' ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else if( in_category( '1' ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else {
  include(TEMPLATEPATH . '/single-custom.php');
}
?>

Contoh diatas menggunakan else if yang panjang, tanpa penggunaan array. Jika menggunakan array dapat disederhanakan menjadi seperti ini:

<?php
/* initialize */
$ids = array('9', '8', '7', '6', '5', '4', '3', '2', '1');
/* conditional */
if( in_category( $ids ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else {
  include(TEMPLATEPATH . '/single-default.php');
}
?>

Lebih sederhanakan bukan? 😉

Featured Image Otomatis pada WordPress

Pada WordPress versi 3.5 keatas, untuk melakukan set featured image (digunakan untuk thumbnails), tidak bisa langsung disekaliguskan pada saat insert image into post.

Sehingga dengan diterapkannya function di bawah ini (pada file function.php), jika melakukan upload image, tidak perlu lagi set featured image, karena telah dilakukan secara otomatis oleh function tersebut.

Dengan begitu, hal ini sedikit meringankan pekerjaan uploader. Walaupun untuk insert image into post yang sudah ada di gallery masih perlu dilakukan manual. It helps a bit! 😀

/**
 * Autoset Featured Image
 *
 * @writer Muhammad Riza Alifi
 * http://wpmu.org/daily-tip-how-to-automatically-set-the-featured-image-in-wordpress/
 */
function autoset_featured() {
  global $post;
  $already_has_thumb = has_post_thumbnail($post->ID);
  if (!$already_has_thumb)  {
    $attached_image = get_children( "post_parent=$post>ID&post_type=attachment&post_mime_type=image&numberposts=1" );
    if ($attached_image) {
      foreach ($attached_image as $attachment_id => $attachment) {
        set_post_thumbnail($post->ID, $attachment_id);
      }
    }
  }
}
add_action('the_post', 'autoset_featured');
add_action('save_post', 'autoset_featured');
add_action('draft_to_publish', 'autoset_featured');
add_action('new_to_publish', 'autoset_featured');
add_action('pending_to_publish', 'autoset_featured');
add_action('future_to_publish', 'autoset_featured');