WordPress APIとは?使い方・連携方法・できない時の原因まで初心者向けに徹底解説
はじめに
WordPressでサイト運営をしていると、「外部サイトに記事一覧を表示したい」「スマホアプリとWordPressを連携したい」「投稿を自動化したい」「Next.jsやReactでヘッドレスCMSとして使いたい」といった場面があります。
そのときに重要になるのが、WordPress APIです。
WordPress APIを使うと、管理画面を開かなくても、外部のプログラムからWordPressの記事、固定ページ、カテゴリ、タグ、画像、ユーザー、コメントなどのデータを取得したり、条件によっては投稿・更新・削除したりできます。
特に現在よく使われるのが、WordPress REST APIです。WordPress REST APIは、WordPressサイトと外部アプリケーションがJSON形式でデータを送受信するための仕組みで、WordPress公式ドキュメントでも、テーマ、プラグイン、カスタムアプリケーションからWordPressのコンテンツを扱うためのインターフェースとして説明されています。WordPress Developer Resources
この記事では、初心者向けに「WordPress APIとは何か」から、基本的な使い方、投稿・更新方法、外部連携の例、使えないときの原因、安全に使うための注意点、カスタマイズ方法までわかりやすく解説します。
1. WordPress APIとは?初心者向けにわかりやすく解説
WordPress APIとは、簡単に言うとWordPressのデータや機能を外部から操作するための窓口です。
通常、WordPressで記事を作成したり画像をアップロードしたりする場合は、管理画面にログインして操作します。しかしAPIを使えば、外部サイト、スマホアプリ、自社システム、JavaScriptアプリ、業務ツールなどからWordPressのデータにアクセスできます。
たとえば、以下のようなことができます。
別サイトにWordPressの記事一覧を表示する
スマホアプリにWordPressの記事を表示する
外部システムからWordPressへ記事を自動投稿する
画像やファイルをAPI経由でアップロードする
Next.jsやReactでWordPressをヘッドレスCMSとして使う
Googleスプレッドシートや業務ツールと連携する
「ワードプレス api」と検索している人の多くは、WordPressのデータを外部で使いたい、または外部システムからWordPressを操作したいと考えているはずです。その中心になるのがWordPress REST APIです。
1-1. WordPress APIとは外部サービスとWordPressを連携する仕組み
APIは「Application Programming Interface」の略で、アプリケーション同士がやり取りするための接点です。
WordPress APIの場合、WordPressの中にある投稿、固定ページ、カテゴリ、タグ、メディア、ユーザー、コメントなどのデータを、外部のプログラムから取得・操作できるようにします。
たとえば、外部サイトから次のURLにアクセスすると、WordPressの投稿一覧をJSON形式で取得できます。
https://example.com/wp-json/wp/v2/posts
このように、特定のURLにアクセスすることでWordPressのデータを取得できる仕組みがWordPress APIです。
ブラウザでURLにアクセスしてデータを表示するだけでなく、JavaScript、PHP、Python、Google Apps Script、ノーコードツールなどから呼び出すこともできます。
1-2. WordPress REST APIとは?現在よく使われるWordPress API
WordPress APIと呼ばれるものには、広い意味ではPlugin API、Settings API、Options API、XML-RPC APIなども含まれます。
ただし、一般的に「WordPress APIを使って外部連携したい」と言う場合、多くはWordPress REST APIを指します。
WordPress REST APIは、HTTPリクエストを使ってWordPressのデータを取得・送信する仕組みです。レスポンスは主にJSON形式で返ってきます。WordPress公式のREST API Handbookでも、WordPress REST APIはWordPressサイトとアプリケーションがJSONオブジェクトを送受信するためのインターフェースと説明されています。WordPress Developer Resources
REST APIを使うと、以下のようなURLでデータにアクセスできます。
https://example.com/wp-json/wp/v2/posts
https://example.com/wp-json/wp/v2/pages
https://example.com/wp-json/wp/v2/categories
https://example.com/wp-json/wp/v2/tags
https://example.com/wp-json/wp/v2/media
WordPressの投稿やカテゴリを外部から取得したい場合は、まずREST APIを理解するのがおすすめです。
1-3. API・REST API・エンドポイントの違い
WordPress APIを理解するうえで、初心者がつまずきやすいのが「API」「REST API」「エンドポイント」という言葉の違いです。
APIは、アプリケーション同士がやり取りするための仕組み全体を指します。WordPressのデータを外部から使うための窓口、と考えるとわかりやすいです。
REST APIは、Web上でHTTPを使ってデータをやり取りするAPIの形式です。WordPress REST APIでは、GET、POST、PUT、PATCH、DELETEなどのHTTPメソッドを使ってデータを取得・作成・更新・削除します。
エンドポイントは、実際にアクセスするURLのことです。たとえば、投稿一覧を取得する以下のURLがエンドポイントです。
https://example.com/wp-json/wp/v2/posts
つまり、APIは仕組み全体、REST APIはWeb経由でやり取りするAPIの形式、エンドポイントは実際にアクセスするURL、と理解するとよいでしょう。
1-4. WordPress APIでできることの全体像
WordPress APIでは、主に以下のような操作ができます。
取得:投稿一覧、固定ページ、カテゴリ、タグ、メディア、コメントなどを取得
作成:新しい投稿、固定ページ、メディアなどを作成
更新:既存の記事タイトル、本文、ステータス、カテゴリなどを更新
削除:投稿、固定ページ、メディアなどを削除
連携:外部サイト、アプリ、業務システム、ノーコードツールと連携
拡張:カスタム投稿タイプ、カスタムフィールド、独自エンドポイントを追加
ただし、すべての操作が誰でも自由にできるわけではありません。公開済みの記事一覧を取得するだけなら認証なしで使える場合が多いですが、投稿の作成・更新・削除、非公開データの取得、ユーザー情報の取得などには認証が必要です。
2. WordPress APIを使うメリット
WordPress APIを使う最大のメリットは、WordPressを単なるブログやWebサイトの管理画面としてではなく、外部サービスと連携できるコンテンツ管理基盤として活用できる点です。
記事を外部に表示するだけでなく、業務効率化、システム連携、アプリ開発、ヘッドレスCMS化など、さまざまな用途に広げられます。
2-1. 投稿・固定ページ・メディアを外部から取得できる
WordPress APIを使うと、WordPress内の投稿、固定ページ、画像、カテゴリ、タグなどを外部から取得できます。
たとえば、コーポレートサイトとは別に採用サイトやサービスサイトを運営している場合でも、WordPressに登録したお知らせを別サイトに表示できます。
投稿一覧を取得するエンドポイントは次のようになります。WordPress公式の投稿エンドポイントでも、投稿一覧はGET /wp/v2/postsで取得できると説明されています。WordPress Developer Resources
https://example.com/wp-json/wp/v2/posts
固定ページの場合は次のようになります。
https://example.com/wp-json/wp/v2/pages
メディアの場合は次のようになります。メディア一覧はGET /wp/v2/mediaで取得できます。WordPress Developer Resources
https://example.com/wp-json/wp/v2/media
これにより、WordPressを記事管理の中心にしながら、表示側は別サイトや別アプリで自由に設計できます。
2-2. 外部アプリや自社システムと連携できる
WordPress APIは、外部アプリや自社システムとの連携にも役立ちます。
たとえば、社内の商品管理システムで登録した商品情報をWordPressに反映したり、予約システムの情報をWordPress側に表示したりできます。
また、会員サイト、ECサイト、CRM、MAツール、チャットボット、スマホアプリなどと連携することで、WordPressの活用範囲が広がります。
手作業でコピー&ペーストしていた情報更新をAPI連携に置き換えれば、入力ミスや更新漏れを減らすこともできます。
2-3. ヘッドレスCMSとしてWordPressを活用できる
WordPress APIを使うと、WordPressをヘッドレスCMSとして活用できます。
ヘッドレスCMSとは、コンテンツ管理機能と表示画面を分離したCMSのことです。WordPressの管理画面で記事を作成し、表示部分はNext.js、React、Vue.js、Nuxt、スマホアプリなどで作る構成です。
この場合、WordPressは記事や画像を管理するバックエンドとして使い、フロントエンド側がAPIを通じてデータを取得します。
ヘッドレスWordPressにすると、表示速度の最適化、デザインの自由度向上、複数チャネルへの配信、フロントエンド技術の柔軟な選択などが可能になります。
2-4. 業務効率化・自動投稿・データ管理に役立つ
WordPress APIは、業務効率化にも向いています。
たとえば、以下のような自動化ができます。
Googleスプレッドシートの内容をWordPressに投稿する
社内システムの商品情報をWordPressに反映する
RSSや外部データを取得して下書き記事を作成する
定期的に記事情報を取得してレポートを作成する
画像を自動アップロードして投稿に紐づける
特に大量の記事や商品情報を扱う場合、管理画面から1件ずつ更新するのは大変です。APIを使えば、プログラムやツールでまとめて処理できます。
3. WordPress APIでできること・できないこと
WordPress APIは便利ですが、何でも自由にできるわけではありません。
公開情報の取得は比較的簡単ですが、投稿作成・更新・削除などの操作には認証が必要です。また、サーバー設定、権限、プラグイン、テーマ、カスタム投稿タイプの設定によって、APIで取得できる情報が変わります。
ここでは、WordPress APIでできることと、できないことを整理します。
3-1. 投稿一覧・記事本文・カテゴリ・タグの取得
WordPress REST APIでは、投稿一覧や記事本文を取得できます。
投稿一覧の取得は次のエンドポイントです。
GET https://example.com/wp-json/wp/v2/posts
特定の記事を取得する場合は、投稿IDを指定します。
GET https://example.com/wp-json/wp/v2/posts/123
カテゴリ一覧は次のエンドポイントで取得できます。WordPress公式のカテゴリAPIでも、カテゴリ一覧はGET /wp/v2/categoriesで取得できると説明されています。WordPress Developer Resources
GET https://example.com/wp-json/wp/v2/categories
タグ一覧は次のエンドポイントです。タグ一覧はGET /wp/v2/tagsで取得できます。WordPress Developer Resources
GET https://example.com/wp-json/wp/v2/tags
これらは公開されているデータであれば、認証なしで取得できることが多いです。
3-2. 記事の作成・更新・削除
WordPress APIでは、記事の作成、更新、削除もできます。
ただし、これらの操作には基本的に認証が必要です。誰でも自由に記事を投稿できてしまうと危険なため、WordPressのユーザー権限に基づいて操作できる範囲が制限されます。
投稿を作成する場合は、次のようなリクエストを送ります。
POST https://example.com/wp-json/wp/v2/posts
投稿を更新する場合は、投稿IDを指定します。
POST https://example.com/wp-json/wp/v2/posts/123
投稿を削除する場合は、DELETEメソッドを使います。
DELETE https://example.com/wp-json/wp/v2/posts/123
実際には、Application PasswordsやCookie認証などを使って、認証情報を送信する必要があります。
3-3. 画像やファイルなどメディアの操作
WordPress APIでは、画像やPDFなどのメディアも扱えます。
メディア一覧を取得する場合は次のエンドポイントを使います。
GET https://example.com/wp-json/wp/v2/media
画像をアップロードする場合は、認証したうえでPOST /wp/v2/mediaにファイルを送信します。
POST https://example.com/wp-json/wp/v2/media
記事とアイキャッチ画像を紐づけたい場合は、まずメディアをアップロードしてメディアIDを取得し、そのIDを投稿作成時のfeatured_mediaに指定します。
JSON{
"title": "API投稿テスト",
"content": "本文です。",
"status": "draft",
"featured_media": 456
}
メディア操作は便利ですが、ファイルサイズ制限、MIMEタイプ、認証、サーバー設定の影響を受けやすいため、エラーが出た場合はアップロード上限やセキュリティ設定も確認しましょう。
3-4. ユーザー情報やコメント情報の取得
WordPress APIでは、ユーザー情報やコメント情報も取得できます。
コメント一覧は次のエンドポイントです。WordPress公式のコメントAPIでも、コメント一覧はGET /wp/v2/commentsで取得できると説明されています。WordPress Developer Resources
GET https://example.com/wp-json/wp/v2/comments
ユーザー情報は次のようなエンドポイントで扱います。
GET https://example.com/wp-json/wp/v2/users
GET https://example.com/wp-json/wp/v2/users/me
ただし、ユーザー情報はセキュリティやプライバシーに関わるため、取得できる内容や範囲が制限される場合があります。不要なユーザー情報をAPIで公開しないように注意が必要です。
3-5. 認証なしで使える範囲と認証が必要な範囲
WordPress APIには、認証なしで使える範囲と、認証が必要な範囲があります。
一般的に、公開済みの投稿一覧やカテゴリ一覧、タグ一覧などは認証なしで取得できることが多いです。
一方で、次のような操作には認証が必要です。
投稿の作成
投稿の更新
投稿の削除
非公開記事や下書き記事の取得
メディアのアップロード
ユーザー情報の詳細取得
管理者権限が必要な操作
WordPress REST APIの認証方法としては、Cookie認証、Application Passwords、OAuth、JWT認証プラグインなどがあります。外部システムから安全に接続する場合は、WordPress標準機能として利用できるApplication Passwordsがよく使われます。WordPress公式ドキュメントでも、Application PasswordsはWordPress 5.6以降に搭載され、HTTPS上のREST APIリクエストでBasic認証として利用できると説明されています。WordPress Developer Resources
3-6. WordPress APIだけではできないこと
WordPress APIは強力ですが、APIだけで何でも実現できるわけではありません。
たとえば、以下のようなことは標準のREST APIだけでは難しい場合があります。
テーマの見た目をそのまま外部サイトに再現する
プラグイン独自のデータをすべて自動的に取得する
高度な検索や複雑な条件の絞り込みを標準APIだけで行う
カスタムフィールドを設定なしですべて取得する
サーバー側で禁止されている操作をAPIで実行する
権限のないユーザーが管理者操作を行う
カスタム投稿タイプ、カスタムフィールド、プラグイン独自データをAPIで扱いたい場合は、show_in_restの設定、register_meta、独自エンドポイントの追加、プラグインの利用などが必要になることがあります。
4. WordPress REST APIの基本的な使い方
WordPress REST APIを使う基本は、エンドポイントURLにアクセスすることです。
まずはブラウザで以下のようなURLにアクセスしてみると、APIが有効か確認できます。
https://example.com/wp-json/
example.comの部分は、自分のWordPressサイトのドメインに置き換えてください。
JSON形式のデータが表示されれば、REST API自体は動作しています。
4-1. WordPress REST APIのURL形式
WordPress REST APIの基本URLは次の形式です。
https://example.com/wp-json/
WordPress標準の投稿、固定ページ、カテゴリ、タグ、メディアなどを扱う場合は、通常wp/v2というnamespaceを使います。
https://example.com/wp-json/wp/v2/
投稿一覧を取得する場合は、次のようになります。
https://example.com/wp-json/wp/v2/posts
固定ページなら次のようになります。
https://example.com/wp-json/wp/v2/pages
このように、/wp-json/wp/v2/の後ろに、取得したいデータの種類を指定します。
4-2. まず確認したい基本エンドポイント
WordPress APIを使う前に、まず以下の基本エンドポイントを確認しましょう。
https://example.com/wp-json/
このURLにアクセスすると、そのWordPressサイトで利用できるREST APIの情報が表示されます。
次に、投稿一覧のエンドポイントにアクセスします。
https://example.com/wp-json/wp/v2/posts
公開済みの記事がJSON形式で表示されれば、投稿データの取得は成功です。
カテゴリやタグも確認してみましょう。
https://example.com/wp-json/wp/v2/categories
https://example.com/wp-json/wp/v2/tags
ここまで確認できれば、WordPress REST APIの基本的な取得はできています。
4-3. 投稿一覧を取得する方法
投稿一覧を取得するには、次のURLにアクセスします。
GET https://example.com/wp-json/wp/v2/posts
ブラウザでアクセスしてもよいですし、JavaScriptのfetchを使って取得することもできます。
JavaScriptfetch('https://example.com/wp-json/wp/v2/posts')
.then(response => response.json())
.then(posts => {
console.log(posts);
})
.catch(error => {
console.error('API取得エラー:', error);
});
取得したデータには、投稿ID、投稿日、タイトル、本文、抜粋、スラッグ、リンク、カテゴリID、タグIDなどが含まれます。
記事タイトルを表示したい場合は、次のように取得できます。
JavaScriptfetch('https://example.com/wp-json/wp/v2/posts')
.then(response => response.json())
.then(posts => {
posts.forEach(post => {
console.log(post.title.rendered);
});
});
4-4. 特定の記事を取得する方法
特定の記事を取得するには、投稿IDをエンドポイントに指定します。
GET https://example.com/wp-json/wp/v2/posts/123
JavaScriptで取得する場合は次のようになります。
JavaScriptfetch('https://example.com/wp-json/wp/v2/posts/123')
.then(response => response.json())
.then(post => {
console.log(post.title.rendered);
console.log(post.content.rendered);
});
投稿IDがわからない場合は、まず投稿一覧を取得してIDを確認します。
スラッグで記事を取得したい場合は、slugパラメータを使います。
GET https://example.com/wp-json/wp/v2/posts?slug=sample-post
この場合、該当する投稿が配列で返ってきます。
4-5. カテゴリ・タグ・メディアを取得する方法
カテゴリ一覧を取得するには、次のエンドポイントを使います。
GET https://example.com/wp-json/wp/v2/categories
タグ一覧を取得するには、次のエンドポイントを使います。
GET https://example.com/wp-json/wp/v2/tags
メディア一覧を取得するには、次のエンドポイントを使います。
GET https://example.com/wp-json/wp/v2/media
投稿に紐づくカテゴリ名を表示したい場合は、投稿データに含まれるカテゴリIDを使ってカテゴリ一覧と照合するか、_embedパラメータを使って関連情報を含めて取得します。
GET https://example.com/wp-json/wp/v2/posts?_embed
_embedを使うと、アイキャッチ画像や投稿者などの関連データをまとめて取得できる場合があります。フロントエンドで記事一覧を表示する際によく使われます。
4-6. パラメータを使って取得件数や並び順を指定する方法
WordPress REST APIでは、URLにパラメータを付けることで取得件数や並び順を指定できます。
たとえば、投稿を5件だけ取得する場合は次のようにします。
GET https://example.com/wp-json/wp/v2/posts?per_page=5
2ページ目を取得する場合は、pageを使います。
GET https://example.com/wp-json/wp/v2/posts?per_page=5&page=2
新しい順に取得する場合は、次のようにします。
GET https://example.com/wp-json/wp/v2/posts?orderby=date&order=desc
カテゴリIDが3の記事だけ取得する場合は、次のようにします。
GET https://example.com/wp-json/wp/v2/posts?categories=3
キーワード検索を行う場合は、searchパラメータを使います。
GET https://example.com/wp-json/wp/v2/posts?search=WordPress
パラメータを活用すると、記事一覧ページ、カテゴリ別一覧、検索結果ページ、関連記事表示などを柔軟に実装できます。
5. WordPress APIで投稿・更新する方法
WordPress APIで投稿を作成・更新・削除する場合は、取得だけの場合と違って認証が必要です。
公開済みの記事一覧を取得するだけなら認証なしで動くことが多いですが、投稿の作成や更新はサイトの内容を変更する操作です。そのため、正しいユーザー権限を持つアカウントで認証する必要があります。
5-1. 投稿作成や更新には認証が必要
WordPress APIで新しい投稿を作成するには、次のエンドポイントにPOSTリクエストを送ります。
POST https://example.com/wp-json/wp/v2/posts
投稿を更新する場合は、投稿IDを指定します。
POST https://example.com/wp-json/wp/v2/posts/123
投稿を削除する場合は、DELETEメソッドを使います。
DELETE https://example.com/wp-json/wp/v2/posts/123
これらの操作では、WordPressユーザーの権限が確認されます。たとえば、投稿者権限のユーザーは自分の投稿は作成できますが、他人の記事やサイト全体の設定を自由に変更できるわけではありません。
API連携用のユーザーを作る場合は、必要以上に強い権限を与えないことが重要です。
5-2. Application Passwordsを使った認証方法
外部システムからWordPress APIを使って投稿・更新する場合は、Application Passwordsを使う方法が便利です。
Application Passwordsは、通常のログインパスワードとは別に、API連携用のパスワードを発行できる機能です。WordPress公式のAdvanced Administration Handbookでは、Application Passwordは特定のWordPressユーザーアカウントに紐づくAPI認証用パスワードであり、作成時に一度だけ表示され、個別に取り消せるものと説明されています。WordPress Developer Resources
基本的な流れは次のとおりです。
1. WordPress管理画面にログインする
2. ユーザー > プロフィール を開く
3. Application Passwordsの項目を探す
4. アプリケーション名を入力して新しいパスワードを発行する
5. 表示されたパスワードを安全な場所に保存する
6. APIリクエスト時にユーザー名とApplication Passwordを使って認証する
Application Passwordは一度しか表示されないため、発行後は必ず安全に保存してください。流出した場合は、該当するApplication Passwordを削除して再発行します。
5-3. cURLでWordPress APIを実行する例
cURLを使ってWordPress APIで投稿を作成する例は次のとおりです。
Bashcurl -X POST https://example.com/wp-json/wp/v2/posts \
-u "your_username:xxxx xxxx xxxx xxxx xxxx xxxx" \
-H "Content-Type: application/json" \
-d '{
"title": "APIから投稿した記事",
"content": "これはWordPress REST APIから作成した本文です。",
"status": "draft"
}'
your_usernameにはWordPressのユーザー名を入れます。xxxx xxxx xxxx xxxx xxxx xxxxにはApplication Passwordを入れます。
statusをdraftにすると下書きとして作成されます。公開したい場合はpublishを指定します。
JSON{
"status": "publish"
}
ただし、自動公開する場合は、誤投稿や重複投稿を防ぐため、最初はdraftで作成して動作確認するのがおすすめです。
既存の投稿を更新する場合は、投稿IDを指定します。
Bashcurl -X POST https://example.com/wp-json/wp/v2/posts/123 \
-u "your_username:xxxx xxxx xxxx xxxx xxxx xxxx" \
-H "Content-Type: application/json" \
-d '{
"title": "更新後のタイトル",
"content": "更新後の本文です。"
}'
5-4. JavaScriptでWordPress APIを使う例
JavaScriptで投稿一覧を取得するだけなら、次のようにfetchを使えます。
JavaScriptfetch('https://example.com/wp-json/wp/v2/posts?per_page=5')
.then(response => response.json())
.then(posts => {
posts.forEach(post => {
console.log(post.title.rendered);
});
})
.catch(error => {
console.error(error);
});
投稿を作成する場合は認証が必要です。Basic認証でApplication Passwordsを使う場合の例は次のとおりです。
JavaScriptconst username = 'your_username';
const appPassword = 'xxxx xxxx xxxx xxxx xxxx xxxx';
fetch('https://example.com/wp-json/wp/v2/posts', {
method: 'POST',
headers: {
'Authorization': 'Basic ' + btoa(username + ':' + appPassword),
'Content-Type': 'application/json'
},
body: JSON.stringify({
title: 'JavaScriptから投稿',
content: 'WordPress REST APIを使って投稿しました。',
status: 'draft'
})
})
.then(response => response.json())
.then(data => {
console.log(data);
})
.catch(error => {
console.error('投稿エラー:', error);
});
ただし、ブラウザ側のJavaScriptにApplication Passwordを直接書くのは危険です。誰でもソースコードを確認できてしまうため、認証情報が漏洩します。
実運用では、サーバー側のAPI、バックエンド、Cloud Functions、GAS、Node.jsサーバーなどを経由してWordPress APIを呼び出す構成にしましょう。
5-5. PHPでWordPress APIを使う例
PHPで外部のWordPress APIを呼び出す場合は、wp_remote_getやwp_remote_postを使えます。
投稿一覧を取得する例は次のとおりです。
PHP$response = wp_remote_get( 'https://example.com/wp-json/wp/v2/posts?per_page=5' );
if ( is_wp_error( $response ) ) {
return;
}
$body = wp_remote_retrieve_body( $response );
$posts = json_decode( $body, true );
foreach ( $posts as $post ) {
echo esc_html( $post['title']['rendered'] );
}
投稿を作成する場合は、認証ヘッダーを付けてwp_remote_postを使います。
PHP$username = 'your_username';
$app_password = 'xxxx xxxx xxxx xxxx xxxx xxxx';
$response = wp_remote_post( 'https://example.com/wp-json/wp/v2/posts', array(
'headers' => array(
'Authorization' => 'Basic ' . base64_encode( $username . ':' . $app_password ),
'Content-Type' => 'application/json',
),
'body' => wp_json_encode( array(
'title' => 'PHPから投稿',
'content' => 'WordPress REST APIを使ってPHPから投稿しました。',
'status' => 'draft',
) ),
) );
WordPress同士を連携する場合や、既存のWordPressサイトから別のWordPressサイトに投稿を送る場合にも、この方法が使えます。
5-6. 投稿・更新・削除を行う際の注意点
WordPress APIで投稿・更新・削除を行うときは、以下の点に注意してください。
最初は必ず下書きでテストする
本番サイトではなく検証環境で動作確認する
Application Passwordをコードに直書きしない
不要になったApplication Passwordは削除する
API連携用ユーザーには必要最小限の権限だけ付与する
削除処理を実行する前に投稿IDを必ず確認する
エラーログを保存して原因を追跡できるようにする
特に削除APIは慎重に扱いましょう。誤って本番記事を削除しないよう、確認処理やバックアップを用意しておくことが大切です。
6. WordPress APIの連携方法
WordPress APIは、さまざまな外部サービスやシステムと連携できます。
ここでは、よくある連携パターンを紹介します。
6-1. 外部サイトにWordPressの記事を表示する
もっとも基本的な使い方は、外部サイトにWordPressの記事を表示する方法です。
たとえば、コーポレートサイトのニュースをWordPressで管理し、その記事一覧を別のサービスサイトに表示するケースです。
外部サイト側で次のエンドポイントを呼び出します。
https://example.com/wp-json/wp/v2/posts?per_page=5
JavaScriptで表示する場合は、次のように書けます。
HTML<ul id="news-list"></ul>
<script>
fetch('https://example.com/wp-json/wp/v2/posts?per_page=5')
.then(response => response.json())
.then(posts => {
const list = document.getElementById('news-list');
posts.forEach(post => {
const item = document.createElement('li');
item.innerHTML = `<a href="${post.link}">${post.title.rendered}</a>`;
list.appendChild(item);
});
});
</script>
この方法なら、WordPress側で記事を更新するだけで、外部サイト側のニュース一覧も自動的に更新できます。
6-2. スマホアプリとWordPressを連携する
WordPress APIを使えば、スマホアプリにWordPressの記事を表示できます。
アプリ側から投稿一覧APIを呼び出し、記事タイトル、本文、アイキャッチ画像、カテゴリなどを表示します。
GET https://example.com/wp-json/wp/v2/posts?_embed
_embedを使うと、アイキャッチ画像などの関連情報を取得しやすくなります。
スマホアプリと連携する場合は、表示速度、キャッシュ、通信量、認証、CORS、セキュリティに注意しましょう。特に会員限定コンテンツを扱う場合は、認証方式を慎重に設計する必要があります。
6-3. Googleスプレッドシートや業務ツールと連携する
WordPress APIは、Googleスプレッドシートや業務ツールとの連携にも使えます。
たとえば、Google Apps Scriptを使って、スプレッドシートに入力したタイトルと本文をWordPressに下書き投稿できます。
JavaScriptfunction postToWordPress() {
const url = 'https://example.com/wp-json/wp/v2/posts';
const username = 'your_username';
const appPassword = 'xxxx xxxx xxxx xxxx xxxx xxxx';
const payload = {
title: 'スプレッドシートから投稿',
content: 'Google Apps ScriptからWordPress APIを使って投稿しました。',
status: 'draft'
};
const options = {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(payload),
headers: {
Authorization: 'Basic ' + Utilities.base64Encode(username + ':' + appPassword)
}
};
const response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());
}
このように連携すれば、記事作成フロー、承認フロー、商品情報更新、イベント情報更新などを効率化できます。
6-4. ECサイト・会員サイト・予約システムと連携する
WordPress APIは、ECサイト、会員サイト、予約システムとの連携にも活用できます。
たとえば、以下のような使い方が考えられます。
ECサイトの商品情報をWordPressに表示する
WordPressの記事を会員向けアプリに配信する
予約システムの空き状況をWordPressに表示する
会員限定コンテンツをアプリに配信する
外部CRMの顧客情報とWordPressの会員情報を連携する
ただし、個人情報、決済情報、会員情報を扱う場合は、セキュリティ設計が非常に重要です。APIで公開する情報を最小限にし、HTTPS、認証、権限管理、ログ管理を徹底しましょう。
6-5. ヘッドレスWordPressとしてNext.jsやReactと連携する
Next.jsやReactとWordPressを連携する場合、WordPressはコンテンツ管理専用、Next.jsやReactは表示専用として使います。
Next.jsで投稿一覧を取得するイメージは次のようになります。
JavaScriptexport async function getStaticProps() {
const res = await fetch('https://example.com/wp-json/wp/v2/posts?per_page=10&_embed');
const posts = await res.json();
return {
props: {
posts,
},
revalidate: 60,
};
}
このような構成にすると、WordPressの管理画面はそのまま使いながら、フロントエンドは自由に設計できます。
ヘッドレスWordPressでは、以下の点を考慮しましょう。
プレビュー機能をどう実装するか
SEOメタ情報をどう取得するか
アイキャッチ画像をどう扱うか
カテゴリやタグページをどう生成するか
キャッシュや再生成をどう管理するか
フォームや検索をどう実装するか
通常のWordPressテーマよりも設計の自由度は高いですが、その分フロントエンド実装や運用設計が重要になります。
6-6. ノーコードツールや自動化ツールと連携する
WordPress APIは、Zapier、Make、n8nなどの自動化ツールとも連携できます。
たとえば、以下のような自動化が可能です。
フォーム送信内容をWordPressに下書き投稿する
Notionやスプレッドシートの情報をWordPressに反映する
新しい記事が公開されたらSlackに通知する
外部サービスの商品情報をWordPressに同期する
RSSフィードの内容をWordPressに保存する
ノーコードツールを使えば、プログラミングが得意でなくてもAPI連携を構築しやすくなります。
ただし、ノーコードツールにApplication Passwordを登録する場合は、そのツールのセキュリティや権限管理を確認しましょう。
7. WordPress APIが使えない・動かない時の主な原因
WordPress APIが使えない場合、原因はさまざまです。
URLの間違い、パーマリンク設定、セキュリティプラグイン、WAF、認証ミス、権限不足、CORS、カスタム投稿タイプの設定、サーバー設定などがよくある原因です。
ここでは、代表的なエラーと原因を解説します。
7-1. REST APIのURLが間違っている
まず確認すべきなのはURLです。
正しい基本URLは次の形式です。
https://example.com/wp-json/
投稿一覧は次の形式です。
https://example.com/wp-json/wp/v2/posts
よくある間違いは次のとおりです。
/wp-json/ が抜けている
/wp/v2/ が抜けている
posts を post と書いている
http と https が違う
サブディレクトリ型WordPressのURLを間違えている
末尾のスラッシュやドメインを間違えている
WordPressをサブディレクトリに設置している場合は、次のようになることがあります。
https://example.com/blog/wp-json/wp/v2/posts
まずはブラウザで/wp-json/にアクセスできるか確認しましょう。
7-2. パーマリンク設定が原因でアクセスできない
WordPress APIが404になる場合、パーマリンク設定が原因のことがあります。
WordPress管理画面で以下を開きます。
設定 > パーマリンク
何も変更しなくても、保存ボタンを押すだけでリライトルールが再生成されます。
特に、サイト移転後、サーバー移行後、.htaccess変更後、カスタム投稿タイプ追加後にAPIが404になる場合は、パーマリンク設定の保存し直しで解決することがあります。
7-3. セキュリティプラグインやWAFにブロックされている
WordPress APIが403になる場合、セキュリティプラグインやWAFにブロックされている可能性があります。
以下のような機能が影響することがあります。
REST API制限機能
ログイン保護機能
海外IP制限
Basic認証制限
XML-RPC制限
WAFの不正リクエスト判定
Authorizationヘッダーの遮断
一部のセキュリティプラグインは、REST APIへのアクセスを制限する設定を持っています。API連携を使う場合は、必要なエンドポイントだけ許可するなど、バランスを取ることが重要です。
7-4. 認証情報やApplication Passwordsが間違っている
投稿作成や更新で失敗する場合、認証情報が間違っている可能性があります。
確認すべきポイントは以下です。
ユーザー名が正しいか
Application Passwordが正しいか
通常のログインパスワードを使っていないか
Application Passwordのスペースを正しく扱っているか
対象ユーザーに投稿権限があるか
Authorizationヘッダーが送信されているか
HTTPSで通信しているか
Application Passwordsは通常のログインパスワードとは別物です。プロフィール画面で発行したAPI用のパスワードを使いましょう。
7-5. 401 Unauthorizedが出る原因
401 Unauthorizedは、認証に失敗しているときによく出るエラーです。
主な原因は以下です。
認証情報が送信されていない
ユーザー名またはApplication Passwordが間違っている
Authorizationヘッダーがサーバーで削除されている
Application Passwordが削除・無効化されている
Basic認証の形式が間違っている
HTTPSではなくHTTPで送信している
cURLでまずテストすると、ブラウザやJavaScript側の問題と切り分けやすくなります。
Bashcurl https://example.com/wp-json/wp/v2/users/me \
-u "your_username:xxxx xxxx xxxx xxxx xxxx xxxx"
このリクエストで自分のユーザー情報が返れば、認証は成功しています。
7-6. 403 Forbiddenが出る原因
403 Forbiddenは、アクセス権限がない、またはサーバー側で拒否されている場合に出ます。
主な原因は以下です。
ユーザー権限が不足している
セキュリティプラグインがREST APIを制限している
WAFがリクエストをブロックしている
IP制限がかかっている
サーバー側でAuthorizationヘッダーが許可されていない
ログインユーザーに対象操作の権限がない
たとえば、購読者権限のユーザーで投稿を作成しようとしても失敗します。API連携用ユーザーに必要な権限があるか確認しましょう。
7-7. 404 rest_no_routeが出る原因
404 rest_no_routeは、指定したルートが存在しない場合に出ます。
主な原因は以下です。
エンドポイントURLが間違っている
カスタム投稿タイプがREST APIに公開されていない
プラグインのAPIルートが登録されていない
namespaceやrouteの指定が間違っている
パーマリンク設定が壊れている
カスタム投稿タイプをAPIで取得したい場合は、登録時にshow_in_restをtrueにする必要があります。WordPress公式ドキュメントでも、カスタム投稿タイプをREST APIで利用するにはregister_post_typeの引数に'show_in_rest' => trueを設定すると説明されています。WordPress Developer Resources
7-8. CORSエラーが出る原因
CORSエラーは、ブラウザから別ドメインのWordPress APIを呼び出したときによく発生します。
CORSは、異なるオリジンからのリソース読み込みをサーバーが許可するかどうかをブラウザが判断する仕組みです。MDNでも、CORSはサーバーが自分とは異なるオリジンからの読み込みを許可するためのHTTPヘッダーベースの仕組みと説明されています。MDN Web Docs
たとえば、以下のような構成ではCORSが関係します。
フロントエンド:https://frontend.example.com
WordPress:https://cms.example.com
CORSエラーの主な原因は以下です。
WordPress側がフロントエンドのオリジンを許可していない
Authorizationヘッダーが許可されていない
OPTIONSリクエストに正しく応答していない
WAFやサーバーがプリフライトリクエストを拒否している
WordPressにはREST APIのCORSで許可するリクエストヘッダーを調整するrest_allowed_cors_headersフィルターがあります。公式リファレンスでも、このフックはREST APIのCORSリクエストで許可されるリクエストヘッダー一覧をフィルタリングすると説明されています。WordPress Developer Resources
7-9. カスタム投稿タイプがAPIに表示されない原因
カスタム投稿タイプがAPIに表示されない場合、show_in_restが設定されていない可能性があります。
カスタム投稿タイプを登録するときは、次のようにします。
PHPregister_post_type( 'news', array(
'label' => 'ニュース',
'public' => true,
'show_in_rest' => true,
'supports' => array( 'title', 'editor', 'thumbnail' ),
) );
この設定を行うと、次のようなエンドポイントで取得できるようになります。
https://example.com/wp-json/wp/v2/news
ただし、rest_baseを指定している場合は、エンドポイント名が変わることがあります。
PHP'rest_base' => 'information'
この場合は次のようになります。
https://example.com/wp-json/wp/v2/information
7-10. サーバー設定や.htaccessが原因になるケース
WordPress APIが正しく動かない場合、サーバー設定や.htaccessが原因になることもあります。
特に以下を確認しましょう。
.htaccessのリライトルール
Nginxの設定
AuthorizationヘッダーがPHPに渡っているか
Basic認証との競合
WAF設定
海外IP制限
REST APIへのアクセス制限
キャッシュ設定
Apache環境でAuthorizationヘッダーが渡らない場合、.htaccessに設定が必要になることがあります。
apacheSetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
ただし、サーバー環境によって適切な設定は異なります。レンタルサーバーを使っている場合は、サーバー会社のマニュアルやサポートも確認しましょう。
8. WordPress APIが使えない時の確認・解決手順
WordPress APIが使えないときは、やみくもに設定を変更するのではなく、順番に原因を切り分けることが大切です。
ここでは、初心者でも確認しやすい手順を紹介します。
8-1. wp-jsonにアクセスしてREST APIが有効か確認する
まず、ブラウザで次のURLにアクセスします。
https://example.com/wp-json/
JSON形式のデータが表示されれば、REST API自体は動いています。
次に、投稿一覧を確認します。
https://example.com/wp-json/wp/v2/posts
ここで投稿データが表示されれば、公開済み投稿の取得は成功です。
もし404や403が出る場合は、URL、パーマリンク、セキュリティプラグイン、WAF、サーバー設定を確認します。
8-2. パーマリンク設定を保存し直す
APIのURLが404になる場合は、パーマリンク設定を保存し直します。
WordPress管理画面 > 設定 > パーマリンク > 変更を保存
設定内容を変えなくても、保存するだけでリライトルールが更新されます。
カスタム投稿タイプを追加した後や、サイト移転後にAPIが動かない場合は、まずこの操作を試しましょう。
8-3. プラグインを一時停止して原因を切り分ける
REST APIが403になる場合や、突然APIが使えなくなった場合は、プラグインが原因の可能性があります。
特に確認したいのは以下です。
セキュリティプラグイン
キャッシュプラグイン
REST API制限プラグイン
ログイン保護プラグイン
会員制プラグイン
多言語化プラグイン
カスタム投稿タイプ関連プラグイン
すべてのプラグインを一度に停止するのが難しい場合は、検証環境で再現テストを行いましょう。
本番環境でプラグインを停止する場合は、事前にバックアップを取り、影響の少ない時間帯に作業することをおすすめします。
8-4. テーマを切り替えて動作確認する
テーマのfunctions.phpにREST APIを制限するコードや、独自エンドポイントの不具合がある場合、APIが正常に動かないことがあります。
原因を切り分けるには、一時的にWordPress公式テーマに切り替えて確認します。
外観 > テーマ > 公式テーマに切り替え
テーマを切り替えてAPIが動く場合は、現在のテーマ内のコードが原因の可能性があります。
特に以下のコードを確認しましょう。
rest_api_initに関する処理
register_rest_routeの設定
permission_callbackの設定
REST APIを無効化するフィルター
CORSヘッダーを変更する処理
カスタム投稿タイプ登録処理
8-5. 認証ヘッダーが正しく送信されているか確認する
投稿作成や更新ができない場合は、Authorizationヘッダーが正しく送信されているか確認します。
cURLで確認する場合は、次のようにします。
Bashcurl https://example.com/wp-json/wp/v2/users/me \
-u "your_username:xxxx xxxx xxxx xxxx xxxx xxxx"
成功すれば、認証済みユーザーの情報が返ります。
失敗する場合は、以下を確認します。
ユーザー名が正しいか
Application Passwordが正しいか
Application Passwordが削除されていないか
Authorizationヘッダーがサーバーで消えていないか
HTTPSでアクセスしているか
セキュリティプラグインがブロックしていないか
サーバーによっては、AuthorizationヘッダーがPHPに渡らない設定になっている場合があります。その場合はサーバー設定の調整が必要です。
8-6. サーバーやWAFの制限を確認する
レンタルサーバーやクラウド環境では、WAFがAPIリクエストをブロックすることがあります。
以下のような操作は、WAFに誤検知されることがあります。
JSON形式のPOSTリクエスト
Authorizationヘッダー付きリクエスト
外部IPからの連続アクセス
HTMLタグを含む本文の投稿
scriptやiframeを含む本文の投稿
WAFログを確認できる場合は、ブロックされたリクエストがないか確認します。
レンタルサーバーの場合は、管理画面からWAFを一時的に無効化してテストできることもあります。ただし、本番環境でWAFを無効化する場合は慎重に行い、テスト後は必要な保護を戻しましょう。
8-7. エラーメッセージ別の対処法
WordPress APIでよくあるエラーと対処法をまとめると、次のようになります。
401 Unauthorized
認証情報が間違っている、または送信されていない可能性があります。ユーザー名、Application Password、Authorizationヘッダーを確認します。
403 Forbidden
権限不足、セキュリティプラグイン、WAF、IP制限などが原因です。ユーザー権限とサーバー側の制限を確認します。
404 rest_no_route
URLが間違っている、エンドポイントが存在しない、カスタム投稿タイプがshow_in_restになっていない可能性があります。
CORS error
ブラウザから別ドメインへアクセスしている場合に発生します。WordPress側で許可するオリジンやヘッダーを設定します。
500 Internal Server Error
テーマやプラグインのPHPエラー、サーバーエラーの可能性があります。エラーログを確認します。
rest_cannot_create
投稿作成権限がない可能性があります。ユーザー権限を確認します。
rest_forbidden
REST APIへのアクセスが禁止されています。セキュリティ設定や権限を確認します。
エラーが出た場合は、まずレスポンス本文のcodeとmessageを確認しましょう。WordPress REST APIは、エラー時に原因を示すコードを返すことが多いため、解決の手がかりになります。
9. WordPress APIを安全に使うための注意点
WordPress APIは便利ですが、使い方を誤るとセキュリティリスクになります。
特に、投稿作成・更新・削除、ユーザー情報取得、会員データ連携などを行う場合は、安全な設計が必要です。
9-1. 不要な情報をAPIで公開しない
WordPress APIでは、公開されている投稿やカテゴリなどが取得できます。しかし、不要な情報まで外部に公開しないように注意しましょう。
特に以下の情報は慎重に扱う必要があります。
ユーザー情報
メールアドレス
会員情報
非公開記事
下書き記事
カスタムフィールド内の内部情報
プラグイン独自の設定情報
管理用メモ
カスタムフィールドをAPIに出す場合は、その情報が外部に見えても問題ないか必ず確認してください。
9-2. 認証情報やApplication Passwordsを外部に公開しない
Application PasswordsはAPI連携に便利ですが、外部に漏れると危険です。
以下のような扱いは避けましょう。
JavaScriptのフロントエンドコードに直接書く
GitHubなどの公開リポジトリに含める
共有スプレッドシートに平文で保存する
複数人で同じApplication Passwordを使い回す
不要になった後も削除せず放置する
認証情報は、環境変数、サーバー側の安全な設定ファイル、シークレット管理サービスなどで管理しましょう。
漏洩した可能性がある場合は、すぐに該当するApplication Passwordを削除し、新しいものを発行します。
9-3. HTTPS環境で利用する
WordPress APIで認証情報を送信する場合は、必ずHTTPSを使いましょう。
HTTP通信では、通信内容が暗号化されないため、認証情報が第三者に盗み見られるリスクがあります。
APIのURLは次のようにhttps://で始まる必要があります。
https://example.com/wp-json/wp/v2/posts
Application Passwordsを使う場合も、HTTPS環境で利用することが前提です。WordPress公式ドキュメントでも、Application Passwordsの認証情報はHTTPS上のREST APIリクエストでBasic認証として送信できると説明されています。WordPress Developer Resources
9-4. 権限設定を最小限にする
API連携用のユーザーには、必要最小限の権限だけを与えましょう。
たとえば、記事を下書き投稿するだけなら、管理者権限ではなく投稿者や編集者権限で足りる場合があります。
避けたい設定は以下です。
すべてのAPI連携に管理者アカウントを使う
複数サービスで同じApplication Passwordを使い回す
退職者や不要になったユーザーのApplication Passwordを放置する
権限の強いアカウントで外部ツールと連携する
API連携ごとに専用ユーザーや専用Application Passwordを作成しておくと、問題が起きたときに停止・調査しやすくなります。
9-5. REST APIを完全に無効化する前に確認すべきこと
セキュリティ対策として「REST APIを完全に無効化したい」と考える人もいます。
しかし、REST APIはWordPress本体やブロックエディター、テーマ、プラグインが利用している場合があります。WordPress REST APIはブロックエディターの基盤でもあると公式ドキュメントで説明されています。WordPress Developer Resources
そのため、完全に無効化すると以下のような不具合が起きる可能性があります。
ブロックエディターが正常に動かない
プラグインの管理画面が動かない
外部連携が止まる
サイトヘルスで警告が出る
テーマの一部機能が動かない
REST APIを無効化する前に、本当に必要なのは完全無効化なのか、未ログインユーザーへの制限だけでよいのか、特定のエンドポイントだけ制限すればよいのかを検討しましょう。
9-6. セキュリティプラグイン利用時の注意点
セキュリティプラグインを使う場合は、REST API関連の設定を確認しましょう。
以下のような設定がある場合があります。
REST APIを無効化する
未ログインユーザーのREST APIアクセスを制限する
ユーザー情報APIを無効化する
XML-RPCを無効化する
海外IPからのアクセスを制限する
ログインURLを変更する
API連携を使う場合は、必要なエンドポイントや認証済みリクエストまでブロックしないように注意してください。
セキュリティを高めることは大切ですが、必要なAPIまで止めてしまうとサイト運用や外部連携に支障が出ます。
10. WordPress APIをカスタマイズする方法
WordPress REST APIは、標準機能だけでなく、カスタム投稿タイプ、カスタムフィールド、独自エンドポイントなどを追加して拡張できます。
オリジナルのCMS機能や業務システム連携を作る場合は、APIのカスタマイズが重要になります。
10-1. カスタム投稿タイプをREST APIに表示する方法
カスタム投稿タイプをREST APIに表示するには、register_post_typeでshow_in_restをtrueに設定します。
PHPadd_action( 'init', function() {
register_post_type( 'news', array(
'label' => 'ニュース',
'public' => true,
'show_in_rest' => true,
'supports' => array( 'title', 'editor', 'thumbnail' ),
) );
} );
これにより、次のようなエンドポイントでカスタム投稿タイプを取得できます。
https://example.com/wp-json/wp/v2/news
WordPress公式ドキュメントでも、カスタム投稿タイプをREST APIで利用するにはshow_in_restをtrueに設定すると説明されています。WordPress Developer Resources
10-2. カスタムフィールドをAPIで取得する方法
カスタムフィールドをREST APIで取得したい場合は、register_metaを使ってREST APIに公開できます。
PHPadd_action( 'init', function() {
register_meta( 'post', 'custom_subtitle', array(
'type' => 'string',
'single' => true,
'show_in_rest' => true,
) );
} );
これにより、投稿APIのレスポンスにcustom_subtitleを含められます。
WordPress公式ドキュメントでも、register_metaでshow_in_restをtrueに設定すると、そのメタキーをREST APIで利用できると説明されています。WordPress Developer Resources
ただし、カスタムフィールドには内部管理用の情報や非公開情報が入っている場合があります。APIで公開する前に、外部に見えてよい情報か必ず確認しましょう。
10-3. 独自エンドポイントを追加する方法
WordPress REST APIでは、独自エンドポイントを追加できます。
たとえば、次のコードは/wp-json/mytheme/v1/messageというエンドポイントを追加する例です。
PHPadd_action( 'rest_api_init', function() {
register_rest_route( 'mytheme/v1', '/message', array(
'methods' => 'GET',
'callback' => function() {
return array(
'message' => 'Hello WordPress API',
);
},
'permission_callback' => '__return_true',
) );
} );
アクセスURLは次のようになります。
https://example.com/wp-json/mytheme/v1/message
WordPress公式ドキュメントでも、独自ルートを追加するにはregister_rest_route()を使い、rest_api_initアクションフックで呼び出すと説明されています。WordPress Developer Resources
独自エンドポイントを作ると、標準APIでは取得しにくい情報をまとめて返したり、外部システム用に整形したデータを返したりできます。
10-4. APIのレスポンス内容を変更する方法
APIのレスポンスに独自項目を追加したい場合は、register_rest_fieldを使えます。
たとえば、投稿APIに独自の項目を追加する例です。
PHPadd_action( 'rest_api_init', function() {
register_rest_field( 'post', 'custom_message', array(
'get_callback' => function( $post ) {
return '投稿IDは' . $post['id'] . 'です';
},
'schema' => array(
'description' => 'カスタムメッセージ',
'type' => 'string',
),
) );
} );
これにより、投稿APIのレスポンスにcustom_messageが追加されます。
APIレスポンスを変更すると、フロントエンド側で使いやすい形にデータを整えられます。ただし、レスポンスが重くなりすぎると表示速度に影響するため、必要な項目だけ追加しましょう。
10-5. プラグインを使ってAPI連携を拡張する方法
WordPress APIの拡張はコードでもできますが、プラグインを使う方法もあります。
たとえば、以下のような用途でプラグインが使われます。
JWT認証を追加する
カスタムフィールドをREST APIに公開する
WooCommerce APIを使う
フォーム送信データを外部連携する
GraphQL APIを追加する
REST APIのアクセス制限を設定する
ただし、API関連プラグインを追加すると、セキュリティやパフォーマンスに影響する場合があります。
プラグインを選ぶ際は、以下を確認しましょう。
更新が継続されているか
利用中のWordPressバージョンに対応しているか
権限管理が適切か
不要な情報を公開しないか
公式ドキュメントやレビューがあるか
API連携はサイトの外部公開部分に関わるため、安易にプラグインを追加するのではなく、必要な機能だけを選ぶことが大切です。
11. WordPress APIに関するよくある質問
ここでは、WordPress APIについて初心者からよくある質問に回答します。
11-1. WordPress APIは初心者でも使えますか?
はい、基本的な取得だけであれば初心者でも使えます。
たとえば、ブラウザで次のURLにアクセスするだけで、投稿一覧を確認できます。
https://example.com/wp-json/wp/v2/posts
ただし、投稿作成、更新、削除、認証、CORS、カスタム投稿タイプ、カスタムフィールド連携まで行う場合は、HTTP、JSON、JavaScript、PHP、認証、サーバー設定の基礎知識が必要です。
まずは「投稿一覧を取得する」「カテゴリ一覧を取得する」といった簡単な操作から始めるのがおすすめです。
11-2. WordPress REST APIは無料で使えますか?
WordPress本体に備わっているREST APIは、基本的に無料で使えます。
追加プラグインを使わなくても、投稿、固定ページ、カテゴリ、タグ、メディアなどの標準データはREST APIで扱えます。WordPress公式のREST APIリファレンスでも、利用可能なエンドポイント、パラメータ、レスポンス形式がまとめられています。WordPress Developer Resources
ただし、サーバー費用、開発費用、有料プラグイン、外部連携ツールの利用料などが発生する場合はあります。
11-3. WordPress.comでもAPIは使えますか?
WordPress.comでもAPIは利用できます。
ただし、WordPress.orgで自分でサーバーにインストールするWordPressと、WordPress.comでは仕様や認証方法、利用できる機能が異なる場合があります。
WordPress.comには専用のREST APIドキュメントがあり、エンドポイント一覧やDeveloper Consoleが用意されています。WordPress.com Developer Resources
WordPress.comでAPI連携を行う場合は、WordPress.org向けのREST API情報だけでなく、WordPress.com公式ドキュメントも確認しましょう。
11-4. APIを使うにはプラグインが必要ですか?
標準的なWordPress REST APIを使うだけなら、基本的にプラグインは不要です。
投稿一覧、固定ページ、カテゴリ、タグ、メディアなどは、WordPress標準のREST APIで取得できます。
ただし、以下のような場合はプラグインや追加実装が必要になることがあります。
JWT認証を使いたい
カスタムフィールドを簡単にAPI公開したい
GraphQLを使いたい
WooCommerceの商品情報を扱いたい
会員情報やフォーム情報を外部連携したい
REST APIのアクセス制限を細かく設定したい
まずは標準APIでできるか確認し、不足する機能だけプラグインや独自実装で補うのがおすすめです。
11-5. REST APIを無効化しても問題ありませんか?
REST APIを完全に無効化すると、WordPress本体やプラグインの機能に影響する可能性があります。
特にブロックエディターはREST APIを利用しています。公式ドキュメントでも、WordPress REST APIはブロックエディターの基盤と説明されています。WordPress Developer Resources
そのため、セキュリティ目的でREST APIを制限したい場合でも、完全無効化ではなく、以下のような方法を検討しましょう。
未ログインユーザーの一部エンドポイントだけ制限する
ユーザー情報APIだけ制限する
不要なカスタムエンドポイントを削除する
Application Passwordを適切に管理する
WAFやレート制限を使う
REST APIを止める前に、サイト上で使われている機能に影響がないか確認することが重要です。
11-6. WordPress APIとWP-CLIの違いは何ですか?
WordPress APIとWP-CLIは、どちらもWordPressを操作できますが、用途が違います。
WordPress APIは、HTTPリクエストを使って外部アプリや外部サービスからWordPressを操作する仕組みです。
一方、WP-CLIは、サーバーのコマンドラインからWordPressを操作するためのツールです。
違いを整理すると次のようになります。
WordPress API
外部サイト、アプリ、業務システム、ノーコードツールなどからHTTP経由で連携するために使う。
WP-CLI
サーバー上でコマンドを実行し、投稿、ユーザー、プラグイン、データベースなどを管理するために使う。
外部連携にはWordPress API、サーバー管理や一括処理にはWP-CLI、という使い分けが基本です。
まとめ
WordPress APIは、WordPressのデータや機能を外部から利用するための仕組みです。
特にWordPress REST APIを使うと、投稿、固定ページ、カテゴリ、タグ、メディア、コメント、ユーザー情報などをJSON形式で取得したり、認証を使って投稿・更新・削除したりできます。
基本的な投稿一覧の取得は、次のURLにアクセスするだけで確認できます。
https://example.com/wp-json/wp/v2/posts
一方で、投稿作成や更新には認証が必要です。外部連携ではApplication Passwordsを使う方法がよく使われますが、認証情報の管理、HTTPS、ユーザー権限、WAF、CORS、セキュリティプラグインの設定には注意が必要です。
WordPress APIでできることは非常に幅広く、以下のような活用ができます。
外部サイトにWordPressの記事を表示する
スマホアプリに記事を配信する
Googleスプレッドシートから自動投稿する
Next.jsやReactでヘッドレスWordPressを構築する
カスタム投稿タイプやカスタムフィールドをAPIで扱う
業務システムやノーコードツールと連携する
APIが使えない場合は、まず/wp-json/にアクセスしてREST APIが有効か確認し、URL、パーマリンク、認証情報、ユーザー権限、セキュリティプラグイン、WAF、CORS、カスタム投稿タイプのshow_in_rest設定を順番に確認しましょう。
WordPress APIを正しく使えば、WordPressは単なるブログ管理ツールではなく、外部サービスと連携できる柔軟なCMSとして活用できます。初心者はまず、投稿一覧やカテゴリ一覧を取得するところから始め、慣れてきたら投稿作成、外部連携、ヘッドレスCMS化、独自エンドポイントの追加へとステップアップしていきましょう。

