在 Wordpress 中使用自定义重写规则
Using custom rewrite rules in Wordpress
我正在尝试在 WordPress 中创建自定义重写规则,以便我可以根据查询字符串中的内容将数据传递到页面。
我的页面运行良好:
/retailers-a-z/?merchant=some_merchant
然后还有
/retailers-a-z/?merchant=some-merchant&offer=some-offer
我首先尝试在 .htaccess 中为此创建一个重写规则,但自从意识到 WordPress 有它自己的内部重定向数据库..所以经过大量研究,我设法想出了以下代码......但是,它仍然无法正常工作..每当我尝试访问
/retailers-a-z/some-retailer
或 /retailers-a-z/some-retailer/some-offer
它只是加载主页。
functions.php:
function wp_raz_rules()
{
add_rewrite_rule(
'retailers-a-z/([^/]+)/?$',
'index.php?merchant=$matches[1]',
'top'
);
add_rewrite_rule(
'retailers-a-z/([^/]+)/([^/]+)/?$',
'index.php?merchant=$matches[1]&offer=$matches[2]',
'top'
);
add_rewrite_tag('%merchant%', '([^/]+)');
add_rewrite_tag('%offer%', '([^/]+)');
}
add_action('init', 'wp_raz_rules');
function wp_raz_vars($vars)
{
$vars[] = 'merchant';
$vars[] = 'offer';
return $vars;
}
add_filter('query_vars', 'wp_raz_vars');
然后我相信我可以使用 get_query_var('merchant')
和 get_query_var('offer')
而不是 $_GET[]
访问它们
有什么想法吗?谢谢:)
设法通过在查询字符串中明确定义页面名称来修复它。
index.php?pagename=retailers-a-z&merchant=$matches[1]&offer=$matches[2]
不能 100% 确定这样做是否正确。
我正在尝试在 WordPress 中创建自定义重写规则,以便我可以根据查询字符串中的内容将数据传递到页面。
我的页面运行良好:
/retailers-a-z/?merchant=some_merchant
然后还有
/retailers-a-z/?merchant=some-merchant&offer=some-offer
我首先尝试在 .htaccess 中为此创建一个重写规则,但自从意识到 WordPress 有它自己的内部重定向数据库..所以经过大量研究,我设法想出了以下代码......但是,它仍然无法正常工作..每当我尝试访问
/retailers-a-z/some-retailer
或 /retailers-a-z/some-retailer/some-offer
它只是加载主页。
functions.php:
function wp_raz_rules()
{
add_rewrite_rule(
'retailers-a-z/([^/]+)/?$',
'index.php?merchant=$matches[1]',
'top'
);
add_rewrite_rule(
'retailers-a-z/([^/]+)/([^/]+)/?$',
'index.php?merchant=$matches[1]&offer=$matches[2]',
'top'
);
add_rewrite_tag('%merchant%', '([^/]+)');
add_rewrite_tag('%offer%', '([^/]+)');
}
add_action('init', 'wp_raz_rules');
function wp_raz_vars($vars)
{
$vars[] = 'merchant';
$vars[] = 'offer';
return $vars;
}
add_filter('query_vars', 'wp_raz_vars');
然后我相信我可以使用 get_query_var('merchant')
和 get_query_var('offer')
而不是 $_GET[]
有什么想法吗?谢谢:)
设法通过在查询字符串中明确定义页面名称来修复它。
index.php?pagename=retailers-a-z&merchant=$matches[1]&offer=$matches[2]
不能 100% 确定这样做是否正确。