【问题标题】:URL rewriting in wordpress not using htaccess不使用 htaccess 在 wordpress 中重写 URL
【发布时间】:2020-09-21 02:15:01
【问题描述】:

我正在尝试在 wordpress 中重写 URL。

结构为/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=car&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' );

当我尝试添加模型名称时,我在自定义模板中获得了汽车 ID,但没有获得模型名称,它进入 404 页面。

代码-

$aNewRules = array('car/([^/]+)/([^/]+)/?$' => 'index.php?pagename=car&carID=$matches[1]&modelName=$matches[2]');

非常感谢任何帮助。提前致谢。

【问题讨论】:

  • 只是想确认您已刷新重写规则?
  • @mikerojas 是的,保存永久链接后有效。

标签: php wordpress url-rewriting


【解决方案1】:

两条路径都需要一条规则...更新add_rewrite_rules,如下所示:

function add_rewrite_rules($aRules)
{
  // id rule
  $aNewRules = array('car/([^/]+)/?$' => 'index.php?pagename=car&carID=$matches[1]');

  // model rule
  $bNewRules = array('car/([\w+]*)/([\w+]*)/?$' => 'index.php?pagename=car&carID=$matches[1]&modelName=$matches[2]');

  $aRules = $aNewRules + $bNewRules + $aRules;

  return $aRules;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多