STAGE 8 · Lv.43
외부 서비스 API 연동
Telegram Bot API, Slack Webhooks, Discord, Google Sheets API를 WordPress에서 직접 연동하는 방법을 배웁니다.
WordPress에서 외부 API 호출하기
wp_remote_post()와 wp_remote_get()
WordPress에서 외부 API를 호출할 때는 PHP의 cURL 함수를 직접 사용하는 대신, WordPress의 HTTP API 함수를 사용하는 것이 권장됩니다. 이 함수들은 다양한 환경에서의 호환성과 보안을 보장합니다.
주요 함수:
wp_remote_get($url, $args) - GET 요청
wp_remote_post($url, $args) - POST 요청
wp_remote_request($url, $args) - 모든 HTTP 메서드
응답 처리 함수:
wp_remote_retrieve_body($response) - 응답 본문
wp_remote_retrieve_response_code($response) - HTTP 상태 코드
wp_remote_retrieve_headers($response) - 응답 헤더
is_wp_error($response) - 에러 확인
$response = wp_remote_post($url, [
'headers' => [
'Content-Type' => 'application/json',
'Authorization' => 'Bearer ' . $token
],
'body' => json_encode($data),
'timeout' => 30
]);
if (is_wp_error($response)) {
$error_message = $response->get_error_message();
error_log('API Error: ' . $error_message);
return false;
}
$status_code = wp_remote_retrieve_response_code(
$response);
if ($status_code !== 200) {
error_log('API returned: ' . $status_code);
return false;
}
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
Telegram Bot API 연동
Telegram Bot API 개요
Telegram Bot API는 무료이며 사용이 간편합니다. 별도의 OAuth나 앱 등록 없이 Bot Token만으로 메시지를 전송할 수 있어 WordPress 알림 시스템으로 매우 적합합니다.
API 기본 URL: https://api.telegram.org/bot{TOKEN}/
주요 메서드:
sendMessage - 텍스트 메시지 전송
sendPhoto - 이미지 전송
sendDocument - 파일 전송
sendLocation - 위치 전송
getUpdates - 봇에 온 메시지 확인
getMe - 봇 정보 확인
function send_telegram_message($chat_id, $message) {
$token = '123456789:ABCdefGHIjklMNOpqr';
$url = "https://api.telegram.org/bot{$token}/sendMessage";
$response = wp_remote_post($url, [
'body' => [
'chat_id' => $chat_id,
'text' => $message,
'parse_mode' => 'HTML',
'disable_web_page_preview' => false
]
]);
return !is_wp_error($response);
}
add_action('publish_post',
function($post_id) {
$post = get_post($post_id);
$url = get_permalink($post_id);
$message = "<b>📰 새 글 발행</b>\n\n"
. "<b>" . $post->post_title . "</b>\n"
. $url . "\n\n"
. "작성: " . get_the_author_meta(
'display_name', $post->post_author);
send_telegram_message('-100123456789',
$message);
});
Telegram 고급 기능: 인라인 키보드
Telegram 메시지에 클릭 가능한 버튼(인라인 키보드)을 추가하면 더 인터랙티브한 알림을 만들 수 있습니다.
function send_telegram_with_buttons(
$chat_id, $message, $url) {
$token = 'YOUR_BOT_TOKEN';
$api_url = "https://api.telegram.org/bot{$token}/sendMessage";
$keyboard = [
'inline_keyboard' => [
[
['text' => '📄 글 읽기',
'url' => $url],
['text' => '💬 공유하기',
'url' => 'https://t.me/share/url?url='
. urlencode($url)]
]
]
];
return wp_remote_post($api_url, [
'body' => [
'chat_id' => $chat_id,
'text' => $message,
'parse_mode' => 'HTML',
'reply_markup' => json_encode(
$keyboard)
]
]);
}