Làm thế nào dùng HTML trong mô tả chuyên mục WordPress?

Mặc định WordPress loại bỏ các thẻ HTML khỏi phần mô tả taxonomy như chuyên mục, tag vì lý do bảo mật. Để cho phép sử dụng HTML, tôi tắt cơ chế lọc mặc định này bằng đoạn mã dưới đây:

// Vô hiệu bộ lọc loại bỏ mã HTML khỏi phần mô tả chuyên mục, tag
foreach ( array( 'pre_term_description' ) as $filter ) {
	remove_filter( $filter, 'wp_filter_kses' );
	add_filter( $filter, 'wp_filter_post_kses' );
}

// Vô hiệu bộ lọc loại bỏ mã HTML khi hiển thị phần mô tả
foreach ( array( 'term_description' ) as $filter ) {
	remove_filter( $filter, 'wp_kses_data' );
}

Tuy nhiên WordPress không hỗ trợ soạn thảo HTML cho các mô tả, nên tôi quyết định dùng cách khác, là shortcode:

// Cho phép sử dụng shortcode trong phần mô tả danh mục, thẻ và taxonomy
add_filter( 'term_description', 'do_shortcode' );

Dùng shortcode tạo HTML cho mô tả taxonomy

Tùy thuộc giao diện, trình tạo trang (page builder) hoặc các plugin đang kích hoạt, WordPress có thể vẫn tự động loại bỏ các thẻ HTML được tạo ra từ shortcode. Nếu dòng mã trên không làm shortcode hiển thị đầy đủ, bạn hãy thử thay thế bằng đoạn mã hoàn chỉnh dưới đây:

// Cho phép thực thi shortcode trong phần mô tả taxonomy
add_filter( 'term_description', 'do_shortcode' );

// Ngăn WordPress tự động bao bọc các shortcode trong thẻ paragraph
add_filter( 'term_description', 'shortcode_unautop' );

// Vô hiệu bộ lọc bảo mật vốn loại bỏ các đoạn mã HTML/JS
remove_filter( 'pre_term_description', 'wp_filter_kses' );