問題描述

我有多個階段的過程,將複雜的 faceting 整合到 WP 查詢中。問題是 – 越深入,我越來越模糊,我應該如何工作,我可以使用指南,而不是創造性 (並挖掘自己一個洞) 。

一般階段我有 (pseudo-code,但接近真實):

  1. 從 URL 檢索值 (簡單的像 person=1)

  2. 過程值並附加自定義查詢指令 ($relationship_query[] = array('relationship' => 'person_to_cat', 'object' => 1 );)

  3. 檢索最終自定義查詢指令並生成相應的 SQL 指令

到目前為止,我已經有很多這樣的關係 (關係,分類法,日期),並且變得脆弱 (程式碼的一個角落沒有將程式碼的其他角落期望找到並且一切都分開) 。

如此大的問題是 – 透過 URL 傳遞,接收,儲存和處理自定義資料到 WP 的正確協議是什麼?

較小工具:

  • 如何確保我不會與 WP 內部相沖突?

  • 在哪裡和如何儲存中間資料?

    • queryquery_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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。