如何在数据库中查询具有一定分类条件的帖子

时间:2012-06-18 作者:Zach Lysobey

我想编写一个select查询,只返回与分类术语相关联的帖子的数据food-and-beverage

SELECT wp_postmeta . * , wp_posts.post_name
FROM wp_posts, wp_postmeta, wp_terms, wp_term_relationships
WHERE wp_posts.post_type =  \'projects\'
AND wp_posts.post_status =  \'publish\'
AND wp_posts.ID = wp_postmeta.post_id
AND wp_term_relationships.object_id = wp_posts.ID
AND wp_term_relationships.term_taxonomy_id = wp_terms.term_id
AND wp_terms.slug =  \'food-and-beverage\'
ORDER BY wp_posts.ID DESC 
由于我不知道的原因,这是返回没有food-and-beverage 已选定

正如下面的答案所证明的那样,这不是一种理想的方法,但这是我一直致力于的方法,因为重构代码(这是生成的SQL,还有很多)将永远花费我的时间。

EDIT

<因为每个人(包括我自己)似乎都同意我这样做是错误的,所以我将不情愿地尝试重构。

然而,我将暂时保留这个问题,以防有人能为我制定一个快速解决方案(我很乐意给你一些bounty points).

对于大胆/疯狂的人,这里有一个要点,其中包含大量的来源:https://gist.github.com/2950395

我将几个“过滤器”作为POST变量传递给ajax it。

2 个回复
最合适的回答,由SO网友:mrwweb 整理而成

(我意识到您正在偏离这一点,但如果您能让它工作起来,这可能是值得的。随着3.4 for WP\\U Query最近的性能改进,这可能是值得的。)

WP_Query 如果这是二次循环,则是正确的决策。否则,你可能会pre_get_posts.

当您使用WP_Query 确保:

您不需要使用保留的全局变量来保存新查询。(例如,许多人通过将新查询保存为$wp_query 然后覆盖现有的查询对象使用右循环格式,例如。$my_custom_query->have_posts();tag 或者tax var(已弃用),请使用tax\\u查询看看您的示例,这里有一个建议的循环:

$food_query_args = array(
    \'post_type\' => \'projects\',
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'post_tag\', // or the name of your custom taxonomy
            \'field\' => \'slug\',
            \'terms\' => \'food-and-beverage\' // FYI, it\'s more stable imho to use the ID if you can. If you do, that switch \'slug\' in the preceding line to \'id\'
        )
    )
);

$food_query = new WP_Query( $food_query_args );

if( $food_query->have_posts() ) : while( $food_query->have_posts() ) : $food_query->the_post();

    // STUFF

endwhile; endif; wp_reset_postdata();

SO网友:HungryCoder

您不需要编写这些SQL查询。您可以利用WP\\U查询api。

下面将显示标签中有“食品和饮料”字样的帖子。

$query = new WP_Query( array( \'tag\' => \'food-and-beverage\' ) );
如果使用不同的分类法,请使用该分类法,而不是tag.

由于需要使用其他选项筛选帖子,您可以在此处查看整个api文档以进行WP\\U查询:http://codex.wordpress.org/Class_Reference/WP_Query

这样可以避免编写SQL。

结束

相关推荐

通过MySQL(CSV文件)导入帖子需要自动发布

我正在通过数据库导入csv文件,当我查看CMS时,所有帖子都未发布,有没有办法在导入时自动发布?通过CMS进行批量发布不起作用,因为我需要将我在CSV文件中输入的日期作为发布日期,而不是单击发布的日期。在post\\u status列中,所有帖子都设置为发布。我正在尝试导入数百条新闻帖子,日期必须在过去。这是我的csv文件:ID post_author post_date post_date_gmt post_content post_title post_excerpt post