我正在设计一个博客,其类别层次结构如下(只是一个示例)
PARENT
|
|------------------------------------------------|
Food Fashion
| |
|---------------------| |---------------------|
European Asian European Asian
| | | |
|---------| |-----------| |--------| |--------|
Italian French Chinese Japanese Italian French Chinese Japanese
在主页上,我的客户希望显示所有4级儿童的最后三篇帖子,因此:
《家长>食品>欧洲>意大利》的最后三篇文章《家长>食品>欧洲>法国》的最后三篇文章《家长>食品>亚洲>中国》等。《家长>食品>亚洲>中国》的最后三篇文章。《家长>食品>欧洲>意大利》的最后三篇文章《家长>食品>亚洲>中国》等。《家长>食品>亚洲>中国》的最后三篇文章。《家长>食品>亚洲>中国》等。《家长>食品>欧洲>意大利>意大利》的最后三篇文章。《家长>食品>亚洲>中国》的最后三篇文章《家长>亚洲>中国》等。《家长>食品>等。《家长>亚洲>我的第一次尝试是这样的:
$allPosts = new WP_Query(\'cat=20, 21, 24, 22, 23, 25, 75, 84, 79, 85, 83, 96, 95, 97, 65, 68, 107, 48, 49&showposts=100&order=ASC\');
根据一个调试插件,页面上调用了18个查询,但我意识到这样的调用对我想要的内容没有任何意义,因为如果一个类别有2000篇帖子,那么此行将检索的100篇帖子都将来自同一类别。
因此,我将通话进行了拆分,如下所示:
$italianFood = new WP_Query(\'cat=20&showposts=3&order=DESC\');
$italianFashion = new WP_Query(\'cat=21&showposts=3&order=DESC\');
$frenchFood = new WP_Query(\'cat=24&showposts=3&order=DESC\');
$frenchFashion = new WP_Query(\'cat=22&showposts=3&order=DESC\');
这是可行的,但在调用所有类别后,对数据库的查询调用次数增加到260!
我会用插件缓存页面,但我真的需要调用260多个DB才能实现我想要的吗?
最合适的回答,由SO网友:NightHawk 整理而成
您也可以编写自己的查询。这样,每个类别只有一个查询:
global $wpdb;
$query = \'
SELECT wpp1.*
FROM \' . $wpdb->posts . \' AS wpp1
LEFT JOIN \' . $wpdb->term_relationships . \' AS wptr1 ON wptr1.object_id = wpp1.ID
WHERE post_type = %s
AND post_status = %s
AND wptr1.term_taxonomy_id = %d
ORDER BY wpp1.post_date DESC
LIMIT %d
\';
$query = $wpdb->prepare(
$query,
// Args: post type, post status, term taxonomy ID, number of posts
\'post\', \'publish\', 80, 3
);
$posts = $wpdb->get_results(
$query,
ARRAY_A
);