wordpress query_posts查看元信息

时间:2011-04-19 07:50:40

标签: mysql wordpress

我希望使用query_posts运行查询,让我查看meta_fields。 我之前已经完成了这个并且达到了我想要的结果但现在由于某种原因在等式中添加额外的字段不会返回任何内容。

以下查询会返回attachments等于lottery_year的所有$y,显然$y可以是2011或更早。< /强>

现在我的下一步我想引入另一个名为meta_field的{​​{1}},并为其提供一个值。

问题,我该怎么做?

photo_technique

1 个答案:

答案 0 :(得分:1)

如果您要展示包含lottery_year = $yphoto_technique = $x的帖子,您可以使用:

$querystr = "
    SELECT $wpdb->posts.*
    FROM $wpdb->posts
    LEFT JOIN $wpdb->postmeta ON ($wpdb->posts.ID = $wpdb->postmeta.post_id)
    WHERE ($wpdb->postmeta.meta_key = 'lottery_year' AND $wpdb->postmeta.meta_value = $y) OR ($wpdb->postmeta.meta_key = 'photo_technique' AND $wpdb->postmeta.meta_value = $x)
    AND $wpdb->posts.post_type = 'attachment'
    ORDER BY $wpdb->postmeta.meta_value ASC
    LIMIT 100
";

修改

如果您要显示同时包含lottery_year = $y AND photo_technique = $x的结果,则可以使用以下查询:

$querystr = "
    SELECT
        $wpdb->posts.*
    FROM 
        $wpdb->posts
    INNER JOIN $wpdb->postmeta ON
        $wpdb->posts.ID = $wpdb->postmeta.post_id 
        AND $wpdb->postmeta.meta_key IN ( 'lottery_year', 'photo_technique' )
        AND $wpdb->postmeta.meta_value IN ( '$y', '$x' )
    WHERE $wpdb->posts.post_type = 'attachment'
    GROUP BY $wpdb->posts.ID
    HAVING COUNT(1) = 2
    ORDER BY $wpdb->postmeta.meta_value ASC
    LIMIT 100
";

修改

在某些情况下,最后一个查询(AND一个)将失败。比如你说的 lottery_year = $y AND photo_technique = $x,但它还会返回$ x和$ y切换为lottery_year = $x AND photo_technique = $y的结果,它真的取决于你是否可以依赖它,就像你有一个被调用的photo_technique一样例如'2001'(女巫也可以通过彩票年票)。请小心使用它或在dba.stackexchange.com或wordpress.stackexchange.com上提出这个问题。