【WordPress】投稿の保存・更新時にカスタム処理を追加する方法

【WordPress】投稿の保存・更新時にカスタム処理を追加する方法 WordPress

WordPressでは、投稿が保存または更新されたタイミングで独自の処理を追加することが可能です。たとえば、特定のカスタムフィールドを自動で設定したり、ログを記録したり、外部APIに通知を送るといった用途に使えます。

save_postアクションフックの概要

投稿の保存時に処理をフックさせるには、save_postアクションを利用します。このフックは、投稿が新規保存されたときや、既存の投稿が更新されたときに呼び出されます。

基本的な書き方は以下の通りです。

function my_custom_save_post($post_id) {
    // 自動保存やリビジョンの保存時はスキップ
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }

    // 投稿タイプを制限(例:post のみ)
    if (get_post_type($post_id) !== 'post') {
        return;
    }

    // カスタム処理をここに記述
    // 例:カスタムフィールドを自動追加
    update_post_meta($post_id, 'my_custom_field', '保存時に自動設定される値');
}
add_action('save_post', 'my_custom_save_post');

投稿タイプごとに処理を切り替える

get_post_type()を使えば、処理対象を特定の投稿タイプ(例:custom_post_type)に限定できます。

if (get_post_type($post_id) === 'custom_post_type') {
    // カスタム投稿タイプ用の処理
}

ユーザー権限のチェックも可能

投稿の更新を行うユーザーが適切な権限を持っているかどうかをチェックすることもできます。

if (!current_user_can('edit_post', $post_id)) {
    return;
}

save_post_{$post_type} を使ってより限定的に処理する

特定の投稿タイプに対してのみ処理を追加したい場合、save_post_postsave_post_custom_post_typeなど、より限定されたアクションフックを使うことができます。

function save_custom_post_data($post_id) {
    // カスタム処理
}
add_action('save_post_my_post_type', 'save_custom_post_data');

まとめ

save_postフックを利用することで、投稿の保存や更新時に柔軟なカスタム処理を追加することができます。カスタムフィールドの自動設定、外部サービスとの連携、管理ログの記録など、運用を自動化・最適化する上で非常に有用な手段です。