Skip to content
sumnail

ローカル環境にDockerでWordPressを構築してREST APIを検証する

created at : 2025/02/21

WordPress
Docker

WordPressの環境を構築する

docker-compose.yamlを作成して、WordPressの環境を構築します。

yaml
version: "3.8"
services:
  wordpress:
    image: wordpress:latest
    container_name: wordpress
    volumes:
      - ./wordpress:/var/www/html
    environment:
      - WORDPRESS_DB_NAME=wordpress
      - WORDPRESS_TABLE_PREFIX=wp_
      - WORDPRESS_DB_HOST=db
      - WORDPRESS_DB_USER=root
      - WORDPRESS_DB_PASSWORD=password
      - WP_ENVIRONMENT_TYPE=local
    depends_on:
      - db
      - phpmyadmin
    restart: always
    ports:
      - 8080:80

  db:
    image: mariadb:latest
    container_name: db
    volumes:
      - db_data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_USER=root
      - MYSQL_PASSWORD=password
      - MYSQL_DATABASE=wordpress
    restart: always

  phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin:latest
    container_name: phpmyadmin
    restart: always
    ports:
      - 8180:80
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: password

volumes:
  db_data:

WordPressのアプリケーションパスワードを設定するため、環境変数としてWP_ENVIRONMENT_TYPE=localを設定しています。

WordPressへログイン

docker-compose.yamlを作成後、以下のコマンドでWordPressの環境を構築します。

bash
docker-compose up -d

WordPressの環境が構築できたら、以下のURLにアクセスしてWordPressのインストール、言語設定などを行います。

# ポート番号はdocker-compose.yamlで設定したポート番号を指定
http://localhost:8080

REST APIの検証

記事一覧を取得する

WordPressのREST APIを検証するため、以下のエンドポイントにアクセスします。

http://localhost:8080/wp-json/wp/v2/posts

REST APIを有効にする

REST APIを有効にするには、WordPressの管理画面から設定 > パーマリンクを「投稿名」に変更して保存します。

パーマリンク設定を更新しないと、REST APIから上手く記事データを取得できませんでした。

正常にアクセスできれば、WordPressの記事を取得できます。

記事を投稿する

WordPressのREST APIで記事の投稿するためには、認証が必要です。

以下のテストコードで確認してみます。
WordPressのユーザー名user-name部分を書き換えとアプリケーションパスワードapp-password部分を書き換えを書き換えてリクエストします。

bash
curl -X POST -H "Content-Type: application/json" -d '{
    "title": "Hello World",
    "content": "Hello World"
}' http://localhost:8080/wp-json/wp/v2/posts --user user-name:app-password

アプリケーションパスワードの設定場所

アプリケーションパスワードは、WordPressのユーザー > プロフィールから設定できます。

表示されない場合は、環境変数にWP_ENVIRONMENT_TYPE=localを設定しているか確認します。
もしくは、./wordpress/wp-config.phpに以下の設定を追加してください。

php
define( 'WP_ENVIRONMENT_TYPE', 'local' );

アプリケーションパスワードの注意点

WordPressの画面では、アプリケーションパスワードが空白区切りで表示されますが、 空白を詰めて使う必要があります。

ずっとユーザー認証エラーが発生していたのですが、空白を詰めたら解決しました。

記事が投稿されていれば、APIを使った投稿も成功です。

まとめ

WordPressをローカル環境に構築し、REST APIを検証までの手順を紹介しました。

記事の投稿や取得など、WordPressのREST APIを使った開発を行う際に参考になれば幸いです。

参考

サクッとコンテナ環境を立てて検証しようとしたら、予想以上に時間が溶けました、、、
特に参考にさせてもらった記事がこちらです。ありがとうございました!!