概要
woocommerce_product_duplicate
アクションフックは、WooCommerceプラグイン内で製品が複製される際にトリガーされます。このアクションを使用することで、製品の複製処理にカスタムアクションを追加することができます。たとえば、製品のメタデータの更新、特定のログの作成、または製品に関連する他のデータの処理など、多様な機能を実装することができます。
このフックは、以下のような状況でよく使われます:
1. 複製された製品に特定のタグやカテゴリを自動的に付与する。
2. 自動的に関連商品の設定を行う。
3. 複製時に特定のカスタムフィールドをコピーする。
4. 複製した製品に対してメール通知を送信する。
5. ユーザーに成功メッセージを表示する。
6. バックエンドのデータベースにログを残す。
構文
do_action( 'woocommerce_product_duplicate', $new_product_id, $product );
パラメータ
$new_product_id
(int): 複製された新しい製品のID。$product
(WC_Product): 複製元の製品オブジェクト。
戻り値
このアクションフックには戻り値はありません。
使用可能なバージョン
- WooCommerce バージョン: 3.0.0以降(一部のバージョンによって動作が異なる可能性があります)
- WordPress バージョン: 4.0以降(WooCommerceとの互換性に依存)
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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_product_duplicate', 'duplicate_custom_fields', 10, 2 );
function duplicate_custom_fields( $new_product_id, $product ) {
$custom_field_value = get_post_meta( $product->get_id(), 'custom_field_key', true );
update_post_meta( $new_product_id, 'custom_field_key', $custom_field_value );
}
このコードは、元の製品からカスタムフィールドの値を取得し、新しく複製された製品に同じ値を設定します。
(引用元: https://woocommerce.com/)
サンプルコード 2: 複製された製品に自動タグ付け
add_action( 'woocommerce_product_duplicate', 'auto_tag_duplicate_product', 10, 2 );
function auto_tag_duplicate_product( $new_product_id, $product ) {
wp_set_object_terms( $new_product_id, '新タグ名', 'product_tag', true );
}
このコードは、新しく複製された製品に特定のタグを自動で設定します。
(引用元: https://woocommerce.com/)
サンプルコード 3: 複製時に通知を送信
add_action( 'woocommerce_product_duplicate', 'send_duplicate_notification', 10, 2 );
function send_duplicate_notification( $new_product_id, $product ) {
$to = 'admin@example.com';
$subject = '製品が複製されました';
$message = '製品 ID ' . $product->get_id() . ' が複製されました。新しい製品 ID は ' . $new_product_id;
wp_mail( $to, $subject, $message );
}
このコードは、製品が複製されたときに管理者にメール通知を送信します。
(引用元: https://woocommerce.com/)
サンプルコード 4: 複製された製品の在庫を設定
add_action( 'woocommerce_product_duplicate', 'set_stock_for_duplicate_product', 10, 2 );
function set_stock_for_duplicate_product( $new_product_id, $product ) {
$stock_quantity = $product->get_stock_quantity();
update_post_meta( $new_product_id, '_stock', $stock_quantity );
}
このコードは、複製された製品に元の製品の在庫数を設定します。
(引用元: https://woocommerce.com/)
サンプルコード 5: 複製後にカスタムログを残す
add_action( 'woocommerce_product_duplicate', 'log_duplicate_product', 10, 2 );
function log_duplicate_product( $new_product_id, $product ) {
error_log( '製品 ID ' . $product->get_id() . ' が複製されました。新 ID: ' . $new_product_id );
}
このコードは、製品が複製された際にログを記録します。
(引用元: https://woocommerce.com/)