2013-02-27 48 views
0

我正在爲一個基於WordPress的客戶端創建一個網站。我的客戶想要在主頁中顯示分類在類別下的文章。如何訂購我的MySQL記錄? | MySQL - WordPress

例如,假設我們有類別「Cat A」,「Cat B」和「Cat C」。我的客戶希望在主頁中以「貓B」,「貓A」和「汽車C」的方式顯示類別順序,然後在主頁中的每個類別中列出6個帖子。

比方說,這是我想要顯示的結果是:

Cat B 
--------------------------- 
Cat B - Article #1 
Cat B - Article #2 
Cat B - Article #3 
Cat B - Article #4 
Cat B - Article #5 
Cat B - Article #6 

Cat A 
--------------------------- 
Cat A - Article #1 
Cat A - Article #2 
Cat A - Article #3 
Cat A - Article #4 
Cat A - Article #5 
Cat A - Article #6 

Cat C 
--------------------------- 
Cat C - Article #1 
Cat C - Article #2 
Cat C - Article #3 
Cat C - Article #4 
Cat C - Article #5 
Cat C - Article #6 

我所尋找的,是一種將責令其顯示在主頁上的類別。

現在我已經在我的WordPress儀表板中創建了一個頁面,從那裏我可以按我喜歡的方式對我的類別進行排序,然後我可以將訂單選項保存在wp選項頁面中。問題是,如何根據後端的訂單來排序前端中的類別。

假設的分類有如下這些:

Categories 
----------------- 
Name | ID 
----------------- 
Cat A | 100 
Cat B | 101 
Cat C | 102 

在我wp_options表我可以存儲以下數組:

array(
    1 => 101, 
    2 => 100, 
    3 => 102 
) 

數組鍵可以是序和值類別ID。

現在,通過了解什麼是序列,我怎樣才能用單個MySQL查詢來獲得結果呢?

+1

'我在找什麼,是一種方法來排序在主頁上顯示的類別.'使用case語句來生成一個列,然後用它來排序'CASE名稱當'貓A'然後2當'貓B'然後1'貓C'然後3結束爲SortByme' – xQbert 2013-02-27 18:24:27

+0

@xQbert:Ops! :) 你是對的。但假設,我正在使用默認的WordPress表,使用wp_posts和wp_terms。 – 2013-02-27 18:26:26

回答

2

分類標準(例如類別或標籤)中的每個項目(例如類別或標籤)都有一個名稱,一個slug(可以進入URL的短名稱)和一個描述。

如果您願意致力於描述訂購類別項目,您可以在該字段中爲Cat B設置1,爲Cat A設置2,爲Cat C設置3。您可以從儀表板執行此操作。

然後,當您檢索條款時,可以使用此查詢以適當的順序獲取類別ID。

SELECT t.term_id, t.name, t.slug 
    FROM wp_terms t 
    JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id 
WHERE tt.taxonomy = 'category' 
ORDER BY tt.description, t.term_id 

但是,這會佔用你的描述字段,或至少把一些內部的垃圾到所使用的一些(但不是很多)主題用於顯示目的的字段。

您也可以使用slug作爲此次訂購用途。例如,您可以指定'1catb'(與'2cata'和'3catc'爲您的其他slu)),而不是'catb'。同樣,這會對您的顯示產生一些影響,這次是以網站中某些網址的形式顯示。以下是你可能會在這種情況下使用查詢/

SELECT t.term_id, t.name, t.slug 
    FROM wp_terms t 
    JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id 
WHERE tt.taxonomy = 'category' 
ORDER BY t.slug, t.term_id 

打開一個wp_options排進一個可連接的表太毛茸茸的,不值得在我看來麻煩,尤其是對於一個經常顯示的網站前門頁。但是你可以爲此使用多個wp_options行。給你的wp_options名稱和值如下:

option_name  option_value 
    mycat_order_001  2 
    mycat_order_002  1 
    mycat_order_003  3 

然後使用這樣的查詢按順序獲取您的類別名稱。

SELECT t.term_id, t.name, t.slug 
    FROM wp_terms t 
    JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id 
    JOIN wp_options o ON ( o.option_name LIKE 'mycat_order_%' 
         AND o.option_value = t.term_id) 
WHERE tt.taxonomy = 'category' 
ORDER BY o.option_name, t.term_id 

這會按照正確的順序提取您的條款。這裏的代價是當用戶指定所需的順序時更新wp_options表的更復雜的代碼。

所以有一些選擇。請記住,簡單是好的。