2015-03-02 37 views
1

感謝您花時間看看這個問題,希望您能幫到您!如何獲得一篇文章涉及到的所有分類法 - Wordpress

我正在尋找運行wordpress查詢,它檢索與另一個相關的所有分類法。

例如;說我有我的Wordpress網站中的產品類別/分類和子產品的分類/分類。當我登陸產品類別/分類頁面時,我希望看到所有相關子類別/分類法的列表。

我希望這是有道理的,因爲經過數小時的搜索後,我能找到的所有問題都是如何獲得與分類相關的所有帖子 - 而不是相反!

非常感謝提前!

帕特里克

+0

是子產品類別產品類別的兒童? – bobdye 2015-03-02 17:28:33

+1

我通常理解你想要完成的事情。我試圖找出的是,「子類型」只是術語,還是它表示了一種關係。這聽起來像你的例子中的子類型實際上只是選擇產品的另一個類別/分類,而不是任何其他標準的「孩子」。 – bobdye 2015-03-03 16:29:41

回答

0

如果我理解的問題,你想獲得適用於特定頁面,例如上列出的產品分類和術語一個類別或分類頁面。

假設您有一個產品ID $ product_id的數組,例如當前正在顯示的產品的ID。你應該能夠得到適用於這些產品的分類和條款如下:

global $wpdb; 

$ids = implode(',', $product_id); 
$query = "SELECT x.taxonomy, t.name FROM wp_term_taxonomy AS x 
      JOIN wp_term AS t on t.term_id = x.term_id 
      JOIN wp_terms_relationships AS r on r.term_taxonomy_id = x.term_taxonomy_id 
      WHERE r.object_id IN ($ids) 
      GROUP BY x.taxonomy, t.name"; 
$taxonomies = $wpdb->get_results($query); 

在上面:

SELECT x.taxonomy, t.name FROM wp_term_taxonomy AS x 

是分類法(地名)的基表和的term_ids他們條款。

JOIN wp_terms AS t on t.term_id = x.term_id 

匹配來自wp_term_taxonomy的每個term_id及其術語名稱。

JOIN wp_term_relationships AS r on r.term_taxonomy_id = x.term_taxonomy_id 

然後將其與wp_term_relationships中的條目進行匹配,該條目顯示哪些產品(自定義帖子ID)使用這些條款。

WHERE r.object_id IN ($ids) 

將列表限制爲僅與列表中的產品相關的條款。

因爲在這個例子中,我們要求x.taxonomy和t.name,

GROUP BY x.taxonomy, t.name 

可以確保你沒有重複。如果您需要更改SELECT,您可以獲得其他字段。因此,一旦運行get_results(),您應該有一個對象數組,每個對象都有一個分類名稱和術語名稱。總體方案是:

+-----------+-------+ 
| taxonomy1 | term1 | 
+-----------+-------+ 
| taxonomy1 | term2 | 
+-----------+-------+ 
| taxonomy1 | term1 | 
+-----------+-------+ 
| taxonomy2 | term1 | 
+-----------+-------+ 
| taxonomy3 | term1 | 
+-----------+-------+ 
... 

您現在可以使用它來創建一個方法,供遊人選擇進一步的子集,例如通過創建每個分類的術語下拉菜單。

+0

嗨bobdye,感謝您花時間提交上述答案。不幸的是,我只是有機會嘗試代碼,所以遲遲不能回覆你!通過運行您提供的代碼,我得到的所有數據都是空白數組。你能否進一步調查爲什麼會這樣?提前感謝您的幫助! :-) – 2015-03-09 11:43:32

+0

我的歉意bobdye,直接在phpMyAdmin中運行查詢,它通知我在查詢中有錯誤 - 'wp_term'應該是'wp_terms',雖然容易犯錯誤,但它現在似乎正在工作! – 2015-03-09 11:50:54

相關問題