2013-02-27 47 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表的更复杂的代码。

所以有一些选择。请记住,简单是好的。