WordPressでサイトを運営していると、
- 「外部サービスのデータを取り込みたい」
- 「自作アプリとWordPressをつなげたい」
- 「もっと効率よく自動化できないかな?」
そんな場面に必ず登場するのが API(Application Programming Interface) です。
特にWordPressには標準で「REST API」が搭載されており、投稿やページデータを外部アプリから操作したり、逆にWordPressから外部APIを呼び出したりできます。
これを理解すれば、プラグインに頼らず柔軟な機能追加や自動化 が可能になります。
本記事では、初心者でもすぐに実装できるように、WordPressでのAPI活用を基礎から応用まで体系的に解説します。
コード例も豊富に用意しているので、記事を読みながら試していけば、実際に自分のサイトでAPIを使いこなせるようになります。
| 📘 『AI時代のテクニカルSEOの教科書』無料公開中! |
|---|
| AI要約・ゼロクリック検索・構造化データ・インデックス管理… 「検索流入が減った」と感じている方にこそ読んでほしい、最新SEO戦略を体系的にまとめた1冊です。 ✔️ AI時代のSEOの本質とは? ✔️ 今すぐできるテクニカル改善とは? ✔️ Googleに拾われるサイト構造とは? 👉 今すぐダウンロードして、SEOの“次の一手”を見つけてください。 |
WordPressでAPIを実装するとは?
WordPressにおけるAPI実装とは、外部システムとやり取りするための仕組みを導入することです。
APIは「アプリケーション同士をつなぐ窓口」であり、これを活用することでWordPressは単なるブログCMSではなく、柔軟なアプリケーション基盤へと進化します。
WordPressのデータを外部から操作する場合
WordPressには標準で「REST API」が搭載されており、投稿や固定ページのデータを外部から取得・更新できます。
例えば以下のURLにアクセスすると、記事データをJSON形式で取得できます。
https://example.com/wp-json/wp/v2/posts
この仕組みを使えば、モバイルアプリやフロントエンドフレームワーク(React・Vueなど)からWordPressのデータを呼び出し、ヘッドレスCMSとして運用することも可能です。
WordPressから外部サービスにアクセスする場合
逆に、WordPressから外部のAPIを呼び出すことも可能です。
例えば天気予報APIを使って「今日の天気」をサイトに表示したり、Slack APIを使って「記事が公開されたらチームに通知する」といった処理を自動化できます。
WordPressには wp_remote_get() や wp_remote_post() などの関数が備わっており、これらを使えば外部サービスとシンプルに連携できます。
API実装のメリット
WordPressにAPIを実装する最大の利点は、自由度の高さです。
プラグインに頼らなくても機能を追加でき、外部サービスとの連携によって自動化や効率化が実現できます。
たとえば…
- プラグインでは実現できない独自機能を追加できる
- 業務フローを自動化して工数を削減できる
- ヘッドレスCMS化してモダンなUI/UXを提供できる
APIを理解して使いこなせるようになると、WordPressを単なるCMSではなく「システムの中核」として活用できるようになります。
WordPressで利用できる主なAPIの種類
WordPressには「REST API」だけでなく、開発や運用を助けるためのさまざまなAPIが用意されています。
これらを理解しておくと、サイトに新しい機能を追加したり、外部サービスと柔軟に連携したりする際に役立ちます。
Takumaここでは、特によく使われるAPIを中心に紹介します。
REST API
もっとも有名なのが、WordPress REST APIです。
投稿や固定ページ、ユーザー情報などにアクセスでき、外部アプリケーションからWordPressを操作できます。
URL形式でデータを取得できるのが特徴で、例えば /wp-json/wp/v2/posts にアクセスすれば記事一覧をJSON形式で取得可能です。
ヘッドレスCMSを実現する際には、欠かせない存在です。
HTTP API
外部サービスと連携する場合に便利なのが、HTTP APIです。
wp_remote_get() や wp_remote_post() といった関数を使うことで、WordPressから外部APIにリクエストを送り、データを取得したり送信したりできます。
例えば、天気予報APIや決済サービスAPIと接続するのに活用されます。
Options APIとTransients API
サイトの設定値や一時的なデータを扱うのが、Options APIとTransients APIです。
Options APIはデータベースに設定値を保存・取得するための仕組みで、APIキーやユーザー設定を管理する際に使います。
一方でTransients APIは、有効期限付きでデータを保存できるため、外部APIのレスポンスをキャッシュするのに最適です。
キャッシュを導入することで、APIリクエストの回数を減らし、パフォーマンスを改善できます。
Plugin API
WordPressの拡張性を支えているのが、Plugin APIです。
アクションフックやフィルターフックを利用して、既存の処理に割り込んだり動作を変更したりできます。
API連携を行うプラグインを開発する際には、必ず活用することになる基本の仕組みです。
その他のAPI
この他にも、開発の場面ではさまざまなAPIが用意されています。
| 項目 | 詳細 |
|---|---|
| Settings API | 管理画面に独自の設定ページを追加する |
| Widgets API | オリジナルのウィジェットを作成する |
| Database API | データベースとやり取りする安全な方法を提供する |
こうしたAPIを組み合わせて使うことで、WordPressの可能性を大きく広げることができます。
WordPress REST APIの基本と使い方
WordPress REST APIは、WordPressに保存されているコンテンツや設定に「URLを通じてアクセス」できる仕組みです。
標準機能としてWordPress 4.7以降に搭載されているため、追加のプラグインを入れなくてもすぐに利用できます。
例えば、サイトURLの末尾に /wp-json/ を付けてアクセスすると、利用可能なエンドポイントの一覧が表示されます。
https://example.com/wp-json/
この仕組みを使えば、記事一覧を外部アプリに表示したり、新しい投稿を外部サービスから作成したりすることが可能です。



