Tôi đã đăng một Làm thế nào để về nó một tuần trước đây http://en.bainternet.info/2011/wordpress-category-extra-fields
hi vọng điêu nay co ich.
Ôi trời.
Dưới đây là chi tiết của bài viết:
Điều đầu tiên chúng ta cần làm là thêm các trường bổ sung vào biểu mẫu chỉnh sửa danh mục bằng cách sử dụng hook edit_carget_form_fields và chúng tôi sử dụng một chức năng đơn giản sẽ in ra các trường bổ sung.
<?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
}
Như bạn có thể thấy tôi đã thêm 4 trường mới và tất cả chúng đều nằm trong một mảng Cat_meta [key] bởi vì cách đó chúng tôi chỉ tạo trên hàng trong bảng tùy chọn để lưu tất cả các trường bổ sung của danh mục thay vì một hàng cho mỗi trường.
Tiếp theo, chúng ta cần lưu các trường bổ sung vào cơ sở dữ liệu sau khi người dùng gửi biểu mẫu chỉnh sửa danh mục và chúng tôi thực hiện điều đó bằng cách sử dụng "edit_carget" với một hàm sẽ chạy qua từng trường được gửi và chèn chúng vào cơ sở dữ liệu bằng hàm update_option , như thế này:
<?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 );
}
}
Từ mã ở trên, bạn có thể thấy rằng tất cả các trường bổ sung mà chúng tôi đã thêm được lưu trữ trong bảng tùy chọn của cơ sở dữ liệu với tên 'category_ID', trong đó ID là id của danh mục cụ thể mà chúng tôi vừa chỉnh sửa và điều đó có nghĩa là chúng tôi có thể gọi đây là dữ liệu trong các plugin hoặc tệp chủ đề của chúng tôi dễ dàng sử dụng hàm get_option.
nói ví dụ id danh mục của tôi là 25 thì mã của tôi sẽ như thế nào
<?php $cat_data = get_option('category_25'); ?>
Như tôi đã nói ở phần đầu, tôi cần hiển thị một hình ảnh khác nhau cho mỗi danh mục, vì vậy trong trường hợp đó tôi đã thêm một vài dòng mã này vào chủ đề của tôi.
<?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>';
}
Đẹp và dễ dàng và tất cả chúng ta đã hoàn thành. Kết quả sẽ trông giống như thế này: