无法使重写规则生效

时间:2011-08-06 作者:FLX

基本上,我想用一个参数重写:/edit/测试post到现有页面:/edit?e=测试桩

examples in the Codex 我创建了:

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[\'(edit)/(\\d*)$\'] ) ) {
        global $wp_rewrite;
        $wp_rewrite->flush_rules();
    }
}

// Adding a new rule
function my_insert_rewrite_rules( $rules )
{
    $newrules = array();
    $newrules[\'(edit)/(\\d*)$\'] = \'edit?&e=$matches[2]\';
    return $newrules + $rules;
}

// Adding the id var so that WP recognizes it
function my_insert_query_vars( $vars )
{
    array_push($vars, \'e\');
    return $vars;
}
然而,我根本无法让它工作,我做错了什么?

谢谢

1 个回复
最合适的回答,由SO网友:Milo 整理而成

“现有页面”是指WordPress页面吗?我的重写经验是将所有内容路由到索引。php和任何您需要的额外查询变量,我想尝试将其路由到edit 是你的问题之一,你的意图还不完全清楚。

转到下载Monkeyman Rewrite Analyzer 如果您还没有,它是测试这些东西的一个很好的工具。

我测试了以下规则以验证其是否有效。所有请求发送到/edit/* 加载名为“edit”的页面,get_query_var(\'e\') 返回的正确值e 在我的模板中。

注意我没有刷新这里的规则,我通常只是访问Settings > Permalinks 页面并单击“保存”以在每次更改时刷新。

<?php

add_action( \'init\', \'my_rewrites_init\' );
function my_rewrites_init(){
    add_rewrite_rule(
        \'edit/([^/]+)/?\',
        \'index.php?pagename=edit&e=$matches[1]\',
        \'top\' );
}

add_filter( \'query_vars\', \'my_query_vars\' );
function my_query_vars( $query_vars ){
    $query_vars[] = \'e\';
    return $query_vars;
}

结束

相关推荐

curl problem or permalinks

我刚刚配置了我的VPS,我使用的是Centos,一切都很好,但如果我将永久链接设置为自定义结构,然后接受主页,没有帖子出现,它会显示404页,我想这是因为我没有启用curl,但我不知道我的php在哪里。我的centos中的ini文件?好的,我的卷曲被启用了,我检查过了phpinfo(); 这里是URLhttp://74.117.158.182/info.php但如果我在我的wordpress中设置了永久链接,那么接受主页,所有都会给我404页,你可以在这个URL上查看http://mbas.co.in如果