概要
tec_events_custom_tables_v1_commit_post_updates
アクションは、The Events Calendarプラグインでイベントをカスタムテーブルに保存したり更新したりする際に利用されます。このフックを使用することで、イベントが投稿されたり更新されたりした後に、カスタム処理を実行することが可能です。主に以下のような機能を実装する際によく使われます。
- カスタムメタデータの保存
- 他のテーブルへのデータ同期
- イベントのステータス変更
- 入力データのバリデーション
- 外部APIとの連携
- イベント作成後の通知送信
構文
do_action('tec_events_custom_tables_v1_commit_post_updates', $post_id, $post, $update);
パラメータ
$post_id
: 更新または作成されたイベントのポストID。$post
: 更新または作成されたイベントの投稿オブジェクト。$update
: 更新が行われた場合はtrue
、新規作成の場合はfalse
。
戻り値
このアクション自体は何も返しませんが、フックされた関数の戻り値に応じて他の処理を行うことができます。
使用可能なバージョン
- The Events Calendar: v4.0以降
- WordPress: v4.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('tec_events_custom_tables_v1_commit_post_updates', 'custom_save_event_meta', 10, 3);
function custom_save_event_meta($post_id, $post, $update) {
if (!$update) {
// 新規作成時にカスタムメタデータを保存
update_post_meta($post_id, 'custom_meta_key', 'custom_value');
}
}
このサンプルコードは、新たに作成されたイベントにカスタムメタデータを保存します。
サンプルコード 2
add_action('tec_events_custom_tables_v1_commit_post_updates', 'sync_event_to_external_api', 10, 3);
function sync_event_to_external_api($post_id, $post, $update) {
// ここで外部APIにイベントデータを送信
if ($update) {
// 更新時にのみ外部APIにデータを送信
$data = array('id' => $post_id, 'title' => $post->post_title);
// API通信ロジック
}
}
このサンプルは、イベントが更新された場合に外部APIへデータを送信します。
サンプルコード 3
add_action('tec_events_custom_tables_v1_commit_post_updates', 'validate_event_date', 10, 3);
function validate_event_date($post_id, $post, $update) {
$event_date = get_post_meta($post_id, 'event_date', true);
if (strtotime($event_date) < time()) {
// イベント日が過去の場合、エラーメッセージを表示
wp_die('イベント日が過去の日付です。');
}
}
このコードは、イベントの日付が過去の日付になっていないかを検証します。
サンプルコード 4
add_action('tec_events_custom_tables_v1_commit_post_updates', 'send_new_event_notification', 10, 3);
function send_new_event_notification($post_id, $post, $update) {
if (!$update) {
// 新しいイベントが作成されたときに通知を送信
wp_mail('admin@example.com', '新しいイベントが作成されました', 'イベントタイトル: ' . $post->post_title);
}
}
新しいイベントが作成されると、管理者に通知メールを送信します。
サンプルコード 5
add_action('tec_events_custom_tables_v1_commit_post_updates', 'log_event_changes', 10, 3);
function log_event_changes($post_id, $post, $update) {
if ($update) {
// 更新されたイベントの変更内容をログに保存
error_log('Event ID ' . $post_id . ' has been updated.');
}
}
このサンプルは、イベントが更新された際にその情報をエラーログに記録します。