• Resolved face2005

    (@face2005)


    Hey! how to turn off translation in product attributes in woocommerce?

Viewing 15 replies - 1 through 15 (of 19 total)
  • Plugin Author kaggdesign

    (@kaggdesign)

    Hi,

    The latest version of cyr2lat does not transliterate product attributes.

    Thread Starter face2005

    (@face2005)

    updated plugin … translates ….
    https://prnt.sc/10d2a9s

    Plugin Author kaggdesign

    (@kaggdesign)

    Я неправильно понял ваш вопрос. Транлитерация существующих атрибутов отменена при фоновой конвертации в последней версии плагина. При создании новых атрибутов, транслитерация работает. Для того, чтобы её отключить, добавьте следующий код в functions.php вашщей темы:

    
    /**
     * Sanitize taxonomy name.
     *
     * @param string $sanitized Sanitized taxonomy name.
     * @param string $taxonomy  Taxonomy name.
     *
     * @return string
     */
    function my_sanitize_taxonomy_name( $sanitized, $taxonomy ) {
    	global $cyr_to_lat_plugin;
    
    	if ( null === $cyr_to_lat_plugin ) {
    		return $sanitized;
    	}
    
    	remove_filter( 'sanitize_title', [ $cyr_to_lat_plugin, 'sanitize_title' ], 9 );
    	$sanitized = urldecode( sanitize_title( urldecode( $taxonomy ) ) );
    	add_filter( 'sanitize_title', [ $cyr_to_lat_plugin, 'sanitize_title' ], 9, 3 );
    
    	return $sanitized;
    }
    
    add_filter( 'sanitize_taxonomy_name', 'my_sanitize_taxonomy_name', PHP_INT_MAX, 2 );
    
    Plugin Author mihdan

    (@mihdan)

    @kaggdesign может в ридми добавить?

    Plugin Author kaggdesign

    (@kaggdesign)

    @mihdan лучше сделать выбор типов постов и таксономий на странице опций. Это сейчас в работе.

    Plugin Author Sergey Biryukov

    (@sergeybiryukov)

    WordPress Dev

    При создании новых атрибутов, транслитерация работает.

    Может, имеет смысл по умолчанию отключить её для атрибутов?

    Thread Starter face2005

    (@face2005)

    приветствую! не работает код.. может нужно как-то жестко прописать атрибут pa_color ?

    Plugin Author kaggdesign

    (@kaggdesign)

    Код работает, я его тестировал. При наличии этого кода, новые атрибуты WooCommerce не транслитерируются.

    Опишите, как вы использзовали этот код и как именно он не работает. Что вы делаете, что желаете получить и что происходит на самом деле.

    Thread Starter face2005

    (@face2005)

    add_filter( ‘Цвет’, ‘my_sanitize_taxonomy_name’, PHP_INT_MAX, 2 );

    добавляю новый цвет в атрибут Цвет , все переводит..

    Plugin Author kaggdesign

    (@kaggdesign)

    Нет такого фильтра Цвет. Не надо ничего сочинять. Просто скопируйте код выше целиком в functions.php.

    Thread Starter face2005

    (@face2005)

    Добрый день! извините за назойливость.. я вот короткое видео снял…
    видео

    Plugin Author kaggdesign

    (@kaggdesign)

    Проблема в неправильной терминологии. Вы спрашиваете про атрибуты, а добавляете значение (термин) атрибута.

    Я посмотрю, что можно сделать.

    Plugin Author kaggdesign

    (@kaggdesign)

    Замените код, указанный выше, следующим:

    
    
    /**
     * Sanitize taxonomy name.
     *
     * @param string $sanitized Sanitized taxonomy name.
     * @param string $taxonomy  Taxonomy name.
     *
     * @return string
     */
    function my_sanitize_taxonomy_name( $sanitized, $taxonomy ) {
    	global $cyr_to_lat_plugin;
    
    	if ( null === $cyr_to_lat_plugin ) {
    		return $sanitized;
    	}
    
    	remove_filter( 'sanitize_title', [ $cyr_to_lat_plugin, 'sanitize_title' ], 9 );
    	$sanitized = urldecode( sanitize_title( urldecode( $taxonomy ) ) );
    	add_filter( 'sanitize_title', [ $cyr_to_lat_plugin, 'sanitize_title' ], 9, 3 );
    
    	return $sanitized;
    }
    
    add_filter( 'sanitize_taxonomy_name', 'my_sanitize_taxonomy_name', PHP_INT_MAX, 2 );
    
    /**
     * Filters a term field value before it is sanitized.
     *
     * @param mixed  $value    Value of the term field.
     * @param string $taxonomy Taxonomy slug.
     *
     * @return mixed
     */
    function my_pre_term_slug_before( $value, $taxonomy ) {
    	global $cyr_to_lat_plugin;
    
    	if ( null === $cyr_to_lat_plugin ) {
    		return $value;
    	}
    
    	remove_filter( 'sanitize_title', [ $cyr_to_lat_plugin, 'sanitize_title' ], 9 );
    
    	return $value;
    }
    
    add_filter( 'pre_term_slug', 'my_pre_term_slug_before', - PHP_INT_MAX, 10, 2 );
    
    /**
     * Filters a term field value before it is sanitized.
     *
     * @param mixed  $value    Value of the term field.
     * @param string $taxonomy Taxonomy slug.
     *
     * @return mixed
     */
    function my_pre_term_slug_after( $value, $taxonomy ) {
    	global $cyr_to_lat_plugin;
    
    	if ( null === $cyr_to_lat_plugin ) {
    		return $value;
    	}
    
    	add_filter( 'sanitize_title', [ $cyr_to_lat_plugin, 'sanitize_title' ], 9, 3 );
    
    	return $value;
    }
    
    add_filter( 'pre_term_slug', 'my_pre_term_slug_after', PHP_INT_MAX, 10, 2 );

    Thread Starter face2005

    (@face2005)

    Работает.. Спасибо большое!

    Plugin Author kaggdesign

    (@kaggdesign)

    Второй вариант кода имеет недостаток – он также блокирует транслитерацию терминов обычных таксономий. Вот третий вариант, в котором этот недостаток устранён:

    
    /**
     * Sanitize taxonomy name.
     *
     * @param string $sanitized Sanitized taxonomy name.
     * @param string $taxonomy  Taxonomy name.
     *
     * @return string
     */
    function my_sanitize_taxonomy_name( $sanitized, $taxonomy ) {
    	global $cyr_to_lat_plugin;
    
    	if ( null === $cyr_to_lat_plugin ) {
    		return $sanitized;
    	}
    
    	remove_filter( 'sanitize_title', [ $cyr_to_lat_plugin, 'sanitize_title' ], 9 );
    	$sanitized = urldecode( sanitize_title( urldecode( $taxonomy ) ) );
    	add_filter( 'sanitize_title', [ $cyr_to_lat_plugin, 'sanitize_title' ], 9, 3 );
    
    	return $sanitized;
    }
    
    add_filter( 'sanitize_taxonomy_name', 'my_sanitize_taxonomy_name', PHP_INT_MAX, 2 );
    
    /**
     * Filters a term field value before it is sanitized.
     *
     * @param mixed  $value    Value of the term field.
     * @param string $taxonomy Taxonomy slug.
     *
     * @return mixed
     */
    function my_pre_term_slug_before( $value, $taxonomy ) {
    	global $cyr_to_lat_plugin;
    
    	if ( null === $cyr_to_lat_plugin || 0 !== strpos( $taxonomy, 'pa_' ) ) {
    		return $value;
    	}
    
    	remove_filter( 'sanitize_title', [ $cyr_to_lat_plugin, 'sanitize_title' ], 9 );
    
    	return $value;
    }
    
    add_filter( 'pre_term_slug', 'my_pre_term_slug_before', - PHP_INT_MAX, 10, 2 );
    
    /**
     * Filters a term field value before it is sanitized.
     *
     * @param mixed  $value    Value of the term field.
     * @param string $taxonomy Taxonomy slug.
     *
     * @return mixed
     */
    function my_pre_term_slug_after( $value, $taxonomy ) {
    	global $cyr_to_lat_plugin;
    
    	if ( null === $cyr_to_lat_plugin || 0 !== strpos( $taxonomy, 'pa_' ) ) {
    		return $value;
    	}
    
    	add_filter( 'sanitize_title', [ $cyr_to_lat_plugin, 'sanitize_title' ], 9, 3 );
    
    	return $value;
    }
    
    add_filter( 'pre_term_slug', 'my_pre_term_slug_after', PHP_INT_MAX, 10, 2 );`
    
Viewing 15 replies - 1 through 15 (of 19 total)
  • The topic ‘Attributes in woocommerce’ is closed to new replies.