<?php defined('ABSPATH') || exit; // Danh sách các taxonomy cần áp dụng $custom_taxonomies = ['category', 'post_tag', 'questions', 'questions_tag']; /** * Hiển thị form thêm mới term (Add) */ function cms_add_term_custom_fields($taxonomy_slug) { ?> <div class="form-field term-title-wrap"> <label for="term_title"><?php _e('Secondary Title', TEXT_DOMAIN); ?></label> <input type="text" name="term_title" id="term_title" value="" /> <p><?php _e('Nhập tiêu đề thứ hai cho mục này.', TEXT_DOMAIN); ?></p> </div> <div class="form-field term-content-wrap"> <label for="term_content"><?php _e('Content', TEXT_DOMAIN); ?></label> <?php wp_editor('', 'term_content_editor_' . esc_attr($taxonomy_slug), [ 'textarea_name' => 'term_content', 'media_buttons' => true, 'textarea_rows' => 10, 'quicktags' => true, ]); ?> <p><?php _e('Nhập nội dung cho taxonomy này.', TEXT_DOMAIN); ?></p> </div> <?php } /** * Hiển thị form chỉnh sửa term (Edit) */ function cms_edit_term_custom_fields($term, $taxonomy_slug) { $term_title = get_term_meta($term->term_id, 'term_title', true); $content = get_term_meta($term->term_id, 'term_content', true); ?> <tr class="form-field term-title-wrap"> <th scope="row"><label for="term_title"><?php _e('Secondary Title', TEXT_DOMAIN); ?></label></th> <td><input type="text" name="term_title" id="term_title" value="<?php echo esc_attr($term_title); ?>" /></td> </tr> <tr class="form-field term-content-wrap"> <th scope="row"><label for="term_content"><?php _e('Content', TEXT_DOMAIN); ?></label></th> <td> <?php wp_editor($content, 'term_content_editor_' . esc_attr($taxonomy_slug), [ 'textarea_name' => 'term_content', 'media_buttons' => true, 'textarea_rows' => 10, 'quicktags' => true, ]); ?> <p class="description"><?php _e('Nội dung của taxonomy.', TEXT_DOMAIN); ?></p> </td> </tr> <?php } /** * Lưu dữ liệu custom field khi thêm/sửa term */ function cms_save_term_custom_fields($term_id) { // Xử lý term_title if (isset($_POST['term_title'])) { $new_title = sanitize_text_field($_POST['term_title']); $old_title = get_term_meta($term_id, 'term_title', true); if ($new_title !== $old_title) { if ($new_title !== '') { update_term_meta($term_id, 'term_title', $new_title); } elseif ($old_title !== '') { delete_term_meta($term_id, 'term_title'); } } } // Xử lý term_content if (isset($_POST['term_content'])) { $new_content = wp_kses_post($_POST['term_content']); $old_content = get_term_meta($term_id, 'term_content', true); if ($new_content !== $old_content) { if ($new_content !== '') { update_term_meta($term_id, 'term_content', $new_content); } elseif ($old_content !== '') { delete_term_meta($term_id, 'term_content'); } } } } /** * Gắn hook cho tất cả taxonomy cần xử lý */ foreach ($custom_taxonomies as $taxonomy) { // Form thêm mới add_action("{$taxonomy}_add_form_fields", function () use ($taxonomy) { cms_add_term_custom_fields($taxonomy); }); // Form chỉnh sửa add_action("{$taxonomy}_edit_form_fields", function ($term) use ($taxonomy) { cms_edit_term_custom_fields($term, $taxonomy); }); // Hook lưu add_action("created_{$taxonomy}", 'cms_save_term_custom_fields'); add_action("edited_{$taxonomy}", 'cms_save_term_custom_fields'); }