#php #wordpress #url-rewriting
#php #wordpress #url-переписывание
Вопрос:
Я пытаюсь переписать URL в WordPress.
Структура /car/123/bmw-series-A
— это то, где pagename car
, carId 123
и ModelName bmw-series-A
Существует пользовательский шаблон, в котором я буду получать carId и ModelName
У меня есть следующий код
functions.php
function add_rewrite_rules($aRules) {
$aNewRules = array('car/([^/] )/?$' => 'index.php?pagename=caramp;carID=$matches[1]');
$aRules = $aNewRules $aRules;
return $aRules;
}
// hook add_rewrite_rules function into rewrite_rules_array
add_filter('rewrite_rules_array', 'add_rewrite_rules');
function prefix_register_query_var( $vars ) {
$vars[] = 'carID';
$vars[] = 'modelName';
return $vars;
}
add_filter( 'query_vars', 'prefix_register_query_var' );
Я получаю carId в пользовательском шаблоне, но не имя модели, когда я пытаюсь добавить ModelName, он переходит на страницу 404.
код —
$aNewRules = array('car/([^/] )/([^/] )/?$' => 'index.php?pagename=caramp;carID=$matches[1]amp;modelName=$matches[2]');
Любая помощь приветствуется. Заранее спасибо.
Комментарии:
1. Просто хотите подтвердить, что вы сбросили правила перезаписи?
2. @mikerojas Да, сработало после сохранения постоянных ссылок.
Ответ №1:
Вам нужно правило для обоих путей… обновление add_rewrite_rules
, как показано ниже:
function add_rewrite_rules($aRules)
{
// id rule
$aNewRules = array('car/([^/] )/?$' => 'index.php?pagename=caramp;carID=$matches[1]');
// model rule
$bNewRules = array('car/([w ]*)/([w ]*)/?$' => 'index.php?pagename=caramp;carID=$matches[1]amp;modelName=$matches[2]');
$aRules = $aNewRules $bNewRules $aRules;
return $aRules;
}