Поддержка WooCommerce Импорт товара Woocommerce c длинными атрибутами

  • Здравствуйте. Возникла проблема при импорте товаров из csv (около 1500 товаров и 52 различных атрибута). И импорте возникает ошибка, что длина ярлыка (слага) атрибута не может быть длиннее 28 символов. Атрибутов на сайте этих изначально нет, он их создает из того же csv. Да, изначально он их создавал в кириллице, но я поставил плагин и теперь ярлыки атрибутов создаются в латинице, но все равно ругается на длину. Попадаются вот такие атрибуты «Регулировка скорости вентилятора/интенсивности испарения» и естественно длина ярлыка будет такой же длинной.
    Может есть какой-то плагин либо разрешающий длинные ярлыки атрибутов либо который бы просто создавал их рандомно. Пусть хоть цифры пишет, мне все равно…Из 1500 товаров у 700 встречаются длинные атрибуты. А атрибуты тоже менять на короткие не хочется и законом не запрещено..

Просмотр 15 ответов — с 1 по 15 (всего 16)
  • длина ярлыка (слага) атрибута не может быть длиннее 28 символов

    Можно увеличить 28 на другое значение добавлением в functions.php вашей (дочерней) темы:

    function valid_attribute_name( $attribute_name ) {
        if ( strlen( $attribute_name ) >= 128 ) {
                return new WP_Error( 'error', sprintf( __( 'Slug "%s" is too long (128 characters max). Shorten it, please.', 'woocommerce' ), sanitize_title( $attribute_name ) ) );
        } elseif ( wc_check_if_attribute_name_is_reserved( $attribute_name ) ) {
                return new WP_Error( 'error', sprintf( __( 'Slug "%s" is not allowed because it is a reserved term. Change it, please.', 'woocommerce' ), sanitize_title( $attribute_name ) ) );
        }
    
        return true;
    }

    После завершения импорта функцию можно удалить.

    Можно увеличить 28 на другое значение добавлением в functions.php вашей (дочерней) темы:

    Я уже это делал, но не помогло. Может я что-то делаю не так..
    Вот скрин
    https://smarta.store/wp-content/uploads/атрибуты.jpg

    Функция проверенная, работает. Возможно вам не хватило значения 128, пуникод может быть очень длинным. Попробуйте еще увеличить.
    Советую еще попробовать предварительно создать атрибуты, а потом уже запускать импорт товаров, если вы пользуетесь штатным импортером.

    У меня плагин преобразует в латиницу, поэтому он получается не такой длинный. Создал дочернюю тему, сейчас попробую импортировать заново.

    @kw56

    Функция проверенная, работает. Возможно вам не хватило значения 128, пуникод может быть очень длинным. Попробуйте еще увеличить.
    Советую еще попробовать предварительно создать атрибуты, а потом уже запускать импорт товаров, если вы пользуетесь штатным импортером.

    Вылетела ошибка…
    Скрин
    https://smarta.store/wp-content/uploads/атрибуты-2.jpg

    • Ответ изменён 4 года, 7 месяцев назад пользователем romantsev.

    а я выставил число 254…

    @kw56

    Может быть этот код относится не к ярлыкам как на фото
    https://smarta.store/wp-content/uploads/атрибуты-3.jpg
    а к названию атрибута? $attribute_name
    У меня именно на Slug (ярлык) ругается

    Да нет, все правильно..

    `$attribute = self::get_posted_attribute();
    $args = array(
    ‘name’ => $attribute[‘attribute_label’],
    ‘slug’ => $attribute[‘attribute_name’],
    ‘type’ => $attribute[‘attribute_type’],
    ‘order_by’ => $attribute[‘attribute_orderby’],
    ‘has_archives’ => $attribute[‘attribute_public’],
    );`

    • Ответ изменён 4 года, 7 месяцев назад пользователем romantsev.
    • Ответ изменён 4 года, 7 месяцев назад пользователем romantsev.

    Я не знаю, может ли мешать кэширование и плагин Jetpack. У вас сам WooCommerce грузится не с https://smarta.store, а с https://c0.wp.com/

    @kw56
    Плагин отключил. А почему woocommerce грузится не оттуда не понимаю..

    Модератор Yui

    (@fierevere)

    永子

    почему woocommerce грузится не оттуда не понимаю

    «ускоритель сайта» Jetpack при включении позволяет некоторые статические ресурсы (WP, JetPack, WC, возможно что-то еще) загружать с CDN wp.com

    Отключение плагина не помогло

    Проблема решена.
    Находилось это в файле
    /wp-content/plugins/woocommerce/includes/wc-attribute-functions.php

    И вот это число 28 меняем на любое любое
    строка 486

    // Validate slug.
    	if ( strlen( $slug ) >= 28 ) {
    		/* translators: %s: attribute slug */
    		return new WP_Error( 'invalid_product_attribute_slug_too_long', sprintf( __( 'Slug "%s" is too long (28 characters max). Shorten it, please.', 'woocommerce' ), $slug ), array( 'status' => 400 ) );
    	} elseif ( wc_check_if_attribute_name_is_reserved( $slug ) ) {
    		/* translators: %s: attribute slug */
    		return new WP_Error( 'invalid_product_attribute_slug_reserved_name', sprintf( __( 'Slug "%s" is not allowed because it is a reserved term. Change it, please.', 'woocommerce' ), $slug ), array( 'status' => 400 ) );
    	} elseif ( ( 0 === $id && taxonomy_exists( wc_attribute_taxonomy_name( $slug ) ) ) || ( isset( $args['old_slug'] ) && $args['old_slug'] !== $slug && taxonomy_exists( wc_attribute_taxonomy_name( $slug ) ) ) ) {
    		/* translators: %s: attribute slug */
    		return new WP_Error( 'invalid_product_attribute_slug_already_exists', sprintf( __( 'Slug "%s" is already in use. Change it, please.', 'woocommerce' ), $slug ), array( 'status' => 400 ) );
    	}

    Вы знаете, что это только до первого обновления ВУУ?

    @tuxfighter
    Да мне мне все равно! Хоть пусть эта процедура действует 5 минут. Моя задача стояла выгрузить 1500 товаров, а не думать что такое сделать, чтобы так было всегда. Вот если бы я раньше нашел эту информацию или мне где-то с этим помогли. 3 дня уже импортирую эти товары…

    • Ответ изменён 4 года, 7 месяцев назад пользователем romantsev.
Просмотр 15 ответов — с 1 по 15 (всего 16)
  • Тема «Импорт товара Woocommerce c длинными атрибутами» закрыта для новых ответов.