2009-01-31 55 views
2

假设我在wordpress中有一个页面“foo”,这样http:/www.blah.com/foo将它带出来。从插件内的子页面的wordpress url分辨率

说这个页面在其内容中有一个触发器,如<! - foo - ! >这是由我的插件通过add_filter('the_content',..)过滤器进行跟踪。所以,所有对http:www.blah.com/foo和http://www.blah.com/foo?var=bar的调用都会被插件拾取并处理。

现在有一种方法,通过该插件可以让WordPress的知道,它要处理该类型的所有URL http://www.blah.com/foo/barhttp://www.blah.com/foo/bar/morefoo等。 “无”不必创建页面/子页面对于这些,因为这些网址会动态创建?

另外,除了在一个页面内的the_content上使用add_content过滤器,人们可以从理想情况下的url控件的插件中抓取控件,因此所有对http://www.blah.com/foo的调用都由插件处理。

回答

2

回答我的问题:

的答案指针上面是有用的,让我去正确的轨道上,但我不停地打在了障碍,只要有问题的URL被调用它不停地打电话指数。 PHP。

然后,我碰到http://mikeschinkel.com/blog/restful-web-services-in-wordpress-plugin/ 他进入一个解释,并提供了一个答案,需要template_redirect行动,以确保控制在你想要的地方。

2

是的,你可以抓取URL引用(即查询)并解析它们,而无需创建子页面。

事件的顺序在Query Overview page中描述。您要特别关注parse_request操作。

1

我做了一些非常类似于您使用自定义mod_rewrite规则描述的内容。按照您的示例,我有一个使用模板foo.php的页面Foo。 foo.php模板接受一个查询变量,比如说“路径”,它定义了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钩和WP_Rewrite类做类似的事情,但我还没有尝试过自己。