Thêm TinyMce Editor vào mô tả của category

Lượt xem: 5963

Thêm TinyMce Editor vào mô tả của category. Mô tả mặc định của category trong wordpress không hỗ trợ trình soạn thảo Editor. Để thêm phần soạn thảo giống nội dung của bài viết cho phần mô tả danh mục (category).

Thêm box mô tả TinyMce

Chúng ta cần thêm hộp TinyMCE mới vào trang bằng cách sử dụng hàm wp_editor (), hàm này cho phép chúng ta đặt một giá trị mặc định, một tên và nhiều cài đặt để tạo hộp TinyMCE. Thêm một chức năng vào bộ lọc edit_category_form_fields, chức năng này sẽ chạy sau biểu mẫu danh mục chỉnh sửa, tất cả những gì chúng ta đang làm trong biểu mẫu này là xuất một bảng mới với trình chỉnh sửa bên trong một hàng.

add_filter('edit_category_form_fields', 'cat_description');
function cat_description($tag)
{
    ?>
        <table class="form-table">
            <tr class="form-field">
                <th scope="row" valign="top"><label for="description"></label></th>
                <td>
                <?php
                    $settings = array('wpautop' => true, 'media_buttons' => true, 'quicktags' => true, 'textarea_rows' => '15', 'textarea_name' => 'description' );
                    wp_editor(htmlspecialchars_decode($tag->description , ENT_QUOTES, 'UTF-8'), 'cat_description', $settings);
                ?>
				<br />
               <span class="description"></span>
                </td>
           </tr>
       </table>
   <?php
}

Xóa box Mô tả Mặc định

Vì chúng tôi không thể xóa mô tả ở phía máy chủ thông qua bộ lọc, nên chúng tôi cần xóa hộp mô tả bằng cách sử dụng jQuery và phương thức remove (). Sử dụng hành động admin_head để thêm Javascript này vào thẻ head HTML để xóa hộp mô tả nếu trang đó là trang chỉnh sửa danh mục.


add_action('admin_head', 'remove_default_category_description');
function remove_default_category_description()
{
    global $current_screen;
    if ( $current_screen->id == 'edit-category' )
    {
    ?>
        <script type="text/javascript">
        jQuery(function($) {
            $('textarea#description').closest('tr.form-field').remove();
        });
        </script>
    <?php
    }
}

Xóa bộ lọc HTML khi lưu

Theo mặc định, WordPress sẽ đảm bảo nội dung này được chạy qua wp_filter_kses và wp_kses_datafilters để đảm bảo rằng chúng tôi đã bao gồm HTML hợp lệ. Bởi vì các trình chỉnh sửa TinyMce cho phép HTML dạng tự do, chúng tôi nên xóa các bộ lọc này khỏi phần tử mô tả.


// remove the html filtering
remove_filter( 'pre_term_description', 'wp_filter_kses' );
remove_filter( 'term_description', 'wp_kses_data' );