Переписывание URI: обработка одной страницы

Вот что я хотел бы сделать: заставить WordPress думать, что моя страница с именем « toto » может быть вызвана из « /toto », но также из « /toto/{alphanum char} »

Я не хочу использовать специальное правило перезаписи, потому что я не хочу касаться файла « .htaccess ».

Есть ли способ сделать это в WordPress?

Вам нужно добавить правило перезаписи в WordPress. Это можно сделать, если вы касаетесь .htaccess. Например:

 add_action('init', 'cyb_rewrite_rule'); function cyb_rewrite_rule() { add_rewrite_rule( 'toto/([^/]+)/?$', 'index.php?pagename=$matches[1]', 'top' ); } 

Если вам нужен доступ ко второй части URL-адреса в качестве запроса var, вы можете сделать это:

 add_action('init', 'cyb_rewrite_rule'); function cyb_rewrite_rule() { add_rewrite_rule( 'toto/([^/]+)/?$', 'index.php?pagename=$matches[1]&secondpart=$matches[2]', 'top' ); } add_filter('query_vars', 'cyb_add_vars'); function cyb_add_vars($vars) { $vars[] = 'secondpart'; return $vars; } 

Теперь «secondpart» доступен в пуле запросов vars, и вы можете получить к нему доступ с помощью функций WordPress. Например, для получения изображений у вас есть этот URL-адрес: «mysite.com/toto/apple»

 if( get_query_var( "secondpart" == "apple" ) ) { //It matchs }