2009-01-31 56 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類做類似的事情,但我還沒有嘗試過自己。