WooCommerce のREST APIを使用して、WordPressサイトのステータスレポートをメール受信する
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種類
クッキー認証
このクッキー認証が利用できるのは、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-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/