按术语ID检索帖子自定义查询

时间:2014-06-20 作者:Azeem Hassni

我想使用自定义查询检索自定义帖子。我的分类法是recipe\\u tx和其中的术语(牛肉)、(鸡肉)等。

我试过使用

SELECT p.* FROM wp_posts p, wp_term_taxonomy tt, wp_term_relationships tr 
WHERE p.ID=tr.`object_id` 
AND tt.`term_id`=tr.`term_taxonomy_id` 
AND (p.post_type = \'recipe_cpt\')
AND p.post_status = \'publish\'
AND tt.`term_taxonomy_id` = 37
但运气不好。

有人能帮助我如何通过他们的term\\u id获得wp帖子吗。

如果beefs id是37,那么我想用term_id = 37

谢谢

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

您是否尝试过使用WP\\u查询类?您可能会发现,使用内置工具进行此操作比从头开始使用自定义查询更容易。类似于以下内容的内容应该适用于您:

<?php
$args = array(
\'post_type\' => \'recipe_cpt\',
\'tax_query\' => array(
    array(
    \'taxonomy\' => \'recipe_tx\',
    \'field\' => \'term_id\',
    \'terms\' => 37
     )
  )
);
$query = new WP_Query( $args ); ?>
编辑:注意tax_query 是设计的阵列阵列。许多税务查询问题都是由于缺少此详细信息造成的。

编辑:已更正field 上面的值输入错误,将“id”替换为“term\\u id”。

SO网友:Shahlin Ibrahim

我知道问题已经得到了回答,但如果有人试图通过原始SQL查询实现同样的效果,您可以尝试以下方法:

SELECT * 
FROM wpiw_posts
WHERE ID IN (
    SELECT object_id 
    FROM wpiw_term_relationships AS TR 
        INNER JOIN wpiw_term_taxonomy AS TT ON TR.term_taxonomy_id = TT.term_taxonomy_id
        INNER JOIN wpiw_terms AS T ON TT.term_id = T.term_id
    WHERE TT.taxonomy = \'recipe_tx\' AND T.term_id = 37
)
上述查询将获得属于给定分类法(recipe\\u tx)和术语ID(37)的所有帖子。

SO网友:Ray Perea

我知道这是一个老帖子,但我只是想插嘴@jdm2112正确。只需使用WP\\u查询类。这可以确保如果将来数据库结构更新,您的查询仍然有效。。。。然而,由于看起来您正在寻找原始SQL答案,因此这是实际的SQLWP_Query 将执行。。。至少从WordPress 5.6开始。(我已经根据您的问题调整了SQL)

SELECT * from wp_posts 
    LEFT JOIN 
        wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
    WHERE 
        (wp_term_relationships.term_taxonomy_id IN (37)) AND
        wp_posts.post_type = \'recipe_cpt\' AND
        wp_posts.post_status = \'publish\'
    GROUP BY wp_posts.ID
您可以通过创建WP_Query 实例,然后查看request 类似这样的属性:

<?php

$args = [
    \'post_type\' => \'recipe_cpt\',
    \'tax_query\' => [
        [
            \'taxonomy\' => \'recipe_tx\',
            \'field\' => \'term_id\',
            \'terms\' => 37
        ]
    ]
];
$queryObj = new WP_Query($args); 

// This will give you the actual raw SQL query
$rawSqlQuery = $queryObj->request;

结束

相关推荐

如何使用JSON API插件通过META_QUERY获取帖子?

我想用一种使用元查询的API方法获取帖子。我有两个自定义字段“place”和“dayoweek”,我想通过API调用检索所有对这两个字段有一些值的帖子。如果使用php,或多或少会是这样$args = array( \'numberposts\' => -1, \'post_type\' => \'event\', \'meta_query\' => array( \'relation\' => \'AND\',