Gutenbergのパッケージのバージョン取得ライブラリ
こちらの記事で紹介したAPIをより簡単に利用するためのライブラリです。
処理
以下の順でデータの取得を試みます。
- ライブラリ内
- API
- リポジトリ
ライブラリ内
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 で 動的にコマンドを変える方法