Как-то так сложилось, что не силён я в регулярках, а также в создании ЧПУ (человеко-понятных URL для WordPress-а) :-)
Собственно проблема:
В Вордпрессе, в используемой нами теме есть кастомный тип записей tovar. По умолчанию этот тип записей имеет структуру УРЛ:
https://oursite.ru/catalog/%tovar_category%/%tovar_name%
где:
%tovar_category%
- слаг категории товара
%tovar_name%
- слаг товара
Требуется сделать УРЛ вида:
https://oursite.ru/%city%/%tovar_name%
где:
%city%
- название города (может изменяться динамически, можно получить через соответствующую функцию)
%tovar_name%
- слаг товара
Для решения проблемы, пытаюсь при регистрации этого кастомного типа записей установить слаг
'slug' => '%city%'
и переписать значение переменной
%city%
следующим кодом:
function show_city_permalinks( $post_link, $post ) {
if ( is_object( $post ) && $post->post_type == 'tovar' ) {
return str_replace( '%city%', strtolower( IC_Geo::sc_current_city_lat() ), $post_link );
}
return $post_link;
}
add_filter( 'post_type_link', 'show_city_permalinks', 1, 2 );
При этом почему-то ломаются УРЛы обычных страниц (page).
Но если задать
'slug' => 'city/%city%'
(добавив в УРЛ еще один элемент
city), то всё работает отлично.
Проблема в том, что нам не нужен этот элемент.
Как можно решить эту проблему?