我在用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');但这只适用于测试/经销商-配置文件/234234/正在工作-测试/经销商-配置文件/234234/不起作用的数字。
溶液
参考文献:重写
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-jnhghy
发布于 2014-12-02 09:24:24
您需要创建一个函数来将查询变量添加到查询字符串中,然后将该函数挂钩到query_vars钩子中:
function add_query_vars($aVars) {
$aVars[] = "dealer-profile"; // represents the name of the variable that you want to pass
}
// hook add_query_vars function into query_vars
add_filter('query_vars', 'add_query_vars');然后,我们需要添加重写规则:函数add_rewrite_rules($aRules) {
function add_rewrite_rules($aRules) {
$aNewRules = array('dealer-profile/([^/]+)/?$' => 'index.php?pagename=dealer-profile=$matches[1]');
$aRules = $aNewRules + $aRules;
return $aRules;
}
// hook add_rewrite_rules function into rewrite_rules_array
add_filter('rewrite_rules_array', 'add_rewrite_rules');获取变量:
if(isset($wp_query->query_vars['dealer-profile'])) {
$sMsdsCat = urldecode($wp_query->query_vars['dealer-profile']);
}这应该能起作用,下面是一些“高级规则”的额外链接:http://www.rlmseo.com/blog/passing-get-query-string-parameters-in-wordpress-url/ http://www.prodeveloper.org/create-your-own-rewrite-rules-in-wordpress.html
编辑:让我们尝试第二篇文章中的步骤:首先,让我们创建标记并将其添加到重写规则中(这对于alpha-数字值应该适用:
function createRewriteRules() {
global $wp_rewrite;
// add rewrite tokens
$dealertag = '%dealertag%';
$wp_rewrite->add_rewrite_tag($dealertag, '(.+?)', 'dealer-profile=');
$keywords_structure = $wp_rewrite->root . "dealer-profile/$dealertag/";
$keywords_rewrite = $wp_rewrite->generate_rewrite_rules($keywords_structure);
$wp_rewrite->rules = $keywords_rewrite + $wp_rewrite->rules;
return $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'createRewriteRules');然后钩子生成如下规则:
function add_rewrite_rules( $wp_rewrite )
{
add_rewrite_rule('^dealer-profile/([^/]*)/?','index.php?page_id=12&dealer-profile=$matches[1]','top');
}
add_action('generate_rewrite_rules', 'add_rewrite_rules');将变量添加到查询vars:
function query_vars($public_query_vars) {
$public_query_vars[] = "dealer-profile";
return $public_query_vars;
add_filter('query_vars', 'query_vars');奖励:要调试规则,可以使用此函数:
function dev4press_debug_rewrite_rules() {
global $wp_rewrite;
echo '<div>';
if (!empty($wp_rewrite->rules)) {
echo '<h5>Rewrite Rules</h5>';
echo '<table><thead><tr>';
echo '<td>Rule</td><td>Rewrite</td>';
echo '</tr></thead><tbody>';
foreach ($wp_rewrite->rules as $name => $value) {
echo '<tr><td>'.$name.'</td><td>'.$value.'</td></tr>';
}
echo '</tbody></table>';
} else {
echo 'No rules defined.';
}
echo '</div>';
}它来自https://docs.dev4press.com/tutorial/wordpress/debug-wordpress-rewrite-rules-matching/,它应该以表格的格式向您展示所有规则,只需将其包含在任何模板中,并检查上面的函数是否正确地添加了重写规则(如果没有正确的话),它应该会为您提供一些关于哪些未起作用的额外信息。
你也可以使用著名的开发人员插件来检查你的规则,你会得到这个插件的额外信息!
https://stackoverflow.com/questions/27242550
复制相似问题