Решил я тут с одного старого сайта ( не на WooCommerce ) перенести товары на новый сайт с WooCommerce. Набросал по-быстрому скрипт экспорта custom’ных постов в съедобный для WooCommerce CSV-формат и при первой попытке импорта тут же получил:
Всему виной конечно же длинные наименования атрибутов и лень WooCommerce разработчиков — почему нельзя было в функционале импорта предусмотреть корректную обрезку slug’ов для импортируемых атрибутов товаров?
Пошел гуглить и нашел темку: https://ru.wordpress.org/support/topic/%D0%B4%D0%BB%D0%B8%D0%BD%D0%B0-%D0%B0%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B0-2 — где никакого решения не нашли, тему закрыли…
Ну что же, поискав нашел место в коде WooCommerce где происходит эта самая обработка slug’ов для загружаемых терминов таксономий ( атрибутов товаров ). Увидел hook sanitize_taxonomy_name и навесил свой фильтр:
add_filter( ‘sanitize_taxonomy_name’, function( $urldecode, $taxonomy ) {
$urldecode = mb_substr($urldecode, 0, 27, ‘utf-8’);
return $urldecode;
}, 10, 2 );
Вставляете этот код в functions.php Вашей активной темы и больше не увидите сообщение о длинных ярлыках.
p.s.: наверное всё-таки надо написать об этом в WooCommerce — много лет одна и та же пустяковая проблема, которую они никак не могут решить! также, я не увидел в коде уникализации slug’ов атрибутов и не проверял как это работает ( ведь в импорте могут быть похожие наименования атрибутов по первым 28 символам slug’а ) :
$urldecode = wp_unique_term_slug($urldecode, $taxonomy);
Всему виной конечно же длинные наименования атрибутов и лень WooCommerce разработчиков — почему нельзя было в функционале импорта предусмотреть корректную обрезку slug’ов для импортируемых атрибутов товаров?
Пошел гуглить и нашел темку: https://ru.wordpress.org/support/topic/%D0%B4%D0%BB%D0%B8%D0%BD%D0%B0-%D0%B0%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B0-2 — где никакого решения не нашли, тему закрыли…
Ну что же, поискав нашел место в коде WooCommerce где происходит эта самая обработка slug’ов для загружаемых терминов таксономий ( атрибутов товаров ). Увидел hook sanitize_taxonomy_name и навесил свой фильтр:
add_filter( ‘sanitize_taxonomy_name’, function( $urldecode, $taxonomy ) {
$urldecode = mb_substr($urldecode, 0, 27, ‘utf-8’);
return $urldecode;
}, 10, 2 );
Вставляете этот код в functions.php Вашей активной темы и больше не увидите сообщение о длинных ярлыках.
p.s.: наверное всё-таки надо написать об этом в WooCommerce — много лет одна и та же пустяковая проблема, которую они никак не могут решить! также, я не увидел в коде уникализации slug’ов атрибутов и не проверял как это работает ( ведь в импорте могут быть похожие наименования атрибутов по первым 28 символам slug’а ) :
$urldecode = wp_unique_term_slug($urldecode, $taxonomy);
Ярлык слишком длинный ( больше 28 символов ). Укоротите, пожалуйста
Решил я тут с одного старого сайта ( не на WooCommerce ) перенести товары на новый сайт с WooCommerce. Набросал по-быстрому скрипт экспорта custom’ных постов в съедобный для WooCommerce CSV-формат и...
habr.com