我有一个WordPress主题,Woocommerce和Custom Post Types。
产品网址看起来像http://www.[domain].com/product/intel/?model_id=1234
. 取而代之的是,我们想要http://www.[domain].com/intel-core-i7-9700
.
所以我尝试了:
function my_rewrite_rules()
{
global $wp_rewrite;
add_rewrite_rule('^intel-core-i7-9700/?$','product/intel/?model_id=1234','top');
}
add_action('init', 'my_rewrite_rules');
function my_query_vars($vars)
{
$vars[] = 'model_id';
return $vars;
}
add_filter('query_vars', 'my_query_vars');
如果我调用 urlhttp://www.[domain].com/intel-core-i7-9700
我会得到不带英特尔详细信息的英特尔产品页面,因为查询参数model_id
没有传递。
我试过了:
$model_id = (isset($wp_query->query_vars['model_id'])) ? $wp_query->query_vars['model_id'] : false;
$model_id = (isset(get_query_var('model_id'))) ? get_query_var('model_id') : false;
我刷新了重写规则,但"model_id"不存在。有什么建议吗?
多谢。
很抱歉,解决方案非常简单
function my_query_vars($vars)
{
$vars[] .= 'model_id';
$vars[] .= 'product';
return $vars;
}
add_filter('query_vars', 'my_query_vars');