>백엔드 개발 >PHP 튜토리얼 >WP_Query 매개변수: 작성자, 검색, 비밀번호 및 권한

WP_Query 매개변수: 작성자, 검색, 비밀번호 및 권한

王林
王林원래의
2023-09-03 08:41:111106검색

이 시리즈에서는 지금까지 게시물 유형, 카테고리, 태그, 메타데이터, 날짜, 상태 등을 기준으로 게시물을 선택하기 위해 WP_Query 클래스와 함께 사용할 수 있는 매개변수 선택에 대해 배웠습니다.

WP_Query 매개변수에 대한 마지막 튜토리얼에서는 쿼리에 더 많은 유연성을 제공할 수 있는 덜 일반적으로 사용되는 매개변수를 다루겠습니다.

여기서 소개하는 매개변수는 다음 용도로 사용됩니다.

  • 작가
  • 검색
  • 비밀번호
  • 권한
  • 캐싱
  • 반환 필드

시작하기 전에 WP_Query를 사용하여 매개변수를 작성하는 방법을 빠르게 살펴보겠습니다.

WP_Query의 매개변수 작동 방식 검토

테마나 플러그인에 WP_Query를 작성할 때 다음 네 가지 주요 요소를 포함해야 합니다.

  • 쿼리 매개변수, 이 튜토리얼에서 소개할 매개변수를 사용하세요
  • 쿼리 자체
  • 루프
  • 끝: if 및 while 태그를 닫고 게시물 데이터를 재설정

실제로는 다음과 같습니다.

으아악

이 매개변수는 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 필드 값을 매개변수로 사용합니다.

WP_Query 매개변수: 작성자, 검색, 비밀번호 및 권한

사용자가 편집할 수 있으므로 author 매개변수를 사용하는 것이 더 안전하다는 점에 유의하세요(사용자가 변경할 수 있다고 생각되는 경우).

다음에서 여러 작성자의 게시물을 확인할 수도 있습니다.

으아악

위는 두 명의 작성자의 게시물을 쿼리합니다. ID가 112 的作者,给出的结果与我在 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.