Как добавить ALT из заголовка для картинок товаров Woocommerce и убрать все символы
add_filter( 'wp_get_attachment_image_attributes', 'auto_set_wc_product_image_alt', 20, 3 );
function auto_set_wc_product_image_alt( $attr, $attachment, $context ) {
// Работаем ТОЛЬКО на странице отдельного товара WooCommerce
if ( ! is_product() ) {
return $attr;
}
global $product;
// Проверяем, что объект продукта существует
if ( isset( $product ) && is_a( $product, 'WC_Product' ) ) {
// Если атрибут alt пустой
if ( empty( $attr['alt'] ) ) {
// 1. Получаем название товара
$title = $product->get_name();
// 2. Удаляем все возможные HTML-теги
$title = wp_strip_all_tags( $title );
// 3. Удаляем ВСЕ спецсимволы, знаки препинания, скобки, кавычки и т.д.
// \p{L} оставляет любые буквы (включая русские), \p{N} оставляет цифры, \s оставляет пробелы.
// Модификатор 'u' включает поддержку UTF-8.
$title = preg_replace( '/[^\p{L}\p{N}\s]/u', '', $title );
// 4. Схлопываем множественные пробелы в один и убираем пробелы по краям
$title = trim( preg_replace( '/\s+/', ' ', $title ) );
// Присваиваем очищенное название
$attr['alt'] = $title;
}
}
return $attr;
}