假设我在wordpress中有一个页面“foo”,http:/www.blah.com/foo会提起它。
假设此页面的内容中包含触发器,例如<! - foo - !>我的插件通过add_filter('the_content',..)过滤器跟踪它。因此,所有对http:www.blah.com/foo和http://www.blah.com/foo?var=bar的调用都会被插件接收并处理。
现在有一种方法,插件可以让wordpress知道它想要处理http://www.blah.com/foo/bar http://www.blah.com/foo/bar/morefoo等类型的所有网址。 “没有”必须为每个创建页面/子页面,因为这些网址会动态创建吗?
此外,除了在页面中的the_content上使用add_content过滤器之外,还可以从理想情况下键入url的插件中获取控件,以便插件处理对http://www.blah.com/foo的所有调用。
答案 0 :(得分:2)
是的,您可以获取URL引用(也称为查询)并解析它们,而无需创建子页面。
事件序列在Query Overview page中描述。您希望特别关注parse_request
行动。
答案 1 :(得分:2)
回答我自己的问题:
上面答案中的指针非常有用,让我走上了正确的轨道,但是我不断遇到障碍,每当调用相关网址时,它都会调用index.php。
然后我遇到了http://mikeschinkel.com/blog/restful-web-services-in-wordpress-plugin/ 在那里他进入解释并提供一个需要template_redirect操作的答案,以确保控制在你想要的地方。
答案 2 :(得分:1)
我做的事与您使用自定义mod_rewrite规则描述的内容非常相似。按照你的例子,我有一个使用模板foo.php的页面Foo。 foo.php模板接受一个查询变量,比如说“path”,它定义了URL的其余部分。在我的.htaccess文件中,我有以下规则(小心把它放在外面 WordPress'自动生成的规则!):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^foo/(.+) /foo/?path=$1 [L]
</IfModule>
您的插件可能还需要停用“redirect_canonical”插件,这可能意外地挖走您的网址。
remove_action('template_redirect', 'redirect_canonical');
我认为也可以使用template_redirect hook和WP_Rewrite类做类似的事情,但我自己没有尝试过。