WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Отловить и перенаправить URL с правильно выбраним регионом

Хочу реализовать такую штуку как выбранный пользователем регион в url.

Идея такая

  1. Пользователь всегда зарегистрирован
  2. Когда пользователь выбирает регион, то выбранный регион записывается ему в meta и в будущем все ссылки автоматически строятся с дописыванием региона и если он перешел по ссылке с другим регионом то в его мета автоматически меняется регион
    http://mysite.com/{other url param} --> http://mysite.com/{region}/{other url param}

У меня вариант отлавливать "home_url" на лету, валидировать его и дописывать и если нужно редиректить куда нужно, но это не совсем работает

// это небольшая виноска с класса
 add_filter( 'site_url',      array($this, 'city_rewrite_custom_url'), 10, 4 );
 add_filter( 'home_url',      array($this, 'city_rewrite_custom_url'), 10, 4 );

function city_rewrite_custom_url ( $url, $path = false, $orig_scheme = false, $blog_id = false ) {

		if( is_admin() )
			return $url;    
		$add_section = get_current_city();

		if( stripos($url, 'wp-json')     !== FALSE ) return $url; 
		if( stripos($url, '\/feed\/')    !== FALSE ) return $url;
		if( stripos($url, 'wp-includes') !== FALSE ) return $url;
		if( stripos($url, $add_section ) !== FALSE ) return $url; 

		if( !empty( $path ) and $path != '/') {

			$_url = explode($path, $url);
			$path = $path[0] == '/' ? $path : '/'.$path;

			$add_section = substr($_url[0], -1, 1) == '/' ? $add_section : '/'.$add_section;

			$url = $_url[0].$add_section.$path;
		}
		else {
			$add_section = substr($url, -1, 1) == '/' ? $add_section : '/'.$add_section;
			$url = $url.$add_section;            
		}       
		return $url;
	}

Подскажите, какие есть варианты, и как можна вийти из ситуации. Как работает WP_Rewrite я так и не понял и самое главное я нигде не нашел момент где можно глобально менять url для всего сайта

Заметки к вопросу:
kaliyan 2 мес назад

Я не понял смысл всего этого, объясните на реальных данных.

Что будет на странице http://mysite.com/{region}/{other url param}?

Зачем вам wp_rewrite? Постройте логику на куках и не на переписки урлов, а на редиректах например. Тем более если пользователи будут авторизованы.

homeandriy 2 мес назад

Суть в том что так я хочу сделать базу по городах, например пост с названиям "Супер акция" относится к разделу (категория) акция и к городам (таксономия 'city') "Москва", "Питер". Теперь я хочу Что б человек зашел на сайт выбрал город "Питер" и теперь у него все URL выглядели как http://site.com/piter/
Теперь он может просматривать весь контент который относится этому городу, если это контент относится к другому городу, то ему нужно сменить город.

Далее он делится этой ссылкой и она открывает нужный контент.

Для чего это должно работать ? Это должно работать для страниц/постов/ любых кастомных таксономий и типов постов

Это глобальная задача!
Если можно решить как то проще то готов выслушать другие варианты.

0
Andriy
2 месяца назад
  • 0
    el-lable200 cайт: el-lable.ru

    Это плохая идея, такое реализовывается на куках.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация