📜  wp tax_query in - PHP (1)

📅  最后修改于: 2023-12-03 15:06:02.083000             🧑  作者: Mango

WP Tax_Query in PHP

在 WordPress 中,Taxonomy(分类法)是将相关帖子归类的方式。在查询相关帖子时,我们通常使用 Tax_Query 类来实现对分类法的查询。

Tax_Query 允许我们根据分类法的层次结构进行查询。例如,我们可以查找具有特定分类或子分类的文章。在本文中,我们将介绍 Tax_Query 的使用方法。

Tax_Query 的基本用法

以下是一个基本的 Tax_Query 查询示例,该查询将返回具有 categoryA 和 categoryB 分类的文章。

$tax_query_args = array(
    'relation' => 'OR',
    array(
        'taxonomy' => 'category',
        'field' => 'slug',
        'terms' => 'categoryA'
    ),
    array(
        'taxonomy' => 'category',
        'field' => 'slug',
        'terms' => 'categoryB'
    )
);

$query_args = array(
    'post_type' => 'post',
    'tax_query' => $tax_query_args
);

$query = new WP_Query( $query_args );

在此示例中,我们定义了一个名为 $tax_query_args 的数组,其中 relation 定义了 "OR"。这意味着我们要查询具有分类 A 或分类 B 的文章。

然后我们将 $tax_query_args 数组作为参数传递给 $query_args 数组中的 'tax_query'。最后,我们使用 $query = new WP_Query( $query_args ); 执行查询。

Tax_Query 的高级用法
比较操作符

使用 Tax_Query,我们可以执行以下比较操作。

  • =:等于。
  • !=:不等于。
  • >:大于。
  • <:小于。
  • >=:大于等于。
  • <=:小于等于。
  • IN:在给定的值之中。
  • NOT IN:不在给定的值之中。

以下是一个例子,它将返回具有分类 C、D 和 E 中至少一个分类的文章。

$tax_query_args = array(
    'relation' => 'OR',
    array(
        'taxonomy' => 'category',
        'field' => 'slug',
        'terms' => array( 'categoryC', 'categoryD', 'categoryE' ),
        'operator' => 'IN'
    )
);

$query_args = array(
    'post_type' => 'post',
    'tax_query' => $tax_query_args
);

$query = new WP_Query( $query_args );

注意,我们使用了 'operator' => 'IN' 来确保至少一个分类匹配。

分类法关系

我们可以使用 'relation' 参数来定义分类法之间的关系。例如,我们可以查询具有分类A或分类B,以及同时具有分类D和分类E的文章。

$tax_query_args = array(
    'relation' => 'AND',
    array(
        'taxonomy' => 'category',
        'field' => 'slug',
        'terms' => array( 'categoryA', 'categoryB' )
    ),
    array(
        'taxonomy' => 'category',
        'field' => 'slug',
        'terms' => array( 'categoryD', 'categoryE' )
    )
);

$query_args = array(
    'post_type' => 'post',
    'tax_query' => $tax_query_args
);

$query = new WP_Query( $query_args );

上述示例中 relation 被设置为 AND。这意味着我们要查询同时拥有分类A/B 和 D/E 的文章。

结论

Tax_Query 可以让你在 WordPress 中更加精细地查询分类法相关的文章。在上述 Tax_Query 示例中,我们使用了 'taxonomy''field''terms''operator' 等参数来执行分类法查询。通过根据分类法之间的关系设定 'relation' 参数,我们可以进一步精确定义查询,以满足我们的需求。