WordPressのGutenbergハンドブックに載っている記述そのままでは作る方法が分からず、実装して試した内容です。
注意点
- Gutenbergがコアに入る前の段階の記事です
- 書き方だけではなく、語句や名称にも問題がある可能性があります
実現したいこと
- 記事にメタデータを設定する
ハンドブックでは以下のページに説明があります。
なお、metaタグ(meta name=""でrobotsなどに使うHTMLのmetaタグ)ではなく、WPのオブジェクト(投稿データなど)それぞれに付けることが出来るメタデータです(説明があってないかもしれませんが)。
サンプル
const { registerBlockType } = wp.blocks;
registerBlockType('my-plugin/event-location', {
title: 'meta author',
category: 'widgets',
attributes: {
author: {
type: 'integer',
source: 'meta',
meta: 'author'
},
},
edit( { attributes, setAttributes } ) {
function onChange( event ) {
setAttributes( { author: event.target.value } );
}
return <input value={ attributes.author } onChange={ onChange } type="text" />;
},
save () {
return null
}
})
続いてPHPファイル(プラグインで作っているならプラグイン内のPHPファイル、それ以外ならfunctions.phpなど)に以下を記載します。
//初期設定
add_action( 'enqueue_block_editor_assets', function() {
wp_enqueue_script(
'myplugin-gutenberge',
plugins_url( 'block.js', __FILE__ ),
[ 'wp-blocks' ]
);
} );
//配列を対象とする場合
function gutenberg_my_block_init() {
register_meta( 'post', 'author', array(
'show_in_rest' => true,
) );
}
add_action( 'init', 'gutenberg_my_block_init' );
//配列ではなく単体を対象とする場合
function gutenberg_my_block_init() {
register_meta( 'post', 'author', array(
'show_in_rest' => true,
//singleでメタキーがオブジェクトごとに1つの値を持つか、オブジェクトごとに値の配列を持つかを切り替える
//初期値はfalseで配列が対象となる
'single' => true,
) );
}
add_action( 'init', 'gutenberg_my_block_init' );
metaのオブジェクトが配列か否かで出力方法も変わりますが、それぞれ出力したい箇所に以下のように記載します。
//配列の場合
$postid = get_the_ID();
//postは投稿タイプで、投稿ページで設定したならpost。
//$postidはオブジェクトIDを入れるところだが、今回は記事IDでよい。
//authorはattributesで設定したキーを入れる。
$meta = get_registered_metadata( 'post', $postid, 'author' );
//1つだけ入れた前提なので、最初の1つだけ取り出す。
echo $meta[0];
//単体の場合
$postid = get_the_ID();
$meta = get_registered_metadata( 'post', $postid, 'author' );
echo $meta;
以下参考URL。
注意点
WPのREST-API(rest_output_link_wp_head含む)をfunctions.phpで無効にしている場合、metaなどは利用できずにエラーになります。
関連記事
Gutenberg(ブロックエディタ)に関連する記事一覧。
- [Gutenberg対応版]WordPressで複数のCSSをまとめてインラインCSSとして出力する
- @wordpress/create-blockで一つのプラグインに複数のブロックを入れる
- @wordpress/wp-env と @wordpress/create-block で簡単にブロック開発環境を作る
- 3度目のブロック開発環境(Docker Desktopとcreate-block)
- Gutenberg(ブロックエディタ)メモ
- Gutenberg(ブロックエディタ)メモ -Gutenbergの使い方で迷うところ
- Gutenberg(ブロックエディタ)メモ -ハンドブックでわからないところ1
- Gutenberg(ブロックエディタ)メモ -ハンドブックでわからないところ2
- Buttonを使う(MediaUploadとRichTextも含む)
- metaデータを設定する [現在表示中]
- Templatesとplaceholderを使う
- Toggleを使う
- カスタムHTMLを使う
- サイドバー(Inspector)を設定する
- サイドバーを作ってcheckboxを使う
- サイドバーを作ってラジオボタンを使う
- ショートコードの代替案的なブロックを作る
- ラジオボタンでクラスを変更可能なコードエディタブロックを作る
- 登録されているショートコードの一覧を表示したブロックを作る
- AddQuicktagのGutenberg対応に関して
- Classic Editorプラグインに関して
- wp_is_mobile関数を利用して出し分け機能をもったブロックを作る
- 任意のHTMLタグを範囲選択で挿入可能なツールバーを付ける
- 任意のHTMLタグを範囲選択で挿入可能なボタンをRichTextのツールバーに追加する
- 自動でテーマCSSの指定箇所をGutenberg用CSSとして用いる方法の検討
- 自動で出力されるブロック用のCSSを取除く
- Gutenberg関連の参考サイト:メモ
- WPのsetMeta()で複数のキーと値を保存する
- WPのブロックエディタでTypeError: Cannot read property ‘firstChild’ of nullのエラー:メモ
- WPのブロックエディタでUncaught Error: Minified React error #321のエラー:メモ
- WPのブロックエディタでタグをドロップダウンで変更する:メモ
- WPのブロックエディタでブロック追加用ボタンを表示させる:メモ
- WPのブロックエディタで親の値を子に設定する:メモ
- WPのブロック作成メモ
- WPの独自ブロックが設定されている時のみCSSやJSをフロントに表示する方法
- ブロック作成時のclassNameに関するメモ
- ブロック開発の環境構築におけるwp-scriptsとCreate Guten Blockのメモ
1人がこの記事を評価
役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。
連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。