2009-10-13 120 views
0

我正在为WordPress编写一个插件,实际上它将是一个单独的排序模块(它将被放置在我正在开发的站点以及其他站点上的IFRAME中)但与其管理员绑定到WordPress。我写的行政部分没有太多的麻烦,但是我在前端遇到了麻烦。为我的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文件才能访问数据库和其他帮助程序类和函数。这让我们对第二个问题产生怀疑:URL是否可以调用我的插件的函数来呈现订单页面?

+0

你找到了一个解决方案与其他插件干扰? – Ash 2011-07-15 22:07:42

+0

尽管我记得,我又走了一条路。 – janosrusiczki 2011-07-18 13:08:47

回答

2

做INIT不刷新规则,因为它会让每个页面上大量的MySQL查询和使用自定义重写规则(如那些创建自定义文章类型)