概要
serialize_blocks
関数は、WordPress におけるブロックエディタ(Gutenberg)のブロック情報をシリアライズするための関数です。この関数は、ユーザーが作成したコンテンツをデータベースに保存できる形式に変換する際に使用されます。また、シリアライズされたデータは、HTML に変換される際の将来的な処理のために使用されることがあります。以下のようなシナリオでよく利用されます。
- コンテンツの保存時
- ブロックのエクスポート機能
- カスタムブロック作成時
- 記事のインポート機能
- テーマでのカスタムサポート
- プラグインが提供するブロックの動作
- DBからのデータの取得処理
- プレビュー表示の生成
構文
serialize_blocks( array $blocks )
パラメータ
- $blocks (array) : シリアライズするブロックの配列。
戻り値
- (string) : シリアライズされたブロック情報。
関連する関数
- https://refwp.com/?titleonly=1&s=serialize_blocks
- https://refwp.com/?titleonly=1&s=unserialize_blocks
使用可能なバージョン
- WordPress 5.0以降
コアファイルのパス
/wp-includes/blocks.php
この関数のアクションでの使用可能性
アクション名 | 使用可能性 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | 〇 |
register_sidebar | |
wp_loaded | 〇 |
send_headers | |
parse_query | |
pre_get_posts | |
wp | 〇 |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプルコード 1: ブロックのシリアライズ
このサンプルでは、複数のブロックをシリアライズし、結果を変数に保存します。
$blocks = [
[
'blockName' => 'core/paragraph',
'attrs' => [],
'innerHTML' => '<p>Hello, world!</p>',
],
[
'blockName' => 'core/image',
'attrs' => [],
'innerHTML' => '<img src="example.jpg" alt="Example Image"/>',
],
];
$serialized = serialize_blocks($blocks);
サンプルコード 2: 投稿の保存時にブロックをシリアライズ
このサンプルでは、投稿を保存する際にブロックデータをシリアライズしてデータベースに保存します。
add_action('save_post', function($post_id) {
$blocks = convert_to_blocks($_POST['content']);
$serialized_blocks = serialize_blocks($blocks);
update_post_meta($post_id, '_serialized_blocks', $serialized_blocks);
});
サンプルコード 3: シリアライズされたブロックのデータを復元
このサンプルでは、シリアライズされたデータをデシリアライズして元のブロックデータを取得します。
$serialized = get_post_meta($post_id, '_serialized_blocks', true);
$blocks = unserialize_blocks($serialized);
サンプルコード 4: カスタムレストAPIエンドポイントでの利用
このサンプルでは、REST APIのエンドポイントを作成し、シリアライズされたブロックを返します。
add_action('rest_api_init', function() {
register_rest_route('custom/v1', '/blocks', [
'methods' => 'GET',
'callback' => function() {
$blocks = get_blocks_data();
return serialize_blocks($blocks);
},
]);
});
サンプルコード 5: 投稿の編集画面での利用
このサンプルでは、投稿の編集画面で、ユーザーにシリアライズされたデータを表示するためのカスタムフィールドを作成します。
function display_serialized_blocks_meta_box($post) {
$serialized_blocks = get_post_meta($post->ID, '_serialized_blocks', true);
echo '<textarea>' . esc_textarea($serialized_blocks) . '</textarea>';
}
add_action('add_meta_boxes', function() {
add_meta_box('serialized_blocks', 'Serialized Blocks', 'display_serialized_blocks_meta_box', 'post');
});