代码之家  ›  专栏  ›  技术社区  ›  janosrusiczki

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

  •  0
  • janosrusiczki  · 技术社区  · 15 年前

    我正在为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文件才能访问数据库和其他助手类和函数。这就引出了第二个问题:url是否可以调用插件的函数来呈现订单页面?

    2 回复  |  直到 15 年前
        1
  •  3
  •   Community CDub    8 年前

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

        2
  •  2
  •   banesto    14 年前

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