Изменение пользовательского типа URL-адреса

У меня есть эта функция, и она делает именно то, что мне нужно, она отлично заменяет слова в URL-адресе, но ссылки не работают. Все ссылки хороши и отображают на сайте хорошо структурированные, как я хотел, но просто не открывайте сообщения. Есть ли способ заставить меня работать?

add_filter('post_type_link', 'replace_link', 1, 3); function replace_link( $link, $post = 0 ){ if ( $post->post_type == 'item' ){ return home_url('food/'. $post->ID); } else { return $link; } } function custom_rewrite_rule() { add_rewrite_rule('^food/([^/]*)/?','?item=$matches[1]','top'); } add_action('init', 'custom_rewrite_rule', 10, 0); 

Solutions Collecting From Web of "Изменение пользовательского типа URL-адреса"

Ваш post_type_link использует идентификатор сообщения, но запрос item var ожидает имя. Для запроса по ID вам нужно использовать p запрос var и установить post_type :

 add_rewrite_rule('food/([^/]+)/?$','index.php?post_type=item&p=$matches[1]','top');