はじめに
WordPress 6.4から、カスタムフィールドも投稿リビジョンとして保存できるようになりました。
これにより、プラグインで利用されているカスタムフィールドもリビジョン管理の対象に含めることが可能です。
この記事では、この方法について説明します。
カスタムフィールドをリビジョン対応にする方法
例えば、カスタムフィールドmy_fieldに対してrevisions_enabled = trueを設定すると、投稿を保存する際にその値も自動的にリビジョンに保存されます。
実装手順
以下のコードをfunctions.phpに追加します。
add_action('init', function () {
register_meta(
'post',
'my_field',
[
'show_in_rest' => true,
'single' => true,
'type' => 'string',
'revisions_enabled' => true,
]
);
});
非リビジョン対応カスタムフィールドをリビジョンに追加する方法
wp_post_revision_meta_keysフィルターを使って、例えばカスタムフィールドmy_fieldを追加すると、既存のリビジョン非対応フィールドも投稿リビジョンに含めることができます。
実装手順
以下のコードをfunctions.phpに追加します。
add_filter('wp_post_revision_meta_keys', function ($keys) {
$meta_key = 'my_field';
// リビジョン対象に含まれていなければ追加
if (!in_array($meta_key, $keys, true)) {
$keys[] = $meta_key;
}
return $keys;
});
さいごに
今回紹介した方法を使えば、WordPress 6.4からカスタムフィールドを投稿リビジョンに含めることが可能です。revisions_enabledを使った方法は新規フィールド向け、wp_post_revision_meta_keysフィルターは既存の非リビジョン対応フィールドを後付けでリビジョンに追加する場合に便利です。
これにより、投稿履歴の管理や復元時の安全性を向上させることができます。

