스키마 튜토리얼레슨 1: WordPress 데이터 검색
레슨 1: WordPress 데이터 검색
WordPress 내에서 데이터를 검색하는 기능은 여러 경우에 제한이 있으며, Gato GraphQL은 이러한 기능을 확장하는 데 도움이 됩니다.
대표적인 예로 커스텀 필드(즉, 메타 값)가 있습니다. 커스텀 필드를 사용하여 게시물(및 사용자, 댓글, 분류)에 추가 정보를 더할 수 있지만, 키워드로 게시물을 검색할 때 WordPress는 메타 값 내부를 검색하지 않습니다.
따라서 Gato GraphQL을 사용하여 메타 키와 값으로 게시물(및 사용자, 댓글, 분류)을 검색할 수 있습니다.
예시
이 쿼리는 썸네일이 있는 게시물과 없는 게시물을 모두 가져옵니다.
query {
postsWithThumbnail: posts(
filter: {
metaQuery: {
key: "_thumbnail_id",
compareBy: {
key: {
operator: EXISTS
}
}
}
}
) {
id
title
featuredImage {
id
src
}
}
postsWithoutThumbnail: posts(
filter: {
metaQuery: {
key: "_thumbnail_id",
compareBy: {
key: {
operator: NOT_EXISTS
}
}
}
}
) {
id
title
}
}이 쿼리는 로케일이 "아르헨티나 스페인어"인 모든 사용자를 가져옵니다.
query {
argentineSpanishLocaleUsers: users(
filter: {
metaQuery: {
key: "locale",
compareBy: {
stringValue: {
value: "es_AR"
operator: EQUALS
}
}
}
}
) {
id
name
locale: metaValue(key: "locale")
}
}AND 및 OR 관계를 사용하여 데이터를 더 정밀하게 필터링할 수 있습니다. 이 쿼리는 썸네일이 있으면서 커스텀 메타 todo_action의 값이 "replace"인(썸네일을 교체해야 함을 의미하는) 게시물을 가져옵니다.
query {
posts(
filter: {
metaQuery: [
{
relation: AND
key: "_thumbnail_id",
compareBy: {
key: {
operator: EXISTS
}
}
},
{
key: "todo_action",
compareBy: {
stringValue: {
value: "replace"
operator: EQUALS
}
}
}
]
}
) {
id
title
}
}메타 필터링은 표준 데이터 항목과 조합할 수도 있습니다. 이 쿼리는 특정 날짜 이후에 생성되고 "wordpress" 태그가 붙은 썸네일 없는 게시물을 모두 가져옵니다.
query {
posts(
filter: {
metaQuery: {
key: "_thumbnail_id",
compareBy: {
key: {
operator: NOT_EXISTS
}
}
},
dateQuery: {
after: "2020-07-01"
},
tagSlugs: [
"wordpress"
]
}
) {
id
title
tagNames
}
}정규 표현식을 사용하여 메타를 검색할 수도 있습니다. 이 쿼리는 스페인어 로케일의 모든 사용자를 검색합니다 (예: 아르헨티나의 es_AR, 스페인의 es_ES 등).
query {
spanishLocaleUsers: users(filter: { metaQuery: {
key: "locale",
compareBy: {
stringValue: {
value: "es_[A-Z]+"
operator: REGEXP
}
}
}}) {
id
name
locale: metaValue(key: "locale")
}
}Prev
Next