首先,不要使用query_posts
. 抄本:
query\\u posts()是更改WordPress用于显示帖子的主查询的最简单但不是首选或最有效的方法。它通过将主查询放在一边,并用新查询替换它来实现这一点。要在调用query\\u posts后进行清理,请调用wp\\u reset\\u query(),原始主查询将被还原。
强烈建议您改用pre\\u get\\u posts操作,并通过检查is\\u main\\u query来更改主查询
其次,您的查询是不同的。
比较两者。使用这些参数生成的查询--\'cat=1&showposts=-1\'
-- 是:
SELECT
wp_posts.*
FROM wp_posts
INNER JOIN wp_term_relationships ON (
wp_posts.ID = wp_term_relationships.object_id
)
WHERE 1=1
AND (
wp_term_relationships.term_taxonomy_id IN (1)
)
AND wp_posts.post_type = \'post\'
AND (wp_posts.post_status = \'publish\')
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC
手写查询有两个
LEFT JOIN
不是一个
INNER JOIN
. 您的查询还有一个名为
$childcond
-- 不知道那是什么。它还具有特定
term_taxonomy.taxonomy
而且没有
GROUP BY
.