Проблема: На WordPress-сайте с магазином от Woocommerce на страницах категорий в описании убираются html-теги. Все теги (h2, ul и т.д.) игнорируются и при сохранении редактирования удаляются. Т.е. оформить описание в категориях нельзя.
Решение 1. Чтобы включить поддержку html-тегов и возможность их добавить в описаниях категорий товаров, необходимо в файл темы functions.php
добавить Код №1:
1 2 3 4 5 6 7 8 9 |
// Включение поддержки 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, как в записях и т.п.
* Хуки
edit_category_form_fields
и edit_tag_form_fields
устарели с версии 3.0.0 и могут быть удалены.
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 |
/* Текстовый редактор в редакторе категории */ 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'); // для меток-тегов |
Вообще кайф! Применил вариант 2 в отельном файле и подключил к функшнс через инклуд