[wp-hackers] 2.1: Alternative to query_posts?

Joefish joefish.hackers at feastofcrumbs.com
Wed Jan 10 21:55:51 GMT 2007


On 1/10/07, Peter Westwood <peter.westwood at ftwr.co.uk> wrote:
> Joefish wrote:
> > On 1/10/07, Ryan Boren <ryan at boren.nu> wrote:
> >> On 1/10/07, Joefish <joefish.hackers at feastofcrumbs.com> wrote:
> >> >
> >> >
> >> > This was working great for me with 2.0.x, but with 2.1 beta 1 and beta
> >> > 2, it only works when category 48 is not empty, i.e., when I have a
> >> > sticky post. In 2.0.x, if the category is empty, the if (have_posts())
> >> > bit would return false and the first loop would have no output. But
> >> > with 2.1, the query returns an SQL error and dies.
> >> >
> >> >
> >> > Is this a bug in 2.1, or should I be setting up the loop in some other
> >> > way?
> >>
> >>
> >>
> >> Sounds like a bug.  What is the SQL error you got?
> >>
> >
> > Thanks for your response, Ryan. Here's the message:
> >
> > WordPress database error: [You have an error in your SQL syntax; check
> > the manual that corresponds to your MySQL server version for the right
> > syntax to use near '48 AND (post_type = 'post' AND (post_status =
> > 'publish' OR post_status = 'privat' at line 1]
> > SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts LEFT JOIN
> > wp_post2cat ON (wp_posts.ID = wp_post2cat.post_id) WHERE 1=1 48 AND
> > (post_type = 'post' AND (post_status = 'publish' OR post_status =
> > 'private')) GROUP BY wp_posts.ID ORDER BY post_date DESC LIMIT 0, 10
> >
> >
> > That's a copy and paste, so the post_status = 'privat' near the
> > beginning is not my typo... just noticed that.
> >
>
> Looking through the code I can't see an obvious bug in query.php that
> would cause this.
>
> You should have something like the following in the generated query
> rather than what you do have:
>
> SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts LEFT JOIN
> wp_post2cat ON (wp_posts.ID = wp_post2cat.post_id) WHERE 1=1
>   AND category_id IN (48) AND (post_type = 'post' AND (post_status =
> 'publish' OR post_status = 'private')) GROUP BY wp_posts.ID ORDER BY
> post_date DESC LIMIT 0, 10
>
> Do you have any plugins installed that filter the WHERE clause?
>
> westi
> --

Thanks, westi. No plugins are enabled at all. (That's first on my list
of "things to check before making an ass of myself on the hackers
list." ;) )


More information about the wp-hackers mailing list