WordPress不记得我的自定义重写规则

时间:2015-01-07 作者:rassoh

我有以下代码:

function b09_custom_rewrite_rule() {
    add_rewrite_rule(
      \'utils/([^/]+)/?\',
      \'index.php?utils=$matches[1]\',
      \'top\'
    );
    flush_rewrite_rules();
}
add_action(\'init\', \'b09_custom_rewrite_rule\', 10, 0);

function b09_query_vars( $query_vars ) {
    array_push( $query_vars, \'utils\' );
    return $query_vars;
}
add_filter( \'query_vars\', \'b09_query_vars\' );

function b09_template_redirect(){
    global $wp_query;

    $utils_page = get_query_var("utils");

    var_dump( $utils_page );

    if( $utils_page ):
        // custom function
        exit();
    endif;
}
add_filter( \'template_redirect\', \'b09_template_redirect\' );
一切正常,但只要我拆下电线flush_rewrite_rules(), WordPress将在下次重新加载时禁用该规则。

有什么想法吗?

1 个回复
SO网友:rassoh

感谢@cybmeta的提示。我搜索了我的主题,找到了另一个flush_rewrite_rules(true); 在初始化挂钩上。我删除了这个,现在这条规则被记住了。

看起来,调用函数两次是在破坏某些东西。对我来说没有什么意义,但它现在起作用了,所以不管怎样:)

结束

相关推荐