問題描述
我有多個階段的過程,將複雜的 faceting 整合到 WP 查詢中。問題是 – 越深入,我越來越模糊,我應該如何工作,我可以使用指南,而不是創造性 (並挖掘自己一個洞) 。
一般階段我有 (pseudo-code,但接近真實):
-
從 URL 檢索值 (簡單的像
person=1
) -
過程值並附加自定義查詢指令 (
$relationship_query[] = array('relationship' => 'person_to_cat', 'object' => 1 );
) -
檢索最終自定義查詢指令並生成相應的 SQL 指令
到目前為止,我已經有很多這樣的關係 (關係,分類法,日期),並且變得脆弱 (程式碼的一個角落沒有將程式碼的其他角落期望找到並且一切都分開) 。
如此大的問題是 – 透過 URL 傳遞,接收,儲存和處理自定義資料到 WP 的正確協議是什麼?
較小工具:
-
如何確保我不會與 WP 內部相沖突?
-
在哪裡和如何儲存中間資料?
-
query
和query_vars
性質的區別?他們似乎在程式碼中使用的幾乎相同,但它們傾向於持有不同的值和方法,有利於query_vars
。
-
最佳解決方案
我想你正在尋找的 WP 功能是 add_rewrite_tag 。它旨在向您的 URL 新增自定義 GET 引數,並將其自動新增到 query_vars
中。
例如,您可以將以下內容新增到 init 鉤子中:
add_rewrite_tag('%person%','([^&]+)');
對於像 http://example.com?person=joe 這樣的網址,全球 $wp_query
將有
$wp_query->query_vars['person'] = 'joe'
您也可以使 add a rewrite rule 使 URL 更漂亮,例如 http://example.com/person/joe
add_rewrite_rule('^person/([^/]*)/?','index.php?person=$matches[1]','top');
有關更多資訊和示例,請參閱 Rewrite API 。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。