Wordpress $ wp_rewrite

时间:2014-08-04 14:37:27

标签: php wordpress routing wordpress-plugin

我在Wordpress中对$ wp_rewrite对象提出了一个小问题......

我正在构建一个需要一些路由的插件,但不包含在Wordpress中。因此,我尝试使用non_wp_rules对象中的$wp_rewrite操作。

这是我的代码:

add_filter('generate_rewrite_rules', 'add_rewrites');
add_filter('wp_loaded', 'flush_rules');

function flush_rules()
{
  $rules = get_option('rewrite_rules');
  global $wp_rewrite;
  $wp_rewrite->flush_rules();
}

function add_rewrites()
{
  global $wp_rewrite;
  $rules = array(
    'documentation/$' => 'fileToCall.php'
  );

  $wp_rewrite->non_wp_rules += $rules;
}

但我不明白......我的路线添加了任何问题(仅var_dump $wp_rewrite对我说一切都没问题),但似乎文件i& #39;我试图调用(fileToCall.php)只包含一个回声(所以没有错误)在Firefox开发控制台中返回404错误。

有一天会有人遇到这个问题吗?我做错了吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

wp_rewrite test如果重定向地址是locale或external。在你的情况下它是外部的,所以你必须使用不同的功能。只需用这个替换你的第二个钩子:

add_action('init', 'add_rewrites');

function add_rewrites() 
{
  global $wp_rewrite;

  $wp_rewrite->add_external_rule('documentation/$', 'fileToCall.php');

}