問題描述
我有多個階段的過程,將複雜的 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。