ここでは基本となる操作を順番に見ていきましょう。
- 公開データ(記事や固定ページ)は認証なしでも取得可能
- 投稿の作成・更新・削除には必ず認証が必要
- 1回のリクエストで取得できる最大件数は100件まで(それ以上はページネーションが必要)
- サイトパフォーマンスへの影響を考え、頻繁なアクセスが想定される場合はキャッシュを活用する
投稿データを取得する(GET)
最もシンプルな利用例が「GETリクエスト」です。
WordPressの投稿データを取得する場合は、以下のようなURLにアクセスします。
https://example.com/wp-json/wp/v2/posts
ブラウザやcURLコマンド、JavaScriptのfetch関数を使ってアクセスすれば、JSON形式で記事データが返ってきます。
クエリパラメータを使うことで、並び順や件数を指定することもできます。
例:最新5件の記事を取得する
https://example.com/wp-json/wp/v2/posts?per_page=5&orderby=date&order=desc
投稿を作成する(POST)
記事の作成は「POSTリクエスト」で行います。
これは認証が必要なので、ログインユーザーの権限を使うか、OAuth・Basic認証などを設定してからリクエストします。
POST https://example.com/wp-json/wp/v2/posts
送信データの例
{
"title": "新しい記事のタイトル",
"content": "ここに本文を入力します",
"status": "publish"
}
投稿を更新する(PUT/PATCH)
既存の記事を編集したい場合は、記事IDを指定して「PUT」または「PATCH」を使います。
PUT https://example.com/wp-json/wp/v2/posts/123
送信データの例
{
"title": "タイトルを更新しました",
"status": "draft"
}
これで記事ID「123」のタイトルが更新され、公開状態が下書きに変更されます。
投稿を削除する(DELETE)
不要になった記事を削除する場合は、「DELETEリクエスト」を送ります。
DELETE https://example.com/wp-json/wp/v2/posts/123
デフォルトでは「ゴミ箱」に移動するだけですが、完全に削除したい場合は force=true を付与します。
DELETE https://example.com/wp-json/wp/v2/posts/123?force=true
カスタムエンドポイントの作成方法
WordPress REST APIにはデフォルトで
- 「投稿」
- 「ページ」
- 「ユーザー」
などのエンドポイントが用意されています。
しかし、開発を進めていくと「独自のデータを返すAPIが欲しい」と感じる場面が出てきます。
そんなときに活用できるのが「カスタムエンドポイント」です。
カスタムエンドポイントを作成することで、たとえば「お問い合わせフォームの送信データを一覧表示するAPI」や「特定のカテゴリの記事だけを取得するAPI」を用意できます。
基本の仕組み
カスタムエンドポイントは、functions.php もしくは独自プラグイン内で register_rest_route() 関数を使って定義します。
以下は「/wp-json/myplugin/v1/message」というエンドポイントを作り、固定のメッセージを返す最もシンプルな例です。
add_action('rest_api_init', function () {
register_rest_route('myplugin/v1', '/message', [
'methods' => 'GET',
'callback' => 'myplugin_get_message',
]);
});
function myplugin_get_message() {
return ['message' => 'Hello, this is my custom API endpoint!'];
}
このコードを追加すると、ブラウザで以下のURLにアクセスしたときにJSONデータが返ってきます。
https://example.com/wp-json/myplugin/v1/message
返却結果
{
"message": "Hello, this is my custom API endpoint!"
}
データベースから情報を返す例
もう少し実用的な例として、カスタム投稿タイプ「form_submission」に保存されたデータを返すAPIを考えてみましょう。
add_action('rest_api_init', function () {
register_rest_route('myplugin/v1', '/submissions', [
'methods' => 'GET',
'callback' => 'myplugin_get_submissions',
]);
});
function myplugin_get_submissions() {
$args = [
'post_type' => 'form_submission',
'posts_per_page' => -1,
];
$posts = get_posts($args);
$data = [];
foreach ($posts as $post) {
$data[] = [
'id' => $post->ID,
'title' => $post->post_title,
'content' => $post->post_content,
'date' => $post->post_date,
];
}
return $data;
}
これで /wp-json/myplugin/v1/submissions にアクセスすると、フォーム送信データが一覧で取得できます。
カスタムエンドポイント作成のポイント
| 項目 | 詳細 |
|---|---|
| 命名規則 | 名前空間(例:myplugin/v1)をつけることで、他のプラグインと競合しにくくなる |
| 権限管理 | 公開してはいけない情報は permission_callback を設定し、権限を持つユーザーだけが利用できるようにする |
| 返却形式 | レスポンスは必ずJSON形式に統一することで、外部サービスとやり取りしやすくなる |
外部APIをWordPressに統合する方法
WordPressの魅力のひとつは、外部サービスと簡単に連携できる点です。
天気予報やSNS通知、決済サービスなどをAPI経由で組み込むことで、プラグインに頼らなくても独自の機能をサイトに追加できます。



ここでは基本的な実装手順を整理してみましょう。
HTTP APIを使った外部APIへのリクエスト
WordPressには wp_remote_get() や wp_remote_post() などの関数が用意されており、これを利用することで外部APIにアクセスできます。
例えば「OpenWeatherMap API」を使って東京の天気を取得する場合は、以下のように記述します。
function get_tokyo_weather() {
$api_key = 'YOUR_API_KEY';
$endpoint = 'https://api.openweathermap.org/data/2.5/weather?q=Tokyo&appid=' . $api_key;
$response = wp_remote_get($endpoint);
if (is_wp_error($response)) {
return 'APIエラーが発生しました';
}
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
return $data['weather'][0]['description']; // 天気の概要を返す
}
この関数をテーマ内で呼び出せば、ページ上に「晴れ」「曇り」などの天気情報を表示できます。
POSTリクエストで外部サービスに通知する
外部サービスへ情報を送る場合は wp_remote_post() を使用します。
例えば記事が公開されたらSlackに通知を送るコードは、以下のようになります。
function notify_slack_on_publish($post_id) {
if (get_post_status($post_id) !== 'publish') return;
$webhook_url = 'YOUR_SLACK_WEBHOOK_URL';
$post = get_post($post_id);
$message = [
'text' => '新しい記事が公開されました: ' . $post->post_title,
];
wp_remote_post($webhook_url, [
'body' => json_encode($message),
'headers' => ['Content-Type' => 'application/json'],
]);
}
add_action('publish_post', 'notify_slack_on_publish');
これを実装すれば、新しい記事が公開されるたびにSlackへ自動通知が送信されます。
キャッシュを活用して安定化
外部APIは呼び出し回数に制限(レートリミット)がある場合が多いため、毎回リアルタイムにアクセスするとエラーになったり表示が遅くなったりする可能性があります。
そのため、Transients API を使ってレスポンスをキャッシュしておくのが実践的です。
function get_cached_weather() {
$cache_key = 'tokyo_weather';
$weather = get_transient($cache_key);
if ($weather === false) {
$weather = get_tokyo_weather(); // APIから取得
set_transient($cache_key, $weather, HOUR_IN_SECONDS); // 1時間キャッシュ
}
return $weather;
}
こうすることで、外部APIへのアクセス頻度を減らし、安定した表示が可能になります。
- 独自機能を柔軟に追加できる
- プラグインに頼らず軽量に実装できる
- サイトを自動化し、管理コストを削減できる
ただし、APIキーの管理(wp-config.phpに記述するなど)や、通信のセキュリティ(HTTPS必須)には注意が必要です。
API実装のベストプラクティス(セキュリティ・パフォーマンス対策)
APIをWordPressに実装すると、サイトの機能は大きく広がります。
一方で、セキュリティの脆弱性やパフォーマンス低下を招くリスクもあります。
特に外部サービスとやり取りする場合は「安全に、かつ効率的に」実装することが不可欠です。
ここでは必ず押さえておきたいベストプラクティスを整理します。
- APIキーは安全に保管する
- HTTPSで暗号化通信を行う
- 失敗を想定したエラーハンドリングを実装する
- レスポンスはキャッシュして効率化する
- 入力データは必ず検証する
- サーバー負荷を意識して設計する
認証情報の安全な管理
APIキーやシークレットキーは、絶対にコード内に直接書き込まないようにしましょう。
公開リポジトリにアップロードされると、不正利用の原因になります。
実践的な方法としては
wp-config.phpに定義する- サーバー環境変数に保存する
- Options APIに保存する場合は暗号化を検討する
こうすることで、第三者に漏洩するリスクを大幅に減らせます。
HTTPS通信を徹底する
APIの通信には、必ずHTTPSを利用してください。
暗号化されていないHTTP接続では、認証情報やユーザーデータが盗聴される危険があります。
特に、決済や個人情報を扱うサービスと連携する場合は必須です。
エラーハンドリングの実装
API通信は、必ず成功するとは限りません。
タイムアウト、認証エラー、レート制限など、さまざまな理由で失敗する可能性があります。
失敗時に「白い画面」や「エラーコードだけ」が表示されないよう、
is_wp_error()でエラーチェックをする- ユーザー向けには「再度お試しください」などわかりやすいメッセージを出す
- 開発者向けには
error_log()で詳細を残す
といった工夫が必要です。
レスポンスのキャッシュ
外部APIを頻繁に呼び出すと、サイトの表示速度が低下したり、利用制限に引っかかる可能性があります。
そのため、Transients API を使ってレスポンスをキャッシュしておくことを強く推奨します。
キャッシュ時間は、データの更新頻度に合わせて調整しましょう(例:天気情報は1時間、ニュース記事は10分など)。
入力データの検証
外部から受け取ったデータをそのまま処理すると、XSS(クロスサイトスクリプティング)やSQLインジェクションのリスクが生じます。
WordPressには sanitize_text_field() や esc_html() などのサニタイズ関数が用意されているため、必ず活用しましょう。
サーバー負荷の軽減
大量のAPIリクエストが同時に走ると、サーバーに大きな負荷がかかります。
以下のような工夫を取り入れると安心です。
- バッチ処理やCronを活用してバックグラウンドで実行する
- 不要なリクエストをまとめる
- 必要なデータだけを取得する(GraphQLやクエリパラメータで絞り込む)
実際のユースケース例(天気予報・Slack通知・ECサイト連携など)
WordPressにAPIを実装すると、単なるブログから「便利なアプリケーション」へと進化させることができます。
ここでは代表的なユースケースを紹介し、実際にどのように応用できるのかをイメージしてみましょう。
天気予報を表示するサイト
旅行ブログや地域情報サイトでは、「今の天気」や「週間予報」を表示できると便利です。
OpenWeatherMap APIを使えば、以下のようにして現在の天気を取得し、サイトに埋め込むことができます。
function get_weather($city = 'Tokyo') {
$api_key = 'YOUR_API_KEY';
$endpoint = "https://api.openweathermap.org/data/2.5/weather?q={$city}&appid={$api_key}&lang=ja";
$response = wp_remote_get($endpoint);
if (is_wp_error($response)) return 'データ取得に失敗しました';
$data = json_decode(wp_remote_retrieve_body($response), true);
return $data['weather'][0]['description'] ?? '情報なし';
}
この関数をテーマ内で呼び出せば、「東京の天気: 晴れ」といった情報を表示できます。



地域ポータルサイトなどで重宝されるでしょう。
Slack通知でチームに共有
複数人で記事を更新しているサイトでは、新しい投稿が公開されたときにSlackへ自動通知すると便利です。
以下のコードを実装すれば、記事公開と同時にチームに通知が送信されます。
function notify_slack($post_id) {
if (get_post_status($post_id) !== 'publish') return;
$url = 'YOUR_SLACK_WEBHOOK_URL';
$post = get_post($post_id);
$message = [
'text' => "新しい記事が公開されました: {$post->post_title}\n" . get_permalink($post_id)
];
wp_remote_post($url, [
'body' => json_encode($message),
'headers' => ['Content-Type' => 'application/json'],
]);
}
add_action('publish_post', 'notify_slack');



これによりチーム全体が最新の動きを把握しやすくなります。
ECサイトでの在庫管理連携
WooCommerceを使ったECサイトでは、在庫情報を外部システムと同期したいケースが多いです。
例えば、倉庫システムが提供する在庫APIと連携すれば、「商品ページの在庫数を自動更新」できます。
function update_stock_from_api($product_id) {
$response = wp_remote_get('https://api.example.com/stock/' . $product_id);
if (is_wp_error($response)) return;
$data = json_decode(wp_remote_retrieve_body($response), true);
$stock = $data['stock'] ?? 0;
wc_update_product_stock($product_id, $stock);
}
これをCronと組み合わせれば、1時間ごとに自動更新が可能になります。
結果として「在庫切れによるトラブル防止」につながります。
その他の応用アイデア
| 項目 | 詳細 |
|---|---|
| メールマーケティング | Mailchimp APIと連携し、新規ユーザーを自動的にリストに追加する |
| Google Analytics連携 | API経由でアクセス数を取得し、管理画面にダッシュボードを作る |
| チャットボットとの連携 | LINEやMessenger APIを利用し、サイト訪問者に自動応答を行う |



こうした事例を通じてわかるのは「APIを使うとWordPressは単なるCMSではなく、業務効率化や集客に役立つシステムへと進化する」という点です。
WordPressでAPIを実装してサイトの可能性を広げよう!
WordPressでAPIを実装することは、単に外部サービスと連携するための技術ではありません。
それは「WordPressをCMSからアプリケーション基盤へと進化させる第一歩」と言えます。
今回紹介したように、APIを活用すれば
- 外部サービスのデータを取り込み、サイトをより便利にできる
- 記事公開や在庫更新などを自動化し、作業効率を大幅に改善できる
- ユーザー体験を向上させ、競合との差別化につながる
といったメリットがあります。
特に初心者の方は、まず「小さな実装」から試すのがおすすめです。
天気予報を表示する、Slackに通知を送る、といった身近な例ならすぐに効果を実感できます。
その後、WooCommerceや外部システム連携などへ応用すれば、ビジネスに直結する機能拡張も可能です。
重要なのは、セキュリティとパフォーマンスに配慮しながら堅実に実装すること。APIキーの安全管理、キャッシュの活用、エラーハンドリングなどを徹底すれば、安心してAPIを運用できます。
WordPressは世界中で利用されるプラットフォームですが、その可能性はAPIを実装することでさらに広がります。



あなたのサイトでもぜひ一歩踏み出して、API連携の力を体験してみてください。
| 📘 『AI時代のテクニカルSEOの教科書』無料公開中! |
|---|
| AI要約・ゼロクリック検索・構造化データ・インデックス管理… 「検索流入が減った」と感じている方にこそ読んでほしい、最新SEO戦略を体系的にまとめた1冊です。 ✔️ AI時代のSEOの本質とは? ✔️ 今すぐできるテクニカル改善とは? ✔️ Googleに拾われるサイト構造とは? 👉 今すぐダウンロードして、SEOの“次の一手”を見つけてください。 |











