Как обрезать описания рубрик в админке Worpress?
Текст описания рубрик в админ-панель занимает много места, что создает неудобство при прокрутке страницы:
Несколько лет назад в файл functions.php был вставлен следующий код:
//обрезание описания рубрик в админке сайта start function wph_trim_cats() { add_filter('get_terms', 'wph_truncate_cats_description', 10, 2); } function wph_truncate_cats_description($terms, $taxonomies) { if('category' != $taxonomies[0]) return $terms; foreach($terms as $key=>$term) { $terms[$key]->description = mb_substr($term->description, 0, 20); if($term->description != '') { $terms[$key]->description .= '…'; } } return $terms; } add_action('admin_head-edit-tags.php', 'wph_trim_cats'); //обрезание описания рубрик в админке сайта end |
//обрезание описания рубрик в админке сайта start function wph_trim_cats() { add_filter('get_terms', 'wph_truncate_cats_description', 10, 2); } function wph_truncate_cats_description($terms, $taxonomies) { if('category' != $taxonomies[0]) return $terms; foreach($terms as $key=>$term) { $terms[$key]->description = mb_substr($term->description, 0, 20); if($term->description != '') { $terms[$key]->description .= '…'; } } return $terms; } add_action('admin_head-edit-tags.php', 'wph_trim_cats'); //обрезание описания рубрик в админке сайта end
Первое время код выполнялся, и описание рубрик выводилось сокращенно. Но позднее код работать перестал. В чем причина? Как сделать код рабочим?
Дополнительно
Михаил Р. @Mike_Ro Python, JS, WordPress, SEO, Bots, Adversting Изменяя уже существующие колонки, есть вероятность, что эти колонки может изменить и разработчик любого из плагинов или сами разрабы WP, соответственно, в определенный момент, привязки на эти колонки могут перестать работать. Я использую более надежный способ, добавление своей колонки с нужным мне содержимым.
functions.php:
// add custom column function add_custom_column($columns) { $columns['short_description'] = __('Краткое описание', 'my_custom_plugin'); unset($columns['description']); return $columns; } add_filter('manage_edit-category_columns', 'add_custom_column'); // fill custom column function fill_custom_column($deprecated, $column_name, $term_id) { if('short_description' === $column_name) { $term = get_term($term_id); echo mb_substr($term->description, 0, 20) . (mb_strlen($term->description) > 20 ? '…' : ''); } } add_action('manage_category_custom_column', 'fill_custom_column', 10, 3); |
// add custom column function add_custom_column($columns) { $columns['short_description'] = __('Краткое описание', 'my_custom_plugin'); unset($columns['description']); return $columns; } add_filter('manage_edit-category_columns', 'add_custom_column'); // fill custom column function fill_custom_column($deprecated, $column_name, $term_id) { if('short_description' === $column_name) { $term = get_term($term_id); echo mb_substr($term->description, 0, 20) . (mb_strlen($term->description) > 20 ? '…' : ''); } } add_action('manage_category_custom_column', 'fill_custom_column', 10, 3);
- PavelMay
Получилось, только колонки поменялись местами.
Вариант с вставкой Вашей колонки после определенной (например с именем 'name'):
// add custom column function add_and_position_custom_column($columns) { $new_columns = []; foreach ($columns as $key => $title) { // echo $title; <-- убрать коммент, чтобы проверить возможные имена колонок (если другого способа не нашли) $new_columns[$key] = $title; // insert column after column 'name' if ($key == 'name') { $new_columns['short_description'] = __('Краткое описание', 'my_custom_plugin'); } } unset($new_columns['description']); // remove column 'full description' return $new_columns; } add_filter('manage_edit-category_columns', 'add_and_position_custom_column'); // fill custom column function fill_custom_column($deprecated, $column_name, $term_id) { if ('short_description' === $column_name) { $term = get_term($term_id); echo mb_substr($term->description, 0, 20) . (mb_strlen($term->description) > 20 ? '…' : ''); } } add_action('manage_category_custom_column', 'fill_custom_column', 10, 3);// add custom column function add_and_position_custom_column($columns) { $new_columns = []; foreach ($columns as $key => $title) { // echo $title; <-- убрать коммент, чтобы проверить возможные имена колонок (если другого способа не нашли) $new_columns[$key] = $title; // insert column after column 'name' if ($key == 'name') { $new_columns['short_description'] = __('Краткое описание', 'my_custom_plugin'); } } unset($new_columns['description']); // remove column 'full description' return $new_columns; } add_filter('manage_edit-category_columns', 'add_and_position_custom_column'); // fill custom column function fill_custom_column($deprecated, $column_name, $term_id) { if ('short_description' === $column_name) { $term = get_term($term_id); echo mb_substr($term->description, 0, 20) . (mb_strlen($term->description) > 20 ? '…' : ''); } } add_action('manage_category_custom_column', 'fill_custom_column', 10, 3);
Друг, как тебя отблагодарить? Может, на карту Сбера?
Спасибо, но отметки и лайка с решением вопроса будет достаточно :)
Ответы:
Получилось, только колонки поменялись местами.
- К сожалению, это не является ответом на вопрос и будет удалено )
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос



Старый вариант через фильтр
get_termsхрупкий: он меняет объекты терминов на этапе получения данных, а не только отображение таблицы в админке. После обновлений WordPress, темы или плагинов порядок вызовов и состав колонок мог измениться, поэтому код перестал влиять на нужное место. Безопаснее менять именно колонку в списке рубрик или ограничить её CSS.Надёжный вариант — заменить стандартную колонку описания своей короткой колонкой:
add_filter('manage_edit-category_columns', function ($columns) { unset($columns['description']); $columns['short_description'] = 'Краткое описание'; return $columns; }); add_filter('manage_category_custom_column', function ($content, $column_name, $term_id) { if ($column_name !== 'short_description') { return $content; } $term = get_term($term_id, 'category'); if (! $term || is_wp_error($term)) { return ''; } $text = wp_strip_all_tags($term->description); return esc_html(mb_strimwidth($text, 0, 80, '...')); }, 10, 3);
Этот код не меняет описание рубрики в базе, а только выводит укороченную версию в админской таблице. На фронтенд и SEO-описания рубрик он не влияет.
Если вам достаточно визуально уменьшить высоту колонки, можно вообще не трогать PHP-данные и добавить CSS только для экрана рубрик:
add_action('admin_head-edit-tags.php', function () { echo '<style> .taxonomy-category .column-description { max-width: 420px; } .taxonomy-category .column-description p { max-height: 44px; overflow: hidden; } </style>'; });