Saya memposting How To about it seminggu yang lalu http://en.bainternet.info/2011/wordpress-category-extra-fields
semoga ini membantu.
Ohad.
Berikut detail posnya:
Hal pertama yang perlu kita lakukan adalah menambahkan bidang tambahan ke formulir edit kategori menggunakan hook edit_category_form_fields dan kita menggunakan fungsi sederhana yang akan mencetak bidang tambahan.
<?php
//add extra fields to category edit form hook
add_action ( 'edit_category_form_fields', 'extra_category_fields');
//add extra fields to category edit form callback function
function extra_category_fields( $tag ) { //check for existing featured ID
$t_id = $tag->term_id;
$cat_meta = get_option( "category_$t_id");
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="cat_Image_url"><?php _e('Category Image Url'); ?></label></th>
<td>
<input type="text" name="Cat_meta[img]" id="Cat_meta[img]" size="3" style="width:60%;" value="<?php echo $cat_meta['img'] ? $cat_meta['img'] : ''; ?>"><br />
<span class="description"><?php _e('Image for category: use full url with '); ?></span>
</td>
</tr>
<tr class="form-field">
<th scope="row" valign="top"><label for="extra1"><?php _e('extra field'); ?></label></th>
<td>
<input type="text" name="Cat_meta[extra1]" id="Cat_meta[extra1]" size="25" style="width:60%;" value="<?php echo $cat_meta['extra1'] ? $cat_meta['extra1'] : ''; ?>"><br />
<span class="description"><?php _e('extra field'); ?></span>
</td>
</tr>
<tr class="form-field">
<th scope="row" valign="top"><label for="extra2"><?php _e('extra field'); ?></label></th>
<td>
<input type="text" name="Cat_meta[extra2]" id="Cat_meta[extra2]" size="25" style="width:60%;" value="<?php echo $cat_meta['extra2'] ? $cat_meta['extra2'] : ''; ?>"><br />
<span class="description"><?php _e('extra field'); ?></span>
</td>
</tr>
<tr class="form-field">
<th scope="row" valign="top"><label for="extra3"><?php _e('extra field'); ?></label></th>
<td>
<textarea name="Cat_meta[extra3]" id="Cat_meta[extra3]" style="width:60%;"><?php echo $cat_meta['extra3'] ? $cat_meta['extra3'] : ''; ?></textarea><br />
<span class="description"><?php _e('extra field'); ?></span>
</td>
</tr>
<?php
}
Seperti yang Anda lihat, saya menambahkan 4 bidang baru dan semuanya berada dalam larik Cat_meta [kunci] karena dengan cara itu kami hanya membuat baris pada tabel opsi untuk menyimpan semua bidang ekstra kategori, bukan baris untuk setiap bidang.
Selanjutnya kita perlu menyimpan bidang tambahan ke dalam database setelah pengguna mengirimkan formulir edit kategori dan kita melakukannya dengan menggunakan "edited_category" dengan fungsi yang akan berjalan melalui masing-masing bidang yang dikirimkan dan menyisipkannya ke database menggunakan fungsi update_option , seperti ini:
<?php
// save extra category extra fields hook
add_action ( 'edited_category', 'save_extra_category_fileds');
// save extra category extra fields callback function
function save_extra_category_fileds( $term_id ) {
if ( isset( $_POST['Cat_meta'] ) ) {
$t_id = $term_id;
$cat_meta = get_option( "category_$t_id");
$cat_keys = array_keys($_POST['Cat_meta']);
foreach ($cat_keys as $key){
if (isset($_POST['Cat_meta'][$key])){
$cat_meta[$key] = $_POST['Cat_meta'][$key];
}
}
//save the option array
update_option( "category_$t_id", $cat_meta );
}
}
Dari kode di atas, Anda dapat melihat bahwa semua bidang tambahan yang kami tambahkan disimpan dalam tabel opsi database dengan nama 'category_ID', di mana ID adalah id dari kategori tertentu yang baru saja kami edit dan itu artinya kita dapat memanggil ini data di plugin atau file tema kami dengan mudah menggunakan fungsi get_option.
katakan misalnya id kategori saya adalah 25 maka kode saya akan terlihat seperti
<?php $cat_data = get_option('category_25'); ?>
Seperti yang saya nyatakan di awal, saya perlu menampilkan gambar yang berbeda untuk setiap kategori, jadi dalam hal ini saya menambahkan beberapa baris kode ini ke category.php tema saya tepat setelah kode yang menampilkan judul kategori:
<?php
//first get the current category ID
$cat_id = get_query_var('cat');
//then i get the data from the database
$cat_data = get_option("category_$cat_id");
//and then i just display my category image if it exists
if (isset($cat_data['img'])){
echo '<div class="category_image"><img src="'.$cat_data['img'].'"></div>';
}
Bagus dan mudah dan kita semua selesai. Hasilnya akan terlihat mirip dengan ini: