我有一个带有永久链接的 Wordpress 博客。我创建了一个显示产品表的静态页面(www.abc.xx/database/)。如果用户单击其中一个产品,它会打开一个名为“产品”的新静态页面,该页面通过产品 ID 从数据库中检索并显示有关产品的信息。URL 是 www.abc.xx/database/product?id=1。
但我想要一个像 www.abc.xx/database/product/my-product 这样的 URL 而不是 www.abc.xx/database/product?id=1?有人可以解释它是如何工作的吗?
更新:
我在博客上发布了一些解决方案。我将以下代码段添加到我的 functions.php 文件中。
add_filter('rewrite_rules_array', 'add_rewrite_rules');
function add_rewrite_rules($aRules) {
$aNewRules = array('database/product/([^/]*)/?$' => $wp_rewrite->index .'index.php?pagename=product&product-name=$matches[1]');
$aRules = $aNewRules + $aRules;
return $aRules;
}
add_filter('query_vars', 'add_query_vars');
function add_query_vars($aVars) {
$aVars[] = 'product-name';
return $aVars;
}
在我添加的产品页面网站上
if(isset($wp_query->query_vars['product-name'])) {
echo urldecode($wp_query->query_vars['product-name']);
}
现在,如果我调用 www.abc.xx/database/product/my-product,产品页面会打开,但“my-product”未发货。未设置“产品名称”变量。有什么提示吗?