Проблема: На WordPress-сайте с магазином от Woocommerce на страницах категорий в описании убираются html-теги. Все теги (h2, ul и т.д.) игнорируются и при сохранении редактирования удаляются. Т.е. оформить описание в категориях нельзя.
Решение 1. Чтобы включить поддержку html-тегов и возможность их добавить в описаниях категорий товаров, необходимо в файл темы functions.php
добавить Код №1:
1
2
3
4
5
6
7
8
9
10
11
|
// Включение поддержки html-тегов в описании категорий в Woocommerce
foreach ( array( ‘pre_term_description’ ) as $filter ) {
remove_filter( $filter, ‘wp_filter_kses’ );
}
foreach ( array( ‘term_description’ ) as $filter ) {
remove_filter( $filter, ‘wp_kses_data’ );
}
|
Решение 2. Второй вариант интереснее. Нужно добавить Код №2 в functions.php
, который заменит форму описания в категориях и тегах на форму с визуальным редактором TinyMCE, как в записях и т.п.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
/* Текстовый редактор в редакторе категории */
function my_category_description($container = ”){
$content = is_object($container) && isset($container->description) ? html_entity_decode($container->description) : ”;
$editor_id = ‘tag_description’;
$settings = ‘description’;
?>
<tr class=“form-field”>
<th scope=“row” valign=“top”><label for=“description”>Описание...</label></th>
<td><?php wp_editor($content, $editor_id, array(
‘textarea_name’ => $settings,
‘editor_css’ => ‘<style>.html-active .wp-editor-area{border:0;}</style>’,
)); ?><br />
<span class=“description”>Описание по умолчанию обычно не отображается! <br /> Но – некоторые темы могут его показывать</span></td>
</tr>
<?php
}
remove_filter( ‘pre_term_description’, ‘wp_filter_kses’ );
remove_filter( ‘term_description’, ‘wp_kses_data’ );
/* фин: редактор в полях – убираем старое поле редактирования */
function my_remove_category_description(){
global $mk_description;
if ( $mk_description–>id == ‘edit-category’ or ‘edit-tag’ ){
?>
<script type=“text/javascript”>
jQuery(function($) {
$(‘textarea#description’).closest(‘tr.form-field’).remove();
});
</script>
<?php
}
}
add_action(‘admin_head’, ‘my_remove_category_description’); // фильтр старого поля – скрываем
/* убираем старое поле редактирования */
add_filter(‘edit_category_form_fields’, ‘my_category_description’); // для категорий-рубрик
add_filter(‘edit_tag_form_fields’, ‘my_category_description’); // для меток-тегов
|