Home IT/WEB advanced custom fields 에서 만든 custom field 를 wp rest api 에...

advanced custom fields 에서 만든 custom field 를 wp rest api 에 추가하는 방법

advanced custom fields 에서 만든 custom field 를 wp rest api 에 추가하는 방법에 대해서 알아보겠습니다. ACF to REST API 라는 플러그인을 설치하면 쉽게 되지만 플로그인 하나라도 줄이면 REST API 의 응답속도를 개선 시킬 수 있으니 되도록이면 사용안하는 방법으로 개발하면 좋을 거 같습니다.

inline ad

아래 구문의 rest_prepare_work 에 work는 자신이 생성한 커스텀포스트타입으로 변경하시면 됩니다. 이렇게 function.php 에 추가해주시면 ACF(advanced custom fields)에서 생성한 커스텀포스트필드를 추가할 수 있습니다.

add_filter("rest_prepare_work", function($post) {
    $_data = $post->data;
    $fields = get_fields($_data['id']);

    foreach ($fields as $key => $value){
        $_data[$key] = get_field($key, $_data['id']);
    }
    $post->data = $_data;
    return $post;
});

아래 코드처럼 키를 생성하고 원하는 값을 추가해줄 수도 있습니다.

add_filter("rest_prepare_work", 'acf_rest_prepare_post', 10, 3);
function acf_rest_prepare_post($response, $post, $request) {
    $response->data['name'] = array();
    $response->data['year'] = array();
    $response->data['year'] = get_field('year', $post->ID);
    $response->data['name'] =  get_field('name', $post->ID);
    return $response;
}

추가해준 필드를 rest api 로 쿼리 요청시 원하는 값을 받으려면 아래와 같이 코드를 추가해주면 name으로 입력했던 값을 조회할 수 있습니다. 아래와 같은 주소로 rest api 를 요청할 수 있습니다.

http://site url/index.php/wp-json/wp/v2/work?name=홍길동

add_filter('rest_work_query', function ($args, $request) {
    $name = $request->get_param('name');

    if (!empty($name)) {
        $args['meta_query'] = array(
            'relation' => 'AND',
            array(
                'key' => 'name',
                'value' => $name,
                'compare' => 'RLIKE'
            )
        );
    }
    return $args;
}, 10, 2);

RECENT POSTS

개미를 퇴치하는 자연적인 방법 중 가장 효과적인 방법 6가지

개미를 자연스럽게 퇴치하는 여러 가지 방법 중 가장 효과적인 몇 가지 방법을 소개하겠습니다. 이 방법들은 모두 집에서 쉽게 구할 수 있는 재료를 사용하여 개미를...

부심장을 지키는 올바른 식단: 먹으면 좋은 음식과 나쁜 음식

부정맥 환자는 심장 건강을 유지하고 증상을 관리하기 위해 특정 음식을 피하고, 심장 건강에 좋은 음식을 섭취하는 것이 중요합니다. 다음은 부정맥 환자가 피해야 나쁜 음식과...

부정맥 arrhythmia: 정의, 원인, 증상, 진단 및 검사, 치료 방법, 예방 방법, 주의사항, 생활 습관

정의 부정맥(Arrhythmia)은 심장의 정상적인 리듬이 불규칙해지거나 비정상적으로 빨라지거나 느려지는 상태를 말합니다. 이는 심장의 전기적 신호 전달에 문제가 생겨 발생하며, 다양한 원인과 증상을 가지고 있습니다. 원인 부정맥의 원인은...

폐렴 pneumonia: 정의, 원인, 증상, 진단 및 검사, 치료 방법, 예방 방법, 주의사항, 생활 습관

정의 폐렴(Pneumonia)은 폐의 폐포(air sacs)에 염증이 생겨 액체나 고름이 차는 질환입니다. 주로 세균, 바이러스, 곰팡이 등의 감염에 의해 발생하며, 심한 경우 생명을 위협할 수 있습니다. 원인 폐렴의...