Переписывание URL в WordPress без использования htaccess

#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;
}