概要
acf/save_postアクションは、エクステンションやカスタム処理を実行するために使用されます。このアクションは、WordPressの投稿やカスタムフィールドが保存されるときにトリガーされ、特定の条件に応じてアクションを実行できます。具体的には、$_POST データを保存するときに発生します。
このアクションは、以下のシナリオでよく使用されます:
- カスタムフィールドの値を基にして関連情報を計算する。
- フィールドの値を検証して、不正なデータを受け付けないようにする。
- 保存時に自動的に投稿のステータスを変更する。
- その他のカスタムフィールドと連携して、データの整合性を保つ。
- 保存後に通知を送信する。
- 外部APIと連携し、データを送信する。
構文
add_action('acf/save_post', 'my_acf_save_post');
function my_acf_save_post($post_id) {
// コードをここに追加
}
パラメータ
$post_id
: 保存された投稿のID。これを使用して、特定の投稿に関連するカスタムフィールドデータを操作できます。
戻り値
このアクション自体は値を戻しませんが、フックされた関数内での処理結果に基づいて、異なる動作を実行することが可能です。
対応バージョン
- Advanced Custom Fields (ACF): 5.0以上
- WordPress: 4.0以上
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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: カスタムフィールドの値に基づく条件付きロジック
このコードは、投稿が保存されたときにカスタムフィールドの特定の値をチェックし、それに基づいてメタデータを更新します。
add_action('acf/save_post', 'update_meta_on_save');
function update_meta_on_save($post_id) {
if (get_field('my_custom_field', $post_id) == 'yes') {
update_post_meta($post_id, 'my_meta_field', 'some_value');
}
}
引用元: [https://www.advancedcustomfields.com/resources/hooks/]
サンプル 2: 投稿のステータスを自動で変更
このコードは、特定の条件を満たす場合に投稿のステータスを「draft」に変更します。
add_action('acf/save_post', 'change_post_status');
function change_post_status($post_id) {
if (get_field('my_custom_condition', $post_id)) {
wp_update_post(array('ID' => $post_id, 'post_status' => 'draft'));
}
}
引用元: [https://www.advancedcustomfields.com/resources/hooks/]
サンプル 3: 保存時に通知を送信
このコードは、投稿が保存されたときに指定したメールアドレスに通知を送信します。
add_action('acf/save_post', 'send_notification_email');
function send_notification_email($post_id) {
$to = 'admin@example.com';
$subject = '新しい投稿が保存されました';
$message = '投稿ID: ' . $post_id;
wp_mail($to, $subject, $message);
}
引用元: [https://www.advancedcustomfields.com/resources/hooks/]
サンプル 4: 外部APIへのデータ送信
投稿が保存されたときに、外部APIにデータを送信するサンプルコードです。
add_action('acf/save_post', 'send_data_to_external_api');
function send_data_to_external_api($post_id) {
$data = array('post_id' => $post_id, 'status' => 'saved');
$response = wp_remote_post('https://api.example.com/data', array('body' => json_encode($data)));
}
引用元: [https://www.advancedcustomfields.com/resources/hooks/]
サンプル 5: カスタムフィールドの変更をログ
このコードは、指定したカスタムフィールドが変更された際の記録をログファイルに書き込みます。
add_action('acf/save_post', 'log_custom_field_changes');
function log_custom_field_changes($post_id) {
$old_value = get_field('my_custom_field', $post_id);
$new_value = $_POST['acf']['field_123456']; // 'field_123456' はフィールドキー
if ($old_value !== $new_value) {
file_put_contents('my_log.txt', "旧値: $old_value, 新値: $new_valuen", FILE_APPEND);
}
}
引用元: [https://www.advancedcustomfields.com/resources/hooks/]