php - 不使用 htaccess 在 wordpress 中重写 URL
问题描述
我正在尝试在 wordpress 中重写 URL。
该结构是/car/123/bmw-series-A
pagename 所在的位置car
,carID 所在的位置123
和 modelName 所在的位置bmw-series-A
有一个自定义模板,我将在其中获取 carID 和 modelName
我有以下代码
函数.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]');
非常感谢任何帮助。提前致谢。
解决方案
您需要两条路径的规则...更新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;
}
推荐阅读
- r - 通过分配不同的矩阵来计算字符的频率
- logging - 流利的不尊重日志轮换
- stenciljs - 在 stencil.js 中创建供内部使用的“私有”组件
- agda - _≡⟨_⟩_ Agda 标准库在哪里?
- c# - 如何使用 ILoggerFactory 并登录到控制台
- r - 我可以编写一个函数来重新评估一个因素的水平吗?
- python - I want to calculate are of parallelogram only if vertices lie between 0 to 1000 ,i.e. 0<=x<1000. How can I define constraints?
- laravel - Laravel Vue SPA 使用 Sanctum 响应未经授权
- html - 在浏览器上呈现 HTML 表单接收到的数据
- python - 没有折叠吉布斯采样的引导式 LDA