Поддержка WooCommerce Длина атрибута

  • Здравствуйте.
    Не подскажете как увеличить длину атрибута?
    Покопался в БД и ничего не получилось(
    Например:
    Taxonomy “Автоматическое выравнивание громкости (AVL)” name is more than 28 characters. Change it, please

Просмотр 4 ответов — с 31 по 34 (всего 34)
  • tuxfighter, Вы что, действительно думаете меня убедить не верить своим глазам? Не верить тому, что я вижу и видел ранее? (В тч что было в топиках как с моим участием, так и без меня, с др. людьми, пытающихся возражать «местным»)
    Не стоит.

    пост от 2014 года, как я и говорил выше.

    Это действующие правила (уж коль опубликованы)! Всё!

    tuxfighter, Вы что, действительно думаете меня убедить не верить своим глазам?

    отнють — я аргументированно отвечаю на ваши нападки. только и всего -))
    А вот убидить кого-то в чем-то…… я уже давно бросил заниматься подобным, я не проповедник

    Тоже бьюсь с этой проблемой.
    Раскопала совет на каком-то форуме, результаты дал, но лучше не стало 🙂

    Внесла правки в файле плагина woocommerce для WPAI record.php.
    Находится здесь:
    «../wp-content/plugins/woocommerce-xml-csv-product-import/models/import/record.php»
    Заменила допустимую длину названия атрибута с 31 на своё число.
    http://prntscr.com/n8o8yo

    Проблема с тем, что не создавались атрибуты — ушла. Атрибуты создаются, вместе со слагами, которые автоматически обрезаются по на дефолтных 28 символах.

    Но появилась другая проблема.
    Раньше при импорте 1 уникальный атрибут создавался 1 раз и использовался во всех импортируемых товарах. Теперь он создается столько раз, сколько есть товаров в импорте, в которых ему присвоено значение. Или даже без учёта этого, просто по к-ву товаров (не вникала). Во всех случаях слаг для дублирующегося атрибута создается один и тот же.
    http://prntscr.com/n8oj9z

    Так как я не программист, то не могу решить сама этот вопрос…
    Может, кто подскажет, что нужно доделать 🙂
    Думаю, было бы идеально сменить функционал с создания и проверки по имени атрибута на создание и проверку по слагу (т.к. бывают атрибуты, называющиеся одинаково, но с разными значениями; например «состояние = жидкий или твердый» или «состояние = новый или б/у».

    Прикладываю код функции:

        function create_taxonomy($attr_name, $logger, $prefix = 1){
    		
    		global $woocommerce;
    
            $attr_name_real = $prefix > 1 ? $attr_name . " " . $prefix : $attr_name;
    
    		if ( ! taxonomy_exists( wc_attribute_taxonomy_name( $attr_name_real ) ) ) {
    
    	 		// Grab the submitted data							
    			$attribute_name    = ( isset( $attr_name ) ) ? wc_sanitize_taxonomy_name( stripslashes( (string) $attr_name_real ) ) : '';
    			$attribute_label   = stripslashes( (string) $attr_name );
    			$attribute_type    = 'select';
    			$attribute_orderby = 'menu_order';						
    
    			if ( in_array( wc_sanitize_taxonomy_name( stripslashes( (string) $attr_name_real)), $this->reserved_terms ) ) {
                    $prefix++;
                    return $this->create_taxonomy($attr_name, $logger, $prefix);
    				//$logger and call_user_func($logger, sprintf(__('- <b>WARNING</b>: Slug “%s” is not allowed because it is a reserved term. Change it, please.', 'wpai_woocommerce_addon_plugin'), wc_attribute_taxonomy_name( $attribute_name )));
    			}			
    			else{				
    
    				// Register the taxonomy now so that the import works!
    				$domain = wc_attribute_taxonomy_name( $attr_name_real );
    				if (strlen($domain) < 128){
    
    					$this->wpdb->insert(
    						$this->wpdb->prefix . 'woocommerce_attribute_taxonomies',
                            array(
                                'attribute_label'   => $attribute_label,
                                'attribute_name'    => $attribute_name,
                                'attribute_type'    => $attribute_type,
                                'attribute_orderby' => $attribute_orderby,
                                'attribute_public'  => 1
                            )
    					);												
    
    					register_taxonomy( $domain,
    				        apply_filters( 'woocommerce_taxonomy_objects_' . $domain, array('product') ),
    				        apply_filters( 'woocommerce_taxonomy_args_' . $domain, array(
    				            'hierarchical' => true,
    				            'show_ui' => false,
    				            'query_var' => true,
    				            'rewrite' => false,
    				        ) )
    				    );
    
    					delete_transient( 'wc_attribute_taxonomies' );
    					$attribute_taxonomies = $this->wpdb->get_results( "SELECT * FROM " . $this->wpdb->prefix . "woocommerce_attribute_taxonomies" );
    					set_transient( 'wc_attribute_taxonomies', $attribute_taxonomies );
    
    					$logger and call_user_func($logger, sprintf(__('- <b>CREATED</b>: Taxonomy attribute “%s” have been successfully created.', 'wpai_woocommerce_addon_plugin'), wc_attribute_taxonomy_name( $attribute_name )));
    
    				}
    				else{
    					$logger and call_user_func($logger, sprintf(__('- <b>WARNING</b>: Taxonomy “%s” name is more than 128 characters. Change it, please.', 'wpai_woocommerce_addon_plugin'), $attr_name));
    				}				
    			}
    	 	}
    	 	else{
                if ( in_array( wc_sanitize_taxonomy_name( stripslashes( (string) $attr_name_real)), $this->reserved_terms ) ) {
                    $prefix++;
                    return $this->create_taxonomy($attr_name, $logger, $prefix);
                    //$logger and call_user_func($logger, sprintf(__('- <b>WARNING</b>: Slug “%s” is not allowed because it is a reserved term. Change it, please.', 'wpai_woocommerce_addon_plugin'), wc_attribute_taxonomy_name( $attribute_name )));
                }
            }
    
            return $attr_name_real;
    	}
    Модератор Yui

    (@fierevere)

    永子

    Тоже бьюсь с этой проблемой.

    правила форума п2

    создайте свою тему

Просмотр 4 ответов — с 31 по 34 (всего 34)
  • Тема «Длина атрибута» закрыта для новых ответов.