カスタムフィールドを投稿リビジョンに追加する方法

Cocoonカスタマイズ集
この記事は約2分で読めます。
記事内に広告が含まれています。

はじめに

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フィルターは既存の非リビジョン対応フィールドを後付けでリビジョンに追加する場合に便利です。
これにより、投稿履歴の管理や復元時の安全性を向上させることができます。

タイトルとURLをコピーしました