Wordpress自定义重写规则不起作用

时间:2014-12-03 10:30:52

标签: wordpress mod-rewrite url-rewriting

我想添加一个简单的自定义Wordpress重写规则,但不知怎的,我没有得到这个工作。

此网址

http://www.gewerbesteuer.de/steuer/muenchen 应该叫这个

http://www.gewerbesteuer.de/index.php?pagename=gewerbesteuerhebesaetze&loc=muenchen

所以我想打一个页面,显示某个城市的税率,该城市应该作为最后一部分的网址。

这是我的代码:

function custom_rewrite_tag() {
    global $wp_rewrite;
    add_rewrite_tag('%loc%', '([^&]+)'); 
    add_rewrite_rule('steuer/([^/]+)', 
        'index.php?pagename=gewerbesteuerhebesaetze&loc=$matches[1]', 'top');    
    flush_rewrite_rules();    
}

function query_vars($query_vars ) {
    $query_vars[] = 'loc';
    return $query_vars;
}

add_action('init', 'custom_rewrite_tag');
add_filter( 'query_vars', 'query_vars' );

重写规则正在运行,但未获取参数(在本例中为loc)。即使我用某个城市(例如

)对重写规则进行硬编码
add_rewrite_rule('steuer/([^/]+)', 
    'index.php?pagename=gewerbesteuerhebesaetze&loc=muenchen', 'top');

它仍然不会获取loc参数的值。我还注意到$ matches数组是空的,不包含任何值。 我查看了wordpress上的所有文档和这里的问题,但找不到问题。有什么想法吗?

由于

哈德

1 个答案:

答案 0 :(得分:0)

你可以尝试添加它,看看这有什么不同吗?

<强>被修改

我更改了#34; pagename&#34;重写规则中的参数。到&#34; page_id&#34; - 我假设2207正如你在网站页面上看到的身体类所说的那样。

我还从flush_rewrite_rules()功能中删除了custom_rewrite_rules_tags,您现在可以尝试这一点,然后转到选项&gt;永久链接并重新保存。

function custom_rewrite_rules_tags() {
    global $wp_rewrite;  
    add_rewrite_tag('%loc%', '([^&]+)'); 
    add_rewrite_rule(
        'steuer/([^/]+)', 
        'index.php?page_id=2207&loc=$matches[1]', 
        'top'
    );        
}
add_action('init', 'custom_rewrite_rules_tags');

function custom_query_vars($query_vars ) {
    $query_vars[] = 'loc';
    return $query_vars;
}
add_filter( 'query_vars', 'custom_query_vars' );