ワードプレスのserialize_blocks関数の使用方法・解説

概要

serialize_blocks 関数は、WordPress におけるブロックエディタ(Gutenberg)のブロック情報をシリアライズするための関数です。この関数は、ユーザーが作成したコンテンツをデータベースに保存できる形式に変換する際に使用されます。また、シリアライズされたデータは、HTML に変換される際の将来的な処理のために使用されることがあります。以下のようなシナリオでよく利用されます。

  1. コンテンツの保存時
  2. ブロックのエクスポート機能
  3. カスタムブロック作成時
  4. 記事のインポート機能
  5. テーマでのカスタムサポート
  6. プラグインが提供するブロックの動作
  7. DBからのデータの取得処理
  8. プレビュー表示の生成

構文

serialize_blocks( array $blocks )

パラメータ

  • $blocks (array) : シリアライズするブロックの配列。

戻り値

  • (string) : シリアライズされたブロック情報。

関連する関数

使用可能なバージョン

  • 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');
});

この関数について質問する


上の計算式の答えを入力してください