Я действительно не могу это понять.
Что я хочу сделать, это URI http://www.hotels-lithuania.net/index.php?page=76&type=hotels&id=1 преобразовать в http://www.hotels-lithuania.net/item/hotels/ 1 . Фактически я прочитал тонны страниц, к чему я пришел:
add_action( 'init', 'wpa5413_init' ); function wpa5413_init() { add_rewrite_rule( 'item/([^/]+)/([^/]+)?', 'index.php?page=76&type=$matches[1]&id=$matches[2]', 'top' ); } add_filter( 'query_vars', 'wpa5413_query_vars' ); function wpa5413_query_vars( $query_vars ) { $query_vars[] = 'type'; $query_vars[] = 'id'; return $query_vars; }
Если я войду в hotels-lithuania.net/item/hotels/1 в свой браузер, он порежет отелям-lithuania.net/item/ и cc никакие предметы не отображаются.
Экран из плагина анализатора перезаписи: i.stack.imgur.com/AgNoq.png
Извините за плохие гиперссылки, но я новичок здесь и не могу опубликовать
EDIT: Я не знаю, почему, но у меня был guid в моем db со значением localhost / hotel /? page_id = 76 Итак, мой последний файл rewrite_rule выглядит так:
add_action( 'init', 'wpa5413_init' ); function wpa5413_init() { add_rewrite_rule( 'item/([^/]+)/([^/]+)?', 'index.php?page_id=76&itemType=$matches[1]&itemId=$matches[2]', 'top' ); } add_filter( 'query_vars', 'wpa5413_query_vars' ); function wpa5413_query_vars( $query_vars ) { $query_vars[] = 'itemType'; $query_vars[] = 'itemId'; return $query_vars; }
И используя эти переменные с:
global $wp; $type = $wp->query_vars['itemType']; $id = $wp->query_vars['itemId'];
Я подозреваю, что у вас конфликт с вашими запросами. id
уже является запросом WordPress var, а type
– зарезервированным словом. Вы должны использовать vars, который, как вы знаете, будет уникальным среди ядра и любого плагина, который вы можете использовать, префикс всего, например zilvinas_id
и zilvinas_type
.