thumbnail

Gutenbergのパッケージのバージョン取得ライブラリ

こちらの記事で紹介したAPIをより簡単に利用するためのライブラリです。

処理

以下の順でデータの取得を試みます。

  1. ライブラリ内
  2. API
  3. リポジトリ

ライブラリ内

API更新用のリポジトリを require しています。

このリポジトリ自体にもデータを置いてあるのでそれを使用します。

外部へのリクエストを行わないので処理は速いです。

API

ライブラリ内のデータはダウンロードした時点のものなので、最新のものはありません。

その場合は毎日更新しているAPIに問い合わせます。

リポジトリ

デイリー更新のAPIでも情報がない場合は直接リポジトリから取得します。

ただしパッチバージョンは考慮されません。

キャッシュ

結果は1日キャッシュされます。

ただし、WordPressのバージョンやGutenbergプラグインの使用状態、Gutenbergプラグインのバージョンが変更された場合はキャッシュはクリアされます。

インストール

composer require technote/gutenberg-packages

使用方法

<?php
use Technote\GutenbergPackages;

$packages = new GutenbergPackages();

// ブロックエディタかどうか
$packages->is_block_editor(); // true or false

// Gutenbergプラグインのバージョン
// プラグインが無効の時は空
$packages->get_gutenberg_version(); // e.g. 6.0.0

// パッケージのバージョン取得
// ブロックエディタが無効の時は false
$packages->get_editor_package_versions(); // array of (package => version)
/** e.g.
[
  "wp-a11y"        => "2.0.2",
  "wp-annotations" => "1.0.8",
  "wp-api-fetch"   => "2.2.8",

  ...

  "wp-url"         => "2.3.3",
  "wp-viewport"    => "2.1.1",
  "wp-wordcount"   => "2.0.3"
]
*/

// パッケージのバージョン個別取得
$packages->get_editor_package_version( 'wp-editor' ); // e.g. 9.0.11
$packages->get_editor_package_version( 'editor' ); // same as above

// パッケージが有効かどうか
$packages->is_support_editor_package( 'wp-editor' ); // true or false
$packages->is_support_editor_package( 'editor' ); // same as above

// パッケージをフィルタ
$packages->filter_packages( [
	'editor',
	'wp-editor',
	'test-package',
	'components',
	'wp-data',
	'wp-data',
] );
/** e.g.
[
	'wp-editor',
	'wp-components',
	'wp-data',
]
*/

// パッケージをフィルタしてバージョンを付与
$packages->fill_package_versions( [
	'editor',
	'wp-editor',
	'test-package',
	'components',
	'wp-data',
	'wp-data',
] );
/** e.g.
[
	'wp-editor'     => '9.0.11',
	'wp-components' => '7.0.8',
	'wp-data'       => '4.2.1',
]
*/

パッケージをフィルタすることで wp_enqueue_script の $deps に無効なパッケージが渡りません。

<?php
use Technote\GutenbergPackages;

$packages = new GutenbergPackages();
wp_enqueue_script( 'test-script', 'path/to/javascript/index.js', $packages->filter_packages( [
	'wp-block-editor',
	'wp-components',
	'wp-compose',
	'wp-element',
	'wp-editor',
], [ 'lodash' ] ) );

fill_package_versions で取得した値を wp_localize_script に渡すことで、JavaScript側でバージョン情報を使用することができます。

<?php
use Technote\GutenbergPackages;

$packages = new GutenbergPackages();

$depends = [
	'wp-block-editor',
	'wp-components',
	'wp-compose',
	'wp-data',
	'wp-element',
	'wp-editor',
];
wp_enqueue_script( 'test-script', 'path/to/javascript/index.js', $packages->filter_packages( $depends, [ 'lodash' ] ) );
wp_localize_script( 'test-script', 'PackageVersions', $packages->fill_package_versions( $depends) );
// JavaScript
console.log( PackageVersions );

Makefile で 動的にコマンドを変える方法
next article
arrow