이 시리즈에서는 함께 사용되는 다양한 매개변수와 이를 인코딩하는 방법에 대해 WP_Query
的结构及其属性和方法。现在我们正在研究可与 WP_Query
배웠습니다.
WP_Query
有大量可能的参数,这使得它极其灵活。由于您可以使用它来查询 wp_posts
모든 것이 테이블에 저장되므로 콘텐츠에 대해 실행하려는 모든 쿼리에 대한 매개변수 순열이 있습니다.
이 튜토리얼에서는 분류 용어를 쿼리하기 위한 매개 변수에 대해 알아봅니다.
시작하기 전에 WP_Query<code class="inline">WP_Query
中的工作原理。当您在主题或插件中编写 WP_Query
에서 매개변수가 어떻게 작동하는지 빠르게 살펴보겠습니다. 테마나 플러그인에 WP_Query
if
和 class="inline">whileEnd: if
태그를 닫고 게시물 데이터 재설정
실제로는 다음과 같습니다.
으아악
이 매개변수는 WordPress에 데이터베이스에서 가져올 데이터를 알려줍니다. 여기서는 이에 대해 다루겠습니다. 그래서 여기서 우리가 집중하고 있는 것은 코드의 첫 번째 부분입니다:매개변수를 작성하세요
=>
배열의 매개변수에는 다음과 같은 특정 인코딩 방법이 있습니다.
=>
tax_query
분류 매개변수
tax_query<li>를 사용하고 있으므로 분류 용어에 대한 매개변수 설정은 카테고리 및 태그에 대한 매개변수 설정보다 조금 더 복잡합니다. 이 매개변수에서는 다음을 사용하여 분류법과 용어를 지정하는 중첩된 매개변수 배열을 작성할 수 있습니다.
<strong>
<code class="inline">分类法
분류
(String): field
(string): 选择分类术语 ('term_id
(默认), 'name'
或 'slug'
field<li>(<strong>string<code class="inline">terms
): 분류 용어 선택('term_id
(기본값), 'name'
또는 '슬러그'
)include_children
terms<em> (</em>int/string/array
): operator
(string): 要测试的运算符。可能的值为 'IN'
(默认)、'NOT IN'
、'AND'
、'EXISTS'
、和 “不存在”
include_children
): operator
参数这一事实意味着您无需从一系列可用参数中进行选择来定义是包含还是排除术语(就像对标签所做的那样)和类别),但可以使用 tax_query
계층적 분류의 하위 항목을 포함할지 여부입니다. 기본값은 true입니다.
relation
参数,其中 AND
或 OR
operator
string
):'IN'
'NOT IN'<p>, <code class="inline">'AND'
, 'EXISTS'<p> 및 <code>"존재하지 않습니다"<img src="https://img.php.cn/upload/article/000/465/014/169355456062921.jpg" alt="WP_Query 매개변수를 사용하여 분류 필터링">.
category
分类中包含 tutorial
术语的帖子。请注意,您还需要使用 field
operator
tax_query<p>를 사용하여 모든 분류 관련 콘텐츠를 대체할 수 있습니다. <img src="https://img.php.cn/upload/article/000/465/014/169355456012868.jpg" alt="WP_Query 매개변수를 사용하여 분류 필터링">
</p>여러 분류법을 쿼리하려는 경우 <code class="inline">AND <p> 또는 relation</p> 매개변수를 사용할 수도 있습니다. "inline">OR<h3> 모든 용어가 포함된 게시물을 찾을지 아니면 일부만 찾을지 지정합니다. </h3>
<p>이것은 몇 가지 예를 통해 쉽게 설명할 수 있습니다. </p>
🎜
분류 용어 쿼리🎜
🎜이것은 중첩 배열을 사용하는 가장 간단한 시나리오입니다. 🎜
으아악
🎜🎜🎜
🎜위 쿼리는 <code class="inline">category🎜 카테고리에 <code>tutorial🎜이라는 용어가 포함된 게시물에 대한 것입니다. 또한 기본 용어 ID를 사용하지 않는 한 용어를 식별하는 데 사용하는 필드를 식별하려면 <code class="inline">field🎜 매개변수를 사용해야 합니다. 용어 ID를 사용하려면 다음과 같이 사용할 수 있습니다. 🎜
으아악
🎜🎜🎜
🎜ID를 사용하면 나중에 쿼리가 찾고 있는 내용을 판단하기가 더 어려워지지만 사용자가 슬러그라는 용어를 편집할 수 있다고 생각되면 잠재적인 문제를 피할 수 있습니다. 🎜
🎜
카테고리에서 여러 용어를 쿼리하세요🎜
🎜동일한 카테고리에 하나 이상의 용어 배열이 있는 게시물을 식별하려는 경우에도 중첩 배열을 작성하고 용어 집합을 추가할 수 있습니다. 🎜
<p>例如,要查询包含分类中<em>任何</em>术语 ID 列表的帖子,您可以使用:</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">$args = array(
'tax_query' => array(
array(
'taxonomy' => 'post_tag',
'terms' => [14, 17]
)
)
);
</pre><div class="contentsignin">로그인 후 복사</div></div>
<p><img src="https://img.php.cn/upload/article/000/465/014/169355456148575.jpg" alt="WP_Query 매개변수를 사용하여 분류 필터링" /></p>
<p>但是如果您想查询包含这些术语的<em>所有</em>帖子怎么办?您需要在嵌套数组中使用 <code class="inline">operator
参数:
$args = array( 'tax_query' => array( array( 'taxonomy' => 'post_tag', 'terms' => [14, 17], 'operator' => 'AND' ) ) );
请注意,第一个示例实际上使用 IN
运算符来查找包含任何术语的帖子,但由于这是默认值,因此您不必在参数中指定它。 p>
另一种情况是,如果您想要查询在一个分类中没有任何术语数组的帖子,您可以这样做:
$args = array( 'tax_query' => array( array( 'taxonomy' => 'post_tag', 'terms' => [14, 17], 'operator' => 'NOT IN' ) ) );
在这里,我将 AND
运算符替换为 NOT IN
,这意味着 WordPress 将查找数组中不包含任何术语的帖子。
请注意,如果您更喜欢使用 slugs 而不是术语 ID,则可以在任何这些场景中执行此操作。最后一个示例如下所示:
$args = array( 'tax_query' => array( array( 'taxonomy' => 'post_tag', 'field' => 'slug', 'terms' => ['php', 'strings'], 'operator' => 'NOT IN' ) ) );
如果您想要使用多个分类法,则需要创建多个数组。让我们看一个最简单的示例,查询包含类别分类中的一个术语和标签分类中的一个术语的帖子:
$args = array( 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => ['tutorial'] ), array( 'taxonomy' => 'post_tag', 'field' => 'slug', 'terms' => ['javascript'] ) ) );
在这里,我编写了两个嵌套数组:每个分类法一个,使用与仅使用一种分类法的示例相同的参数。我在这些之前添加了 relation
参数。您需要包含 relation
参数来告诉 WordPress 是否正在查找每个数组输出的全部或部分帖子。其工作原理如下:
'relation' => 'AND'
,WordPress 将获取第一个数组和第二个数组中指定的帖子。因此,在上面的示例中,仅发布两者 类别中的 <code>tutorial
slug 和 中的 <code class="inline">javascript
slug post_tag 将被查询。'relation' => 'OR'
,WordPress 将获取第一个数组或第二个数组输出的帖子。因此,在这种情况下,您将收到带有 tutorial
slug 或 javascript
slug(或两者)的帖子。如果您正在寻找包含这两个标签之一的帖子,则可以使用以下代码:
$args = array( 'tax_query' => array( 'relation' => 'OR', array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => ['tutorial'] ), array( 'taxonomy' => 'post_tag', 'field' => 'slug', 'terms' => ['javascript'] ) ) );
您还可以通过将给定分类法添加到数组中来查找多个术语:
$args = array( 'tax_query' => array( 'relation' => 'OR', array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => ['guide'] ), array( 'taxonomy' => 'post_tag', 'field' => 'slug', 'terms' => ['php', 'strings'] ) ) );
通过将 relation
参数与查询相结合,并使用 operator
参数,您可以创建复杂的查询。下面的参数将查询包含一个分类中的术语但不包含另一个分类中的术语的帖子:
$args = array( 'orderby' => 'title', 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => ['tutorial'], 'operator' => 'NOT IN' ), array( 'taxonomy' => 'post_tag', 'field' => 'slug', 'terms' => ['php', 'math'], 'operator' => 'AND' ) ) );
请注意,我在这里使用了 'relation' => 'AND'
:如果我使用 OR
,它将使用 slug-two
和没有 slug-one
的帖子,而不是有 slug-two
但没有 slug 的帖子-one
,这就是我正在寻找的。p>
您可以根据需要进一步查询分类法的术语:在两个嵌套查询中使用 operator
参数,或添加额外的嵌套查询来查询另一个分类法中的术语。
您可以创建嵌套分类查询来创建更复杂的过滤器来获取您的帖子。在 4.1 版本中,WordPress 核心添加了对嵌套分类法的支持。更早地获得类似的结果要么要复杂得多,要么根本不可能。
$args = array( 'tax_query' => array( 'relation' => 'OR', array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => ['guide'], ), array( 'relation' => 'AND', array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => ['tutorial'], ), array( 'taxonomy' => 'post_tag', 'field' => 'slug', 'terms' => ['php', 'strings'], 'operator' => 'AND' ) ) ) );
上述查询将选择 category
分类下带有 guide
slug 的帖子,或者在 category
下具有 tutorial
slug 并具有 php
, stringsphpcnendc 的帖子<code>post_tag
下的 phpcn slug 组合.
tax
参数的注释您可能想知道为什么我没有包含 {tax}
参数,您只需按如下方式编写您的参数:
$args = array( 'taxonomy1' => 'slug-one' );
如果您过去曾经使用过这种查询分类法的方式,您可能会熟悉这种方式,但它现在已被弃用,并且您不应该使用它。所以坚持使用 tax_query
!无论如何,使用 tax_query
会给您带来更大的灵活性。
查询分类比类别和标签稍微复杂一些,因为您需要掌握 tax_query
参数。
但是,正如我们所看到的,这是一个非常有力的论点,它为您提供了很大的范围和灵活性,可以按照您希望的方式查询数据库。
这篇文章已根据 Nitish Kumar 的贡献进行了更新。 Nitish 是一名 Web 开发人员,拥有在各种平台上创建电子商务网站的经验。他将业余时间花在个人项目上,让他的日常生活变得更轻松,或者在晚上与朋友一起散步。
위 내용은 WP_Query 매개변수를 사용하여 분류 필터링의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!