Как ни хорош Wordpress с WooCommerce, но мультиязычность там сделана... мягко говоря - через одно место.
превращается в
и при редиректах превращается либо в 404, либо в
Причем по
Страница доступна
Путем гугления по запросам how to fix product slug in woocommerce wpml, how to change product slug in wpml woocommerce выяснилось, что проблема упорно возникает в течении прошлого года у разных людей.
Мало того что WPML платный, так еще и с WooCommerce наблюдаются постоянные геморрои, особенно с permalinks/slug.
Суть проблемы
Если включена мультиязычность - то после русифицикации URL продуктов вида
Если включена мультиязычность - то после русифицикации URL продуктов вида
http://mysupersite.com/woocommerce/product/my-super-item/
превращается в
http://mysupersite.com/woocommerce/товар/мой-супер-товар/
и при редиректах превращается либо в 404, либо в
http://mysupersite.com/woocommerce//мой-супер-товар/
Причем по
http://mysupersite.com/woocommerce/product/мой-супер-товар/
Страница доступна
Путем гугления по запросам how to fix product slug in woocommerce wpml, how to change product slug in wpml woocommerce выяснилось, что проблема упорно возникает в течении прошлого года у разных людей.
Рекомендации извлеченные из официального форума WPML.
- залить исправленный .po файл - в котором нужно удалить перевод product slug - не помогло.
- скачать обновленную версию WooCommerce Multilingual. Почему его не видел Plugin Update - загадка. А вот это вроде помогло - взлетело.
Да, это проверялось для WooCommerce 1.6 - для 2.0 вероятно работать не будет
Я решил ее так:
ОтветитьУдалитьудалил woocommerce.
Скачал плагин.
Изменил в woocommerce-ru_RU.po везде slug на product.
Изменил в корневой папке плагина файл woocommerce.php:
в функции register_post_type( "product",
изменил строку
'rewrite' => array( 'slug' => $product_base, 'with_front' => false, 'feeds' => $base_slug ),
на
'rewrite' => array( 'slug' => 'product', 'with_front' => false, 'feeds' => $base_slug ),
И ниже фрагмент
$product_base = ( get_option('woocommerce_prepend_shop_page_to_products') == 'yes' ) ? trailingslashit($base_slug) : trailingslashit(_x('product', 'slug', 'woocommerce'));
if ( get_option('woocommerce_prepend_category_to_products') == 'yes' ) $product_base .= trailingslashit('%product_cat%');
$product_base = untrailingslashit($product_base);
заменил на
$product_base = 'product';
Ок, спасибо
УдалитьНа данный момент решили отказаться от двух языков сразу
Спасибо, добрый человек!!!
ОтветитьУдалитьНа здоровье ;-)
УдалитьСейчас не получается воспользоваться описанными вариантами..
ОтветитьУдалитьустановил плагин - всё равно русское слово в URL
способ описанный в комментариях не работает т.к. в файле
woocommerce.php:
нет строчек
'rewrite' => array( 'slug' => $product_base, 'with_front' => false, 'feeds' => $base_slug ),
Этот способ был на WooCommerce 1.6, а вы похоже - взяли новую версию 2.0
УдалитьПоправлю в заголовке сейчас