Обрезаем текст описания в таблице терминов в админке WordPress

В WordPress при работе с таксономиями, рубриками и категориями в админке часто возникает проблема длинных описаний. Они могут загромождать интерфейс, затрудняя навигацию по таблице терминов. Этот код позволяет автоматически обрезать и укоротить текст описаний, делая его более компактным и удобным для просмотра.

Этот код полезен, если в админке WordPress длинные описания терминов загромождают таблицу, и их нужно укоротить.

/// Cut term description filed for term list table in admin
add_filter( 'wp_list_table_class_name', 'term_list_table_cut_term_description' );
function term_list_table_cut_term_description( $class_name ){
	if( $class_name !== WP_Terms_List_Table::class ){
		return $class_name;
	}

	if( class_exists( Cutdesc_Terms_List_Table::class ) ){
		return Cutdesc_Terms_List_Table::class;
	}

	class Cutdesc_Terms_List_Table extends WP_Terms_List_Table {
		/**
		 * @param WP_Term $tag Term object.
		 */
		public function column_description( $tag ): string {
			if( $tag->description ){
				return wp_trim_words( $tag->description, 10 );
			}

			return parent::column_description( $tag );
		}
	}

	return Cutdesc_Terms_List_Table::class; // @phpstan-ignore-line
}

Этот код изменяет отображение описаний терминов в таблице списка терминов в админке WordPress.

Что делает код:

  • Использует фильтр wp_list_table_class_name, чтобы переопределить стандартный класс WP_Terms_List_Table.
  • Cоздаётся его дочерний класс Cutdesc_Terms_List_Table.
  • В новом классе переопределяется метод WP_Terms_List_Table::column_description(), который сокращает описание термина до 10 слов с помощью wp_trim_words().
  • Если описания нет, вызывается родительский метод.