Appearance
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を使った開発を行う際に参考になれば幸いです。
参考
サクッとコンテナ環境を立てて検証しようとしたら、予想以上に時間が溶けました、、、
特に参考にさせてもらった記事がこちらです。ありがとうございました!!