gpt4 book ai didi

WordPress:为什么 add_rewrite_rule 不起作用?

转载 作者:行者123 更新时间:2023-12-03 23:18:33 25 4
gpt4 key购买 nike

目标

一个可见的 URL:

/products/building-automation/details/productSKU

应该指向真实的 WordPress 页面:
/products/details/?SKU=productSKU

代码
public function setup_frontend() {

add_rewrite_rule(
'products/(building-automation|lighting-controls)/details/([^/]*)',
'products/details/?SKU=$matches[2]',
'top'
);

// Other code logic...

}

据我所知, $matches指向位于 () 中的正则表达式部分,所以在这个例子中, $matches[1]将是 building-automation , 和 $matches[2]将是 productSKU .

我已经多次尝试刷新规则。这是从类内部调用的,但这似乎不是问题。我正在将该函数附加到 init事件。

怎么了

我收到了 404模板。我究竟做错了什么?

编辑

事实证明,参数的第二部分必须是 index.php .因为我试图指向 products/... ,它坏了。所以我已经更新到这个:
    add_rewrite_rule(
'products/(building-automation|lighting-controls)/details/([^/]*)',
'?pagename=products/details&SKU=$matches[2]',
'top'
);

它不起作用并指向正确的页面和模板。然而, $matches部分仍未通过。事实上, $_GET['SKU']正在通过 '$matches[2]' .

最佳答案

第一个问题是它指向的东西不是以 index.php 开头的。 .它必须指向index.php?stuff , 很遗憾。但是您仍然可以使用页面名称,如下所示。

add_rewrite_rule(
'products/(building-automation|lighting-controls)/details/([^/]*)',
'index.php?pagename=products/details&SKU=$matches[2]',
'top'
);

其次,您需要注册您的查询字符串,即 SKU .添加这个:
add_filter( 'query_vars', 'product_details_rewrite_filter' );

function product_details_rewrite_filter( $query_vars ){
$query_vars[] = 'SKU';
return $query_vars;
}

你仍然会遇到问题。 $_GET['SKU']将是 $matches[2] ,不是 RIBU1C .要解决此问题,请更改 $matches[2]$2 .然后它将起作用:
add_rewrite_rule(
'products/(building-automation|lighting-controls)/details/([^/]*)',
'index.php?pagename=products/details&SKU=$2',
'top'
);

关于WordPress:为什么 add_rewrite_rule 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43099422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com