用于从帖子ID获取术语的自定义查询

时间:2014-11-06 作者:dev-jim

我想通过给定的posts id获取terms对象。我对sql了解不多,这对我来说有点复杂。以下是我尝试的内容:

global $wpdb;
$taxonomy = \'category\'
$term= $wpdb->prefix.\'terms\';
$relations= $wpdb->prefix.\'term_relationships\';
$taxo = $wpdb->prefix.\'term_taxonomy\';
$sql = "SELECT $term.*, $relations.*, $taxo.* 
            FROM $term
                JOIN $relations 
                    ON $term.term_id = \'$taxo.term_id\'
                JOIN $taxo 
                    ON $relations.term_taxonomy_id = $taxo.term_taxonomy_id
            WHERE $taxo.taxonomy = \'$taxonomy\' AND $relations.object_id IN (116,118) 
            GROUP BY $term.term_id";
$values = $wpdb->get_results($sql, ARRAY_A);
不知道怎么了。这就是行不通。

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

如果Wordpress中的函数已经完成了任务,则不建议使用自定义SQL查询。

要实现这一点,您可以简单地利用wp_get_object_terms(). 第一个参数$object_ids 获取对象ID的字符串或数组。在您的情况下,您可以使用帖子ID的数组。这将检索与给定帖子关联的所有术语。

下面是一个示例

$terms = wp_get_object_terms( array(394,530),  \'category\' );
if ( ! empty( $terms ) ) {
    if ( ! is_wp_error( $terms ) ) {
        foreach( $terms as $term ) {
            ?><pre><?php var_dump($term); ?></pre><?php 
        }
    }
}
这将为您提供以下输出

object(stdClass)#494 (10) {
  ["term_id"]=>
  int(115)
  ["name"]=>
  string(8) "child-01"
  ["slug"]=>
  string(7) "child01"
  ["term_group"]=>
  int(0)
  ["term_taxonomy_id"]=>
  int(115)
  ["taxonomy"]=>
  string(8) "category"
  ["description"]=>
  string(0) ""
  ["parent"]=>
  int(21)
  ["count"]=>
  int(2)
  ["filter"]=>
  string(3) "raw"
}

结束

相关推荐

使用CATEGORY和WP_QUERY将内容从主域获取到子域

我有一个主网站与2个子域名。www.example。com公司www.space。实例com公司www.products。实例com公司我想在我的主网站上发布文章,使用类别对其进行排序。例如,使用“空间”类别的文章和使用“产品”类别的文章。使用wp查询和自定义帖子类型,我想在我的共享空间中显示。实例com页面上的文章来自“space”类别,以及我的产品。实例com“产品”类别的文章。我知道在一个没有子域的简单网站上使用wp querie with categorie是可行的:$query = new WP