Pull to refresh

Ярлык слишком длинный ( больше 28 символов ). Укоротите, пожалуйста

Reading time1 min
Views4.9K

Решил я тут с одного старого сайта ( не на 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);
Tags:
Hubs:
Total votes 8: ↑2 and ↓6-3
Comments7

Articles