概要
wp_save_post_revision
アクションは、現状の投稿のリビジョンを作成する際に使用されます。このアクションは、投稿やページが保存されるたびに自動的に呼び出され、リビジョンが保存される直前の状態を取得できます。このアクションは、特にカスタム機能を追加したり、リビジョンの処理をカスタマイズしたりするためによく使用されます。以下に、よくある使用例を挙げます。
- 投稿のリビジョンにメタデータを追加する
- 保存時に特定の条件に基づいてリビジョンを除外する
- ログや通知を作成し、リビジョンの作成を追跡する
- 特定の投稿タイプのリビジョン作成を管理する
- 自動リビジョン保存のタイミングを調整する
- リビジョンが作成されたときに関連するカスタム処理を実行する
- リビジョンに基づいて特定のキャッシュをクリアする
- リビジョンを外部サービスと同期する
構文
do_action('wp_save_post_revision', $post);
パラメータ
$post
(WP_Post): 保存される投稿オブジェクト。
戻り値
このアクションには戻り値はありません。
関連する関数
使用可能なバージョン
wp_save_post_revision
アクションは、WordPress 2.6以降で使用可能です。
コアファイルのパス
このアクションは、wp-includes/post.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 |
サンプルコード
以下に、wp_save_post_revision
アクションを使ったサンプルコードを5点記載します。それぞれのサンプルコードは、何をしているのかの説明と共に示します。
サンプルコード 1
add_action('wp_save_post_revision', 'add_meta_to_revision');
function add_meta_to_revision($post) {
if ($post->post_type === 'post') {
// 投稿のリビジョンにメタデータを追加
add_metadata('post', $post->ID, 'custom_meta_key', 'custom_meta_value');
}
}
説明: 投稿のリビジョンが保存される際に、特定のメタデータを追加するサンプルコードです。custom_meta_key
というキーでメタデータを保存します。
サンプルコード 2
add_action('wp_save_post_revision', 'notify_on_revision');
function notify_on_revision($post) {
// リビジョンが作成されたときに通知を送信する
wp_mail('admin@example.com', '新しいリビジョンが保存されました', '投稿のリビジョンが保存されました。');
}
説明: リビジョンが作成されるたびに管理者に通知メールを送信するサンプルコードです。
サンプルコード 3
add_action('wp_save_post_revision', 'sync_revision_with_external_service');
function sync_revision_with_external_service($post) {
// 外部サービスにリビジョン情報を同期する
$data = [
'title' => $post->post_title,
'content' => $post->post_content,
];
wp_remote_post('https://example.com/sync', ['body' => json_encode($data)]);
}
説明: リビジョンが保存された際に、外部サービスにリビジョン情報を同期するサンプルコードです。
サンプルコード 4
add_action('wp_save_post_revision', 'remove_revisions_conditionally');
function remove_revisions_conditionally($post) {
// 条件に基づいてリビジョンを除外する
if ($post->post_status === 'draft') {
remove_action('wp_save_post_revision', 'remove_revisions_conditionally', 10);
}
}
説明: 特定の条件(この場合は投稿がドラフトの場合)に基づいてリビジョンの作成を無効化するサンプルコードです。
サンプルコード 5
add_action('wp_save_post_revision', 'log_revision_creation');
function log_revision_creation($post) {
// ログにリビジョン作成の情報を記録する
error_log('投稿のリビジョンが作成されました: ' . $post->ID);
}
説明: リビジョンが作成された際に、その情報をエラーログに記録するサンプルコードです。
これらのサンプルコードを活用することで、wp_save_post_revision
アクションの使用法を理解し、カスタム機能の実装に役立てることができます。