WooCommerce のREST APIを使用して、WordPressサイトのステータスレポートをメール受信する

3月 31, 2021

WooCommerce のREST APIを使用して、WordPressサイトのステータスレポートを、毎日メールで受信するスクリプトを作成した際の覚書です。

目次

スクリプト

import requests
from distutils.version import StrictVersion

response = requests.get('https://[domain]/wp-json/wc/v3/system_status', auth=('[user]', '[password]'))

status_roport = response.json()
theme = status_roport["theme"]

print("WooCommerce ステータス テンプレート 上書き\n")

for override in theme["overrides"]:
  hasWarning = False
  if override["core_version"] and not override["version"]:
    hasWarning = True
  else:
    v1 = StrictVersion(override["version"])
    v2 = StrictVersion(override["core_version"])
    if v1 < v2:
      hasWarning = True
  
  print(override["file"], end='')
  if hasWarning:
    print(" 有効期限が切れています。詳細は、WooCommerceレポートで確認下さい。", end='')
  print()

WordPress で提供される認証方式は下記3種類

Authentication

クッキー認証

このクッキー認証が利用できるのは、REST API が WordPress の内部から使われていて、 かつ、ユーザーがログインしている時のみであるということです。
さらに、そのログインユーザーが、実行しようとしているアクションに必要な権限を与えられているということも条件となります。

OAuth 認証

OAuth 認証は外部クライアントのための認証方法です。 OAuth 認証でも、ユーザーは通常の WordPress ログイン画面を通じてのみログインを行い、その後、自身に代わって処理を行うクライアントを認証します。 クライアントには、OAuth トークンが発行され、API へのアクセスが許可されます。
このアクセス権はユーザー側からいつでも取り消すことができます。

OAuth 認証は、OAuth 1.0a specification (published as RFC5849) を利用しており、OAuth plugin がサイトで 有効化されていることが必要です。

https://nskw-style.com/2016/wordpress/wp-api/oauth1.html
https://www.webprofessional.jp/angularjs-wordpress-rest-api/

アプリケーションパスワードまたはベーシック認証

ベーシック認証は、外部クライアントから利用できる認証の代替的な方法です。
OAuth 認証は複雑なので、開発段階ではベーシック認証が便利でしょう。
ただし、ベーシック認証ではすべてのリクエストにおいてユーザー名とパスワードを送る必要があり、 本番の環境で利用することは断じて非推奨です。

アプリケーションパスワードも似たような用途で使用されます。しかしながらこれは、あなたの通常のWordPressパスワードに代わるもので、ユニークであり破棄することが簡単で、WordPressのプロフィール画面で変更することができるものです。
これらのアプリケーションパスワードは、REST-APIや旧来のXML-RPCで使用されるもので、WordPressの管理画面にログインするために使用されるものではありません。

https://kinsta.com/jp/blog/wordpress-5-6/#rest-api
  Proposal: REST API Authentication / Application Passwords
  Application Passwords: Integration Guide
  Application Passwords feature plugin

https://wptech.kiichiro.work/post-13/
https://capitalp.jp/2020/10/19/wordpress-supports-application-password/

ベーシック
https://kinsta.com/jp/blog/wordpress-rest-api/

XML-RPC

https://kinsta.com/jp/blog/xmlrpc-php/

アプリケーションパスワード

WordPress 5.6の新機能がこちら(アクセシビリティ、パフォーマンス、セキュリティなど)

WordPress 5.6が外部アプリ認証のためのアプリケーションパスワードを導入

アプリケーションパスワード導入の経緯

WP REST API

wp-cli

https://make.wordpress.org/cli/handbook/
https://developer.wordpress.org/cli/commands/export/

ColorfulBoxでpython3を実行する

  • レンタルサーバーColorfulBoxでpython3を実行する
    https://lg-sys.com/colorfulbox-python/
  • レンタルサーバColorfulBoxでpythonを自動実行する方法(Cron)
    https://lg-sys.com/colorfulbox_auto_python/

その他

  • WordPress管理画面からダウンロードできるCSVファイルをcurlを使って自動保存したい
    https://teratail.com/questions/293887
  • オリジン間リソース共有 (CORS)
    https://developer.mozilla.org/ja/docs/Web/HTTP/CORS
  • HTTPとWordPressHTTP APIのガイド パート1
    https://kinsta.com/blog/wordpress-http-api-part-1/
  • Woo REST API
    https://woocommerce.github.io/woocommerce-rest-api-docs/#introduction
  • Convert curl syntax to Python
    https://curl.trillworks.com/
  • python でバージョン比較
    https://orebibou.com/ja/home/201703/20170330_001/