워드프레스 restapi v2에서 기본 필드 외 사용자정의 필드를 추가하고 가져오는 방법이다.
현재 사용중인 테마 디렉터리안에 functions.php 를 열고 코드를 추가하자.
[code]
// 포스팅할때 postmeta 를 추가한다.
add_action(“rest_insert_post”, function ($post, $request, $creating) {
$metas = $request->get_param(“meta”);
if (is_array($metas)) {
foreach ($metas as $name => $value) {
update_post_meta($post->ID, $name, $value);
}
}
}, 10, 3);
// 포스팅 조회할때 postmeta 를 추가하여 돌려준다. 여기서는 임의의 메타 ‘foo’ 를 추가한다.
add_action(“rest_prepare_post”, function ($data, $post, $context) {
$meta = get_post_meta( $post->ID, ‘foo’, true);
$data->data[‘meta’] = $meta;
return $data;
}, 10, 3);
// 메타로 검색하기 지원
// 호출방법: http://{사이트주소}/wp-json/wp/v2/posts/?meta_key={메타키}&meta_value={메타값}&status= // status 상관없이 하려면 변수명은 꼭 줘야 한다.
// meta_query 는 sql 조건식을 array형태로 지원하는 것인데 자세한 것은 더 알아봐야 한다.
add_filter (“rest_post_query” , function ( $args, $request ) {
$args += array(
‘meta_key’ => $request[‘meta_key’],
‘meta_value’ => $request[‘meta_value’],
‘meta_query’ => $request[‘meta_query’],
);
return $args;
}, 99, 2);
[/code]
포스팅할때 데이터
[code]
{
“title”: “사용자필드추가포스팅”,
“content”: “사용자 필드를 추가하여 포스팅합니다.”,
“meta”: {
“foo”: “foo라는 변수에 값”
}
}
[/code]
임의의 변수 foo 에 값을 추가하고 조회할때 기본데이터와 함께 출력해준다.
– 출력결과 –
[code]
…
“title”: {
“raw”: “사용자필드추가포스팅”,
“rendered”: “사용자필드추가포스팅”
},
“content”: {
“raw”: “사용자 필드를 추가하여 포스팅합니다.”,
“rendered”: “<p>사용자 필드를 추가하여 포스팅합니다.</p>\n”,
“protected”: false,
“block_version”: 0
},
“excerpt”: {
“raw”: “”,
“rendered”: “<p>사용자 필드를 추가하여 포스팅합니다.</p>\n”,
“protected”: false
},
“author”: 1,
“featured_media”: 0,
“comment_status”: “open”,
“ping_status”: “open”,
“sticky”: false,
“template”: “”,
“format”: “standard”,
“meta”: “foo라는 변수에 값”,
“categories”: [
1
],
“tags”: [],
…
[/code]