小ネタ。
あまり深い意味はないです。
WordPress.orgのAPIを使うことで、WordPressの最新バージョンをどこからでも取得することが出来ます。WordPressがアップデートチェックや自動更新に使用しているAPIを使用します。
これのなにが嬉しいかというと、例えば常に最新のバージョンをブログ記事やサイトの本文内に仕込むことが出来ます。
なお、この記事執筆時点での最新バージョンは4.7.2です。
curl+jqでAPIを叩き、バージョンを抜き出します。
以下、取得例。
リリース版
最新のリリース
定番。とりあえず手っ取り早く最新バージョンを得たい
Command:
curl https://api.wordpress.org/core/version-check/1.7/ |jq '.offers|first|.version' -r
Result:
4.7.2
ローカライズ版
locale
パラメーターをわたしてやることで 特定の言語へのローカライズバージョンが存在するものに絞れる。
curl https://api.wordpress.org/core/version-check/1.7/\?locale\=ja |jq '.offers|first|.version' -r
ブランチの最新マイナーバージョン
現在または過去のメジャーバージョンの最新マイナーバージョンを得たい時。
Command:
curl https://api.wordpress.org/core/version-check/1.7/\?version\=4.6 |jq '.offers |last |.version' -r
Result:
4.6.3
指定できるブランチはWPが本体の自動更新に対応した3.7以降,現在の最新までのすべてのバージョン。
開発版
最新開発版
日々ナイトリービルドで更新されているもの。現在は4.8系。
サフィックスの一部の文字列は時期によりalpha
, beta
, rc1
…となり、その後ろにリビジョン番号がついたりする。
現在の最新版を超えるメジャーバージョン以上(今なら>=4.8
を指定してやると取得できる。とりあえずありえないような大きな値にしておけばしばらくは裏切られないはず。
Command:
curl https://api.wordpress.org/core/version-check/1.7/\?version\=10 |jq '.offers|last|.version' -r
(10はとりあえず大きな数字)
Result:
4.8-alpha-40025
ちなみに、WP Beta Testerプラグインは以下のようにメジャーバージョンを+.1することで最新ナイトリーを取得している。
1 2 3 4 5 6 7 |
$versions = explode( '.', $preferred->current ); $versions[1] += 1; if ( 10 == $versions[1] ) { $versions[0] += 1; $versions[1] = 0; } $wp_version = $versions[0] . '.' . $versions[1] . '-wp-beta-tester'; |
マイナー開発版
リリース前を含むマイナーバージョンの最新版。
特に最新開発版からのバックポートや不具合修正が行われているが、未リリースのものなどが得られる。
Command:
curl https://api.wordpress.org/core/version-check/1.7/\?version\=4.7.3 |jq '.offers|last|.version' -r
Result:
4.7.3-alpha-40018
マイナーバージョンを現行のより大きく設定する。なんなら4.7.100
とでも指定しておけば……と思ったんだけどどうやらこの指定は最新リリースのブランチのみに利用可能の模様。(4.6.4
とかすると普通に4.7以上が返される)
ちなみにBeta Testerプラグインは同様に単純
1 2 3 |
$versions = explode( '.', $preferred->current ); $versions[2] = isset( $versions[2] ) ? $versions[2] + 1 : 1; $wp_version = $versions[0] . '.' . $versions[1] . '.' . $versions[2] . '-wp-beta-tester'; |
プラグイン
プラグインのAPIはいくつかある(よくわからない)けど単純にJSON返すやつをつかってこんな感じ。
Command:
curl https://api.wordpress.org/plugins/info/1.0/jetpack.json | jq .version -r
Result:
4.5
同エンドポイントではプラグインの説明やコントリビューター、タグ等も取得できる。locale=ja
で日本語に翻訳済みのものを得れる。(あれば)
テーマ
何故かテーマのAPIは仕様がよくわからなかったので、とりあえずアップデートチェック用のAPIを用いて最新バージョンの取得のみ行った。
Command:
curl https://api.wordpress.org/themes/update-check/1.1/ -d 'themes={"themes":{"twentyseventeen":{}}}' |jq .themes.twentyseventeen.new_version -r
Result:
1.1
W.org APIはいい加減PHPのシリアライズで対話したり中途半端なJSONをPOSTしたりするのやめてください。
WordPress.orgのAPIを利用して最新版を常に取得する方法をまとめましたが、クソって感じでした()
実際にWPが自動アップデート(チェック)に利用している関数は大体 update.php にまとまってると思うので参考に。