Как обрезать описания рубрик в админке Worpress?

Ссылка скопирована
1 ответ

Текст описания рубрик в админ-панель занимает много места, что создает неудобство при прокрутке страницы:

Как обрезать описания рубрик в админке 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

Первое время код выполнялся, и описание рубрик выводилось сокращенно. Но позднее код работать перестал. В чем причина? Как сделать код рабочим?

Дополнительно

Как обрезать описания рубрик в админке Worpress?

Михаил Р. @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);

    Друг, как тебя отблагодарить? Может, на карту Сбера?

    Спасибо, но отметки и лайка с решением вопроса будет достаточно :)

Ответы:

Получилось, только колонки поменялись местами.

Как обрезать описания рубрик в админке Worpress?

  • К сожалению, это не является ответом на вопрос и будет удалено )
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Павел Админов Ответ

Старый вариант через фильтр 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);

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>';
});

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>'; });

  • PHP-вариант удобен, если нужно видеть ровно короткий текст.
  • CSS-вариант безопаснее, если нужно только убрать огромную высоту строк.
  • Код лучше держать в дочерней теме или небольшом админском mu-plugin.
  • Не обрезайте само поле описания при сохранении, если эти тексты используются на страницах рубрик.
Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно