이 시리즈에서는 지금까지 게시물 유형, 카테고리, 태그, 메타데이터, 날짜, 상태 등을 기준으로 게시물을 선택하기 위해 WP_Query
클래스와 함께 사용할 수 있는 매개변수 선택에 대해 배웠습니다.
WP_Query
매개변수에 대한 마지막 튜토리얼에서는 쿼리에 더 많은 유연성을 제공할 수 있는 덜 일반적으로 사용되는 매개변수를 다루겠습니다.
여기서 소개하는 매개변수는 다음 용도로 사용됩니다.
시작하기 전에 WP_Query
를 사용하여 매개변수를 작성하는 방법을 빠르게 살펴보겠습니다.
테마나 플러그인에 WP_Query
를 작성할 때 다음 네 가지 주요 요소를 포함해야 합니다.
실제로는 다음과 같습니다.
으아악이 매개변수는 WordPress에 데이터베이스에서 가져올 데이터를 알려줍니다. 여기서는 이에 대해 다루겠습니다. 그래서 여기서 우리가 집중하고 있는 것은 코드의 첫 번째 부분입니다:
으아악보시다시피 매개변수는 배열에 포함되어 있습니다. 이 튜토리얼을 따라가다 보면 코딩 방법을 배우게 됩니다.
배열의 매개변수에는 다음과 같은 특정 인코딩 방법이 있습니다.
으아악매개변수와 해당 값은 작은따옴표로 묶고, 사이에 =>
를 사용하고, 쉼표로 구분해야 합니다. 이 실수를 하면 WordPress에서 쿼리에 모든 매개변수를 추가하지 못할 수 있습니다. 그렇지 않으면 흰색 화면이 나타날 수 있습니다.
작성자별로 쿼리하는 데 사용할 수 있는 매개변수는 4개입니다.
author
(int): 작성자 ID 사용author_name
(String): "user_nicename"(이름 아님) 사용 author__in
(array): 작성자 ID 사용author__not_in
(배열)첫 번째 author
를 사용하면 작성자 ID를 제공하여 한 명 이상의 작성자가 게시한 게시물을 쿼리할 수 있습니다.
위 코드는 ID가 2
인 작성자의 모든 게시물을 쿼리합니다.
문자열을 사용하여 여러 작성자의 게시물을 쿼리할 수도 있습니다.
으아악이름으로 쿼리하려면 author_name
매개변수를 사용할 수 있습니다.
이 매개변수는 사용자 관리 화면에서 별명으로 표시되는 데이터베이스의 user_nicename
필드 값을 매개변수로 사용합니다.
사용자가 편집할 수 있으므로 author
매개변수를 사용하는 것이 더 안전하다는 점에 유의하세요(사용자가 변경할 수 있다고 생각되는 경우).
다음에서 여러 작성자의 게시물을 확인할 수도 있습니다.
으아악위는 두 명의 작성자의 게시물을 쿼리합니다. ID가 1
및 1
和 2
的作者,给出的结果与我在 author
인 작성자는 author에서 사용한 문자열과 동일한 결과를 제공합니다. 위의
매개변수입니다.
마지막으로 author__not_in
参数排除一位或多位作者的帖子。下面的参数查询除作者 1
매개변수를 사용하여 한 명 이상의 작성자의 게시물을 제외할 수 있습니다. 다음 매개변수는 작성자 1
을 제외한 모든 게시물을 쿼리합니다.
또는 여러 저자를 제외할 수도 있습니다:
으아악또는 author
매개변수를 사용하고 작성자 ID 앞에 빼기 기호를 사용하여 작성자를 제외할 수 있습니다.
검색 매개변수는 s
단 하나뿐입니다. 검색어와 일치하는 게시물을 쿼리하려면 이를 사용하세요. 예를 들어 "내가 가장 좋아하는 음식"이라는 키워드가 포함된 게시물을 쿼리하려면 다음을 사용합니다.
예를 들어 유사한 키워드가 포함된 관련 게시물을 검색하는 데 유용할 수 있습니다.
두 가지 비밀번호 매개변수를 사용하여 비밀번호 보호 여부에 관계없이 게시물을 쿼리할 수 있습니다.
has_password
(bool)post_password
(문자열)첫 번째 매개변수 has_password
를 사용하면 비밀번호 보호 여부에 관계없이 게시물을 쿼리할 수 있습니다. 따라서 비밀번호로 보호된 게시물을 쿼리하려면:
비밀번호가 없는 게시물의 경우:
으아악 post_password
매개변수를 사용하여 비밀번호 자체로 쿼리할 수도 있습니다.
권한에는 다른 매개변수와 함께 사용되는 perm
,用于查询当前用户有权限阅读的帖子。它采用 'readable'
값이라는 하나의 매개변수만 있습니다.
因此,要查询受密码保护的帖子并仅在用户具有适当权限时才显示它们,您可以使用以下命令:
$args = array( 'has_password' => true, 'perm' => 'readable' );
或者,如果当前用户有权查看草稿帖子,则可以使用以下命令:
$args = array( 'post_status' => 'draft', 'perm' => 'readable' );
共有三个缓存参数,它们会阻止查询检索到的数据添加到缓存中:
cache_results
(boolean):帖子信息缓存update_post_meta_cache
(boolean):发布元信息缓存update_post_term_cache
(boolean):帖子术语信息缓存这三个选项的默认值都是 true
:如果您希望将数据添加到缓存中,则不需要使用它们。
因此,要显示 product
帖子类型的所有帖子,但不将帖子信息添加到缓存中,您可以使用以下命令:
$args = array( 'post_type' => 'product', 'cache_results' => false );
通常您不应该使用这些参数,因为将发布数据添加到缓存是一个很好的做法。但是,您有时可能希望检索帖子,以便只使用一些帖子数据,在这种情况下,您不需要缓存中的其余帖子数据。例如,当您只想输出带有链接的帖子标题列表时,在这种情况下,您不需要将帖子术语数据或元数据添加到缓存中:
$args = array( 'post_type' => 'product', 'update_post_meta_cache' => false, 'update_post_term_cache' => false );
您可以使用 fields
参数来指定从查询中返回哪些字段。这可以节省从数据库中的字段返回的数据,而在循环中输出数据时不需要这些数据。
默认情况下是返回所有字段,但是您有两个选项可以使用 fields
参数来限制这一点。首先,'ids'
参数:
$args = array( 'fields' => 'ids' );
这只会返回帖子 ID 数组,不会返回其他字段。如果您想在循环中输出任何内容(例如帖子标题),则必须使用 get_the_title ($post->ID);
等函数来输出标题,这将处理事情的方式很冗长。
您可以使用的另一个参数获取帖子 ID 与子帖子 ID 的关联数组:
$args = array( 'fields' => 'id=>parent' );
您可以使用它根据您的其他参数及其子参数查询帖子。
WP_Query
系列的这一部分介绍了 WP_Query
类的最终参数集。您可以使用它们按作者、密码保护状态或密码本身和搜索词查询帖子,并设置是否将查询结果添加到缓存以及查询返回哪些字段。
在本系列的下一部分中,您将看到一些在主题或插件中使用 WP_Query
的有效示例。
위 내용은 WP_Query 매개변수: 작성자, 검색, 비밀번호 및 권한의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!