Chào các bạn, trong bài này mình sẽ hướng dẫn cách thêm option, fields hay tạo metabox trong taxonomy wordpress. Ở đây, chúng ta sẽ sử dụng tới các hook sau:
- {taxonomy_name}_add_form_fields: Thêm fields trong trang tạo taxonomy.
- {taxonomy_name}_edit_form_fields: Thêm fields trong trang sửa taxonomy.
- edited_{taxonomy_name}: Function xảy ra khi sửa taxonomy.
- create_{taxonomy_name}: Function xảy ra khi tạo taxonomy.
Lưu ý: {taxonomy_name} sẽ thay cho slug taxonomy của bạn. Ví dụ bạn tạo một taxonomy có slug là category thì sẽ là category_add_form_fields.
Ví dụ mình có một taxonomy category và mình muốn thêm trường nhập màu sắc cho taxonomy này thì đầu tiên hãy thêm fields trong trang tạo Taxonomy bằng cách dán code sau vào cuối file functions.php:
1 2 3 4 5 6 7 8 |
function category_add_form_fields(){ echo '<div class="form-field"> <label for="category_color">'; echo _e( 'Màu chuyên mục', 'category_color' ); echo '</label> <input type="text" name="category_color" id="category_color" value="" placeholder="red hoặc #FF0000"/> </div>'; } add_action( 'category_add_form_fields', 'category_add_form_fields', 10, 2 ); |
Tiếp theo là thêm fields trong trang sửa Taxonomy, dán code sau dưới code trên:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
function category_edit_meta_field($term) { $tid = $term->term_id; $term_meta = get_option( "taxonomy_$tid" ); echo '<tr class="form-field"> <th scope="row" valign="top"><label for="category_color">'; echo _e( 'Màu chuyên mục', 'category_color' ); echo '</label></th> <td> <input type="text" name="category_color" id="category_color" value="'.$term_meta.'"/> </td> </tr>'; } add_action( 'category_edit_form_fields', 'category_edit_meta_field', 10, 2 ); |
Sau đó là sử dụng 2 hook edited_ và create_ để lưu dữ liệu khi tạo mới Taxonomy hoặc sửa Taxonomy, dán code sau dưới code trên:
1 2 3 4 5 6 7 8 9 |
function save_category_color( $term_id ) { if ( isset( $_POST['category_color'] ) ) { $tid = $term_id; $term_meta = $_POST['category_color']; update_option( "taxonomy_$tid", $term_meta ); } } add_action( 'edited_category', 'save_category_color', 10, 2 ); add_action( 'create_category', 'save_category_color', 10, 2 ); |
Như vậy là bạn đã gán được giá trị vào option có tên là taxonomy_{id} rồi đó. {id} ở đây chính là id của Taxonomy mà bạn tạo hay chỉnh sửa. Bây giờ bạn có thể sử dụng get_option() để hiển thị giá trị ra rồi đó.
Ví dụ, mình vào file archive.php và viết 1 code sau:
1 |
<?php $tid = get_queried_object_id(); echo get_option( "taxonomy_$tid" ); ?> |
Cuối cùng mình vào một số chuyên mục (category) > Điền màu > Save lại và vào từng chuyên mục sẽ thấy dữ liệu (màu) mình đã điền cho từng chuyên mục. Chúc bạn thành công!
Bình luận