如何将重定向规则添加到WordPress?

时间:2011-04-07 作者:Wok

现在,我能够根据我的主题选项动态生成js和css

为此,我设置了一个查询var,如果存在,它将重定向到一个php文件,然后该文件将自身加载为一个javascript文件。然后它获取jqpostID,并获取生成js所需的任何选项。

我基本上必须包含一个引用html位置部分的脚本链接http://mywordpress.com/?dynamic=js&jqpostid=130

我想让它更具可读性,并且不太明显它是动态生成的。也许像这样。。。

http://mywordpress.com/dynamic/js/123

我想这样会更好。。。http://mywordpress.com/dynamic/js/123.js

我想我必须以某种方式连接到wordpress的重写引擎。并添加新规则。任何帮助或对其他文章的引用都会很好,或者一些示例代码也会很棒。

1 个回复
最合适的回答,由SO网友:Drew Gourley 整理而成

添加这些函数应该可以做到这一点。

首先,将此行添加到函数。php,而您正在处理此问题:

add_action(\'init\', \'flush_rewrite_rules\');
该代码将要做的是不断刷新重写规则,这使得您在处理重写规则时更容易进行测试,而不必在对重写规则进行每一次小的更改后就进入并手动重置它们。确保在完成并确信一切正常后将其删除。

接下来,此函数将创建所需的重写规则。

function custom_add_rewrite_rules( $wp_rewrite ) {
    $new_rules = array( 
        \'dynamic/js/(\\d+).js\' => \'index.php?dynamic=js&jqpostid=\' . $wp_rewrite->preg_index(1),
        \'dynamic/css/(\\d+).css\' => \'index.php?dynamic=css&csspostid=\' . $wp_rewrite->preg_index(1)
    );
    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action(\'generate_rewrite_rules\', \'custom_add_rewrite_rules\');
我尝试了一下CSS规则的外观,您可能需要根据自己的需要对其进行调整,我只是觉得它的格式与您为javascript描述的格式类似。当它试图将URL重写为文件扩展名时,这些可能会导致一些奇怪的行为,并且可能根本不起作用。在这种情况下,只需移除。js和。css从关联数组条目的第一部分结束。

function custom_add_rewrite_rules( $wp_rewrite ) {
    $new_rules = array( 
        \'dynamic/js/(\\d+)\' => \'index.php?dynamic=js&jqpostid=\' . $wp_rewrite->preg_index(1),
        \'dynamic/css/(\\d+)\' => \'index.php?dynamic=css&csspostid=\' . $wp_rewrite->preg_index(1)
    );
    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action(\'generate_rewrite_rules\', \'custom_add_rewrite_rules\');
基本上,所有这些都是设置要查找的URL和它在其位置上运行的字符串。数组项的第一部分有一个仅查找数字的正则表达式,即括号中的部分。(如果需要,可以进行调整以查找特定数量的数字)匹配项作为字符串中返回的内容传递到数组项的第二部分。

我希望这对您有所帮助,如果您有任何问题,请随时与我联系。

结束

相关推荐

How do you debug plugins?

我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?