티스토리 뷰
Wordpress로 개발한 HTML 화면에서 비동기적으로 DB 서버와 통신하려면 restful api가 필요합니다. 이를 위해 저희가 필요로하는 데이터를 반환하는 endpoint를 php로 개발해야합니다.
워드프레스에서 php를 개발하는 여러가지 방법이 있습니다만 워드프레스에서는 플러그인이나 테마 파일을 직접 파일 수정하는 것을 권장하지 않습니다. 이유는 차후에 플러그인 업데이트를 대비와 잘못된 소스코드 수정을 막기 위해서 입니다.
functions.php 에 사용자 정의 함수를 추가하여 사용하는 것을 권장합니다. 여기서 restful endpoint를 추가할 수 있습니다. 한가지 단점은 wp_get_current_user()
을 사용하여 로그인한 사용자 정보를 가져오지 못합니다. 사용자 인증을 사용하려면 rest api handbook 을 사용하여 개발할 수 있습니다. 저는 일단 인증없이 사용해보겠습니다.
제가 사용하는 테마는 hestia-child 로 wp-content\themes\hestia-child
이 경로에 functions.php 을 수정하여 endpoint 를 개발하였습니다. 다음은 endpoint 를 추가하는 code 입니다.
add_action( 'rest_api_init', function () {
register_rest_route( 'khphub/v1', '/support/', array(
'methods' => 'GET',
'callback' => 'tickets'
));
register_rest_route( 'khphub/v1', '/support/', array(
'methods' => 'POST',
'callback' => 'create_ticket'
));
... // 다른 라우터들
});
위에 add_action
이란 함수가 있습니다. 워드프레스의 Hook 기능을 활용하는 합수입니다. rest_api_init event
에 다음 함수를 추가하라는 의미입니다.
Hook 기능은 여러 프로그래밍에서 사용되어집니다. 예를 들어 Github repository 설정에 webhook 이라는 기능이 있는데, 이 것은 특정 이벤트(ex. push, etc)가 발생하였을때 지정한 url 로 post request 를 보내는 기능입니다.
register_rest_route
로 endpoint url, http method, callback function 을 정의합니다. 위와 같이 정의 하였을때는 localhost/wp-json/khphub/v1/support?id=1 로 GET method request 를 하였을때 tickets 함수가 실행됩니다. 이 함수 안에서 db 를 조회하여 결과를 반환해야합니다.
function tickets($request_data) {
global $wpdb;
$parameters = $request_data->get_params();
$sql = "select name from members where id = {$parameters[id]}";
return $wpdb->get_results($sql);
}
'etc' 카테고리의 다른 글
Ethereum 토큰(가상화폐) 만들기-테스트넷 (0) | 2019.04.08 |
---|---|
Windows Dos 의 유용한 명령어(Vista 이상) (0) | 2019.03.08 |
PHP에 Google OTP Authentication 적용 (1) | 2018.06.15 |
bower-installer 사용법 (0) | 2017.10.27 |
Useful JavaScript Library(1) (1) | 2017.10.12 |