为我的WordPress插件创建自定义重写规则

时间:2009-10-13 09:33:44

标签: wordpress plugins rewrite mod-rewrite

我正在为WordPress编写一个插件,实际上它将是一个单独的订购模块(它将被放置在我正在开发的网站上的IFRAME以及其他网站上),但其管理员与WordPress绑定。我没有太多麻烦就编写了管理部分,但是我在前端遇到了麻烦。

首先,我希望我的脚本可以通过www.mysite.com/order/和as per the WordPress codex访问,我发现我需要将以下代码放入我的主插件文件中:

add_action('init', 'ta_flush_rewrite_rules');

function ta_flush_rewrite_rules() 
{
  global $wp_rewrite;
  $wp_rewrite->flush_rules();
}

add_action('generate_rewrite_rules', 'ta_add_rewrite_rules');

function ta_add_rewrite_rules( $wp_rewrite ) {
  $new_rules = array("order/(.+)" => "/wp-content/plugins/my-plugin/order.php");
  $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}

但它不起作用,我真的不想弄脏.htaccess黑客。

此外,即使这样可行,order.php文件也是我插件的单独文件。这意味着我必须包含一些WordPress文件才能访问数据库和其他帮助程序类和函数。这给我们带来了问题2:URL是否有一种方法可以调用我的插件函数来呈现订单页面?

2 个答案:

答案 0 :(得分:3)

结帐wp_rewrite in a WordPress Plugin您可能会找到所需的信息。

答案 1 :(得分:2)

不要刷新INIT上的规则,因为它会在每个页面上进行大量的mysql查询,并使用自定义重写规则(例如创建自定义帖子类型的规则)干扰其他插件