Как добавить ALT из заголовка для картинок товаров Woocommerce и убрать все символы

Как добавить 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;
}


guest

Другие сообщения форума

Закрыть меню