概要
woocommerce_process_shop_order_meta
は、WooCommerceでのショップオーダーのメタデータを保存する際にフックされるアクションです。このアクションは、オーダーの管理画面でメタデータが処理される瞬間に実行され、カスタムメタデータを追加したり、既存のメタデータを更新するための強力な方法を提供します。
このアクションは、以下のような機能を実装する際によく使われます。
- カスタムメタデータの保存
- オーダーのステータスに基づくフラグの追加
- 特定の条件に応じた通知メッセージの設定
- オーダーに関連するデータの追加と管理
- 他のプラグインとの統合による拡張
- ユーザーインターフェースのカスタマイズ
構文
add_action('woocommerce_process_shop_order_meta', 'my_custom_function', 10, 2);
パラメータ
$post_id
: 現在のオーダーのID$post
: オーダーオブジェクト
戻り値
このアクション自体は戻り値を持ちませんが、フックの内部で実行される関数によって、データベースの変更が行われます。
使用可能なプラグインWooCommerceのバージョン
このアクションは、WooCommerce 2.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('woocommerce_process_shop_order_meta', 'save_custom_order_meta', 10, 2);
function save_custom_order_meta($post_id, $post) {
if (isset($_POST['_custom_meta_key'])) {
update_post_meta($post_id, '_custom_meta_key', sanitize_text_field($_POST['_custom_meta_key']));
}
}
このコードは、オーダーの管理画面で _custom_meta_key
というカスタムフィールドからのデータを保存します。
サンプルコード2: ステータスに基づくフラグの追加
add_action('woocommerce_process_shop_order_meta', 'add_status_flag', 10, 2);
function add_status_flag($post_id, $post) {
if ($post->post_status === 'wc-completed') {
add_post_meta($post_id, '_completed_flag', 'yes', true);
}
}
このコードは、オーダーのステータスが「完了」になった場合に _completed_flag
というメタデータを追加します。
サンプルコード3: 特定の条件による通知メッセージの設定
add_action('woocommerce_process_shop_order_meta', 'set_order_notification', 10, 2);
function set_order_notification($post_id, $post) {
if (isset($_POST['notify_customer']) && $_POST['notify_customer'] === 'yes') {
update_post_meta($post_id, '_order_notification', 'The customer has been notified.', true);
}
}
このコードは、カスタムフィールド notify_customer
が「はい」に設定されている場合、オーダーメタに通知メッセージを追加します。
サンプルコード4: 他のプラグインとの統合
add_action('woocommerce_process_shop_order_meta', 'integrate_with_other_plugin', 10, 2);
function integrate_with_other_plugin($post_id, $post) {
if (function_exists('other_plugin_function')) {
other_plugin_function($post_id);
}
}
このコードは、他のプラグインの関数を呼び出して、オーダーが保存される際に追加の処理を実行します。
サンプルコード5: ユーザーインターフェースのカスタマイズ
add_action('woocommerce_process_shop_order_meta', 'customize_order_ui', 10, 2);
function customize_order_ui($post_id, $post) {
if (isset($_POST['ui_customization'])) {
update_post_meta($post_id, '_ui_customization', $_POST['ui_customization']);
}
}
このコードは、管理画面でのユーザーインターフェースのカスタマイズ情報を保存するためにメタデータを更新します。
これらのサンプルコードは、woocommerce_process_shop_order_meta
アクションを利用してWooCommerceのオーダー管理機能を拡張する際の具体的な実装例です。