【发布时间】:2017-04-08 01:13:54
【问题描述】:
我目前正在开发一个主题,我想在其中添加两个永久链接。
一种是使用一些自定义参数和值(规则存储在 wp_options 表中)重定向到 index.php,另一种是重定向到我的模板中提供 admin-ajax.php 功能的文件(规则存储在 .htaccess 文件中) .
add_action( 'init', 'custom_rewrite_rules' );
function custom_rewrite_rules() {
add_rewrite_rule(
'^(activate|reset)/([0-9]*)sfa([A-Za-z0-9]*)/?$',
'index.php?sfa_user=$matches[2]&sfa_password_reset=$matches[3]',
'top'
);
add_rewrite_rule(
'ajax-api/?$',
str_replace( ABSPATH, '', dirname( dirname( __FILE__ ) ) . '/api/ajax-api.php' )
);
flush_rewrite_rules( true );
} );
由于我处于开发模式,我也通过在“init”钩子上执行来刷新规则
(我知道这是不好的做法,但这似乎是我检查是否.htaccess 文件有任何变化。)。
尽管
flush_rewrite_rules() 默认情况下会重置硬刷新,但我将参数设置为 true 只是为了确保。我的第一个重写规则执行得非常好,而 .htaccess 文件在我访问后端的 options-permalink.php 页面之前不会重新生成(其中也调用了 flush-function 并且可以工作?!)。
我已经尝试在参考中提出的另一个挂钩上执行 flush_rewrite_rules()。
提前感谢您的帮助!
【问题讨论】:
-
你永远不应该将
flush_rewrite_rules挂在init上。如果是硬同花,那就更糟了…… -
哇哦——谢谢@yivi 的无谓评论。正如我已经指出的那样,我在 init 上挂钩了该函数以进行测试。正如我也指出的那样,我知道您应该将其与其他操作挂钩……但是这对冲洗过程本身应该没有影响,对吧?如果您真的想提供帮助,请帮自己一个忙,阅读整篇文章。
标签: wordpress .htaccess redirect mod-rewrite wordpress-theming