Gutenbergのパッケージのバージョン取得API

gutenberg WordPress

Gutenbergは下位互換性はあまり考慮されておらず、破壊的な変更が度々発生します。

また、それぞれの環境で使用されているGutenbergや使用されているパッケージのバージョンを取得する方法がありません

下記の記事で書いてあるように一応頑張れば可能ですが、開発者が下位互換性を考慮するのはかなり大変です。

これを解決するために、Gutenbergや利用されているパッケージのバージョンを取得するためのAPIを作成しました。

バージョン取得API

technote-space/gutenberg-package-versions
Versions of Gutenberg's packages (auto updated by Travis CI) - technote-space/gutenberg-package-versions

このリポジトリは

  • Gutenberg のバージョンごとに使用されているパッケージ及びそれらのバージョン
  • WP Core のバージョンごとに使用されているパッケージ及びそれらのバージョン

をそれぞれ GitHub から取得しAPI化します。

TravisCIのクーロンを使用して毎日チェックを行い、更新があれば自動でAPIの情報も更新されます。

サマリー取得API

それぞれの最新タグ(バージョン)の情報や最終更新に関する情報を返します。

エンドポイント

https://api.wp-framework.dev/api/v1/summary.json

取得例

{
  "gutenberg": {
    "tag": "6.1.1",
    "url": "https://api.wp-framework.dev/api/v1/gutenberg/tags/6.1.1.json"
  },
  "wp": {
    "tag": "5.2.2",
    "url": "https://api.wp-framework.dev/api/v1/wp-core/tags/5.2.2.json"
  },
  "last_updated": {
    "date": "13 July 2019 17:21:41 UTC",
    "url": "https://travis-ci.com/technote-space/gutenberg-package-versions/builds/119035815"
  }
}

タグ一覧API

有効なタグ(バージョン)の一覧を返します。

エンドポイント

https://api.wp-framework.dev/api/v1/gutenberg/tags.json
https://api.wp-framework.dev/api/v1/wp-core/tags.json

取得例

[
  "5.0.0",
  "5.0.1",
  "5.0.2",
  "5.0.3",
  "5.0.4",
  "5.0.5",
  "5.1.0",
  "5.1.1",
  "5.2.0",
  "5.2.1",
  "5.2.2"
]

バージョン取得API(一部取得)

指定したタグ(バージョン)のパッケージの情報を返します。

エンドポイント

https://api.wp-framework.dev/api/v1/gutenberg/tags/${tag}.json
https://api.wp-framework.dev/api/v1/wp-core/tags/${tag}.json
https://api.wp-framework.dev/api/v1/gutenberg/tags/3.3.0.json
https://api.wp-framework.dev/api/v1/gutenberg/tags/5.2.0.json
https://api.wp-framework.dev/api/v1/wp-core/tags/5.2.0.json

取得例

{
  "wp-a11y": "2.0.2",
  "wp-annotations": "1.0.8",
  "wp-api-fetch": "2.2.8",
  "wp-autop": "2.0.2",
  "wp-blob": "2.1.0",
  "wp-block-editor": "1.0.0-alpha.0",
  "wp-block-library": "2.2.16",
  "wp-block-serialization-default-parser": "2.0.5",
  "wp-block-serialization-spec-parser": "2.0.3",
  "wp-blocks": "6.0.7",
  "wp-components": "7.0.8",
  "wp-compose": "3.0.1",
  "wp-core-data": "2.0.17",
  "wp-data": "4.2.1",
  "wp-date": "3.0.1",
  "wp-deprecated": "2.0.5",
  "wp-dom": "2.0.8",
  "wp-dom-ready": "2.0.2",
  "wp-editor": "9.0.11",
  "wp-edit-post": "3.1.11",
  "wp-element": "2.1.9",
  "wp-escape-html": "1.0.1",
  "wp-format-library": "1.2.14",
  "wp-hooks": "2.0.5",
  "wp-html-entities": "2.0.4",
  "wp-i18n": "3.1.1",
  "wp-is-shallow-equal": "1.1.5",
  "wp-keycodes": "2.0.6",
  "wp-list-reusable-blocks": "1.1.21",
  "wp-notices": "1.1.3",
  "wp-nux": "3.0.9",
  "wp-plugins": "2.0.11",
  "wp-priority-queue": "1.0.0-alpha.0",
  "wp-redux-routine": "3.0.4",
  "wp-rich-text": "3.0.7",
  "wp-shortcode": "2.0.2",
  "wp-token-list": "1.1.0",
  "wp-url": "2.3.3",
  "wp-viewport": "2.1.1",
  "wp-wordcount": "2.0.3"
}

バージョン取得API(全部取得)

全ての有効なタグ(バージョン)に関してパッケージの情報を返します。

一度に全部の情報が欲しい場合に使用します。

エンドポイント

https://api.wp-framework.dev/api/v1/gutenberg/versions.json
https://api.wp-framework.dev/api/v1/wp-core/versions.json

Composer

Composer から利用することでローカルからデータを利用できます。

technote/gutenberg-package-versions - Packagist
gutenberg package versions
composer require technote/gutenberg-package-versions

ヘルパーを利用して情報を取得できます。

<?php

use Technote\GutenbergPackageVersionProvider;

// for Gutenberg
$provider = new GutenbergPackageVersionProvider();

$provider->get_tags(); // tags

$provider->get_versions(); // array of (tag => packages)
$provider->get_versions( '5.2.0' ); // array of (package => version)

$provider->get_package_version( '5.1.0', 'wp-block-editor' ); // false
$provider->get_package_version( '5.2.0', 'wp-block-editor' ); // 1.0.0-alpha.0

$provider->package_exists( '5.1', 'wp-block-editor' ); // false
$provider->package_exists( '5.2.0', 'wp-block-editor' ); // true
$provider->package_exists( 'v5.2', 'wp-block-editor' ); // true

// for WP Core
$provider = new GutenbergPackageVersionProvider( 'wp' );

$provider->get_tags(); // tags

$provider->get_versions(); // array of (tag => packages)
$provider->get_versions( '5.2.0' ); // array of (package => version)

$provider->get_package_version( '5.1.0', 'wp-block-editor' ); // false
$provider->get_package_version( '5.2.0', 'wp-block-editor' ); // 2.0.1

$provider->package_exists( '5.1', 'wp-block-editor' ); // false
$provider->package_exists( '5.2.0', 'wp-block-editor' ); // true
$provider->package_exists( 'v5.2', 'wp-block-editor' ); // true

ラッパー

前述のAPIを使用することで、互換性を考慮できます。

  1. Gutenbergプラグインが有効かどうかを取得
  2. 有効な場合はそのバージョンを取得
  3. 有効でない場合はWordPressのバージョンを取得
  4. 取得したバージョンのパッケージ情報をAPIから取得
  5. パッケージのバージョンごとに処理を書く

ただ、APIから情報を取得したり、取得した情報を利用するための手段を用意したりするのは面倒なので、これらの処理をまとめたものを用意しています。

Gutenbergのパッケージのバージョン取得ライブラリ
こちらの記事で紹介したAPIをより簡単に利用するためのライブラリです。処理以下の順でデータの取得を試みます。ライブラリ内APIリポジトリライブラリ内API更新用のリポジトリを req...

コメント

タイトルとURLをコピーしました