@makaravich

Как задать правила перезаписи URL?

Как-то так сложилось, что не силён я в регулярках, а также в создании ЧПУ (человеко-понятных 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), то всё работает отлично.

Проблема в том, что нам не нужен этот элемент.

Как можно решить эту проблему?
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы