【发布时间】:2014-12-02 05:34:22
【问题描述】:
我正在使用 wordpress。 我已经从管理员创建了一个页面经销商配置文件并为其分配了一个模板。现在我想传递一个像
这样的参数SITE-URL/dealer-profile/SUV
我已将关注添加到我的.htaccess 中
RewriteRule ^dealer-profile/([a-zA-Z0-9_-]+)(|/)$ index.php?pagename=dealer-profile&dealer=$1 [QSA]
我也试过了
add_rewrite_rule('dealer-profile/([^/]+)', 'index.php?pagename=dealer- profile&dealer=$matches[1]', 'top');
flush_rewrite_rules(false);
当我请求SITE-URL/dealer-profile/SUV 时,它会自动重定向到SITE-URL/dealer-profile
请指教,我哪里错了。
现在我正在关注
function themeslug_query_vars( $qvars ) {
$qvars[] = 'dealer';
return $qvars;
}
add_filter( 'query_vars', 'themeslug_query_vars' , 10, 1 );
function add_rewrite_rules($aRules) {
$aNewRules = array('dealer-profile/([^/]+)/?$' => 'index.php?pagename=dealer-profile&dealer=$matches[1]');
$aRules = $aNewRules + $aRules;
return $aRules;
}
add_filter('rewrite_rules_array', 'add_rewrite_rules');
但这仅适用于数字,例如 - 测试/dealer-profile/234234/ 正在工作 - 测试/dealer-profile/234234/ 不工作
解决方案
参考:http://codex.wordpress.org/Class_Reference/WP_Rewrite
add_filter( 'rewrite_rules_array','my_insert_rewrite_rules' );
add_filter( 'query_vars','my_insert_query_vars' );
add_action( 'wp_loaded','my_flush_rules' );
// flush_rules() if our rules are not yet included
function my_flush_rules(){
$rules = get_option( 'rewrite_rules' );
if ( ! isset( $rules['(dealer-profile)/(.*)$'] ) ) {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
}
// Adding a new rule
function my_insert_rewrite_rules( $rules )
{
$newrules = array();
$newrules['dealer-profile/(.*)$'] = 'index.php?pagename=dealer-profile&dealer=$matches[1]';
return $newrules + $rules;
}
// Adding the id var so that WP recognizes it
function my_insert_query_vars( $vars )
{
array_push($vars, 'dealer');
return $vars;
}
非常感谢您的帮助@@jnhghy - Jantea Alexandri
【问题讨论】:
-
最后一行有错别字,2个网址(工作网址和不工作网址)相同:test/dealer-profile/234234/ is working - test/dealer-profile/234234 / 你能纠正一下吗?