Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress

워드프레스 메타 데이터 완전 정복: 메타 데이터 소개

by
Length:ShortLanguages:

Korean (한국어) translation by Dae-yeop Lee (you can also view the original English article)

워드프레스를 강력한 CMS 도구로 만들어주는 것 중 하나는 wp_postmeta 테이블을 이용해 커스텀 필드를 저장할 수 있다는 것입니다. 이러한 커스텀 필드는 SEO 플러그인에서 추가한 SEO 필드 같은 추가 정보를 저장하거나 별도의 프론트엔드 콘텐츠를 표시하는 데 사용할 수 있습니다.

필드에 이러한 별도 정보를 추가하면 커스텀 쿼리를 만들어 여러분이 만든 콘텐츠를 구성할 수 있습니다.

이 같은 데이터를 활용하는 방법을 익히는 것은 배열, 반복문, 객체를 비롯한 핵심 PHP 개념들을 배우는 아주 좋은 방법입니다. 워드프레스 메타 데이터를 완전히 정복하려면 먼저 모든 종류의 배열을 완벽하게 익혀야 합니다.

이번 연재 글에서는 구체적인 배열 사용법으로서 워드프레스 포스트 메타 데이터와 사용자 메타 데이터를 활용하는 다양한 방법을 보여드리겠습니다.

이 글에서는 인덱스 배열과 연관 배열의 차이점을 비롯해 다차원 배열을 이해하는 법을 배울 것입니다.

포스트 메타 데이터란?

포스트 메타 데이터를 가장 기술적으로 설명하면 wp_postmeta 테이블에 저장되는 정보라는 것입니다. 기본적으로 자주 있는 일은 아니지만 플러그인이나 테마에서도 언제든지 커스텀 필드를 추가할 수 있으며, 해당 필드에 입력된 데이터는 wp_postmeta 테이블에 저장됩니다.

한 가지 좋은 예를 들자면 SEO 플러그인에서 추가하는 SEO 필드일 것입니다. 이를테면 포스트 메타 설명을 생각해봅시다. 해당 필드는 postmeta 테이블에 저장됩니다.

그뿐만 아니라 워드프레스의 사용자 프로필은 커스텀 필드를 이용해 확장할 수 있습니다. wp_postswp_postmeta 간의 관계와 마찬가지로 이러한 필드는 wp_user 테이블이 아닌 wp_usermeta 테이블에 저장됩니다.

이 연재 글에서는 워드프레스에서 커스텀 필드를 추가하는 법을 다루지 않습니다. 그것 자체로도 하나의 커다란 주제이기 때문입니다. 커스텀 필드는 플러그인이나 테마에서 직접 구현하거나 PodsAdvanced Custom Fields 같은 특화된 프레임워크를 이용하는 식으로 포스트 편집기의 "커스텀 필드" 메타박스에서 추가할 수 있습니다.

엄밀히 말해서 포스트 메타 데이터는 wp_postmeta 테이블에 저장되는 임의 정보에 해당합니다. 앞에서도 언급했다시피 포스트 메타 데이터의 좋은 예는 워드프레스 SEO 같은 플러그인을 통해 도입된 메타 설명 필드입니다.

yoast

메타 데이터를 가져오는 메서드

get_post_meta() 사용하기

워드프레스에서는 포스트의 메타 데이터를 가져오는 다양한 방법을 제공합니다.

get_post_meta()에 지정하는 식으로 특정 필드를 가져올 수 있습니다. 예를 들어, 루프 내의 현재 포스트로부터 'foo'라는 필드를 가져오려면 get_post_meta( get_the_id(), 'foo', true );를 실행하면 됩니다.

참고로 마지막 인자를 true로 지정했습니다. 이 인자는 "single"이라고 하며, 반환되는 값을 하나만 받을지 아니면 값의 배열로 받을지를 결정합니다. 원한다면 포스트의 모든 값을 하나의 변수로 가져오거나 필드로부터 모든 값을 가져올 수도 있었습니다.

WP_Query 사용하기

때로는 메타 데이터를 토대로 전체 루프를 작성하고 싶을 때가 있는데, 이때 WP_Query가 굉장히 유용합니다. WP_Query를 이용하면 "메타 쿼리(meta query)"라는 것을 실행할 수 있는데, 메타 쿼리를 이용하면 하나 또는 여러 메타 필드를 토대로 포스트를 질의하고 특정 값과 일치하는 값을 포함한 포스트를 반환할 수 있습니다. 실행 결과는 컬렉션이며 루프를 통해 순회할 수 있습니다.

예를 들어, "author_name"이라는 필드가 있고, author_name 필드의 값이 "J.R.R. Tolkien"인 모든 포스트를 반환하고 싶다고 해봅시다. WP_Query를 이용하면 이를 손쉽게 처리할 수 있습니다(참고로 이 연재 글의 네 번째 글에서 이를 자세히 살펴볼 예정입니다).

포스트뿐만이 아닙니다!

메타 데이터를 가진 데이터 유형으로 포스트만 있는 것은 아닙니다. 예를 들어, 사용자 프로필에서 이용할 수 있는 필드를 모두 아십니까? 그러한 필드는 모두 메타 필드이고, wp_postmeta 테이블이 아닌 wp_usermeta 테이블에 저장됩니다.

결과적으로 사용자 메타 정보에 대한 특별한 함수와 클래스가 있습니다. get_user_meta()get_author_meta 함수는 사용자에 대한 포스트 메타를 가져오는 것에 해당하는 함수입니다. WP_Query의 사용자 버전에 해당하는 WP_User_Query도 있습니다.

객체 vs. 배열

get_post_meta() 같은 함수를 이용해 하나 이상의 필드를 반환할 경우 다차원 배열(multi-dimensional array)이라는 것을 얻게 됩니다. 다차원 배열은 배열의 배열로도 알려져 있습니다. 다차원 배열 안의 각 배열도 다차원 배열일 수 있습니다.

헷갈리시나요? 걱정하지 않으셔도 됩니다! 이 연재 글에서는 원하는 인덱스로 찾아가기 위해 다차원 배열을 읽는 방법도 다룰 예정입니다.

마지막으로, 앞에서도 언급했듯이 포스트에 관한 정보를 구하는 또 다른 방법은 WP_Query를 이용하는 것입니다. WP_Query 클래스를 사용할 경우 여러분은 이른바 객체 지향 PHP라는 것을 사용하는 셈이고, 배열과는 다른 것이 반환됩니다. 바로 객체(object)라는 것입니다.

어떤 점에서 보면 객체는 정보의 배열을 담고 있다는 점에서 배열과 비슷합니다. 하지만 객체를 이용하면 클래스에서 제공하는 함수를 사용할 수 있습니다. 이것은 WP_Query 객체를 이용해 메타 필드의 값을 반환할 수 있을뿐더러 WP_Query의 내부 메서드, 이를테면 가장 자주 사용되는 the_post()도 사용할 수 있다는 뜻입니다.

다음 글에서는...

지금까지 다양한 유형의 메타데이터를 비롯해 그러한 메타 데이터가 어떻게 저장되고 표현될 수 있는지, 그리고 어떻게 가져올 수 있는지 살펴봤습니다.

이 연재 글을 계속 진행하는 과정에서 각 메타 데이터 테이블과 연관 API, 그리고 프로젝트에 기능과 유연함을 가져오기 위해 그것들을 어떻게 활용할 수 있는지 훨씬 더 자세히 들여다볼 예정입니다.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.