概要
woocommerce_duplicate_product_exclude_meta
フィルタは、WooCommerceでの商品の複製時に特定のメタデータを複製対象から除外するために使用されるフックです。このフィルタを利用することにより、特定のメタ情報(例:カスタムフィールドや特定の設定)を複製することを防ぎ、製品の管理を容易にすることができます。
このフィルタは、以下のような機能を実装する際に役立ちます。
- 商品の特定のメタ情報を複製せずに作成したい場合
- 複製時に不要なカスタムフィールドを削除したい場合
- セキュリティ上の理由で特定のデータを複製から除外したい場合
- 複雑な商品設定をシンプルに保ちたい場合
- 特定のメタ情報によるエラーを回避したい場合
- 商品のバリエーション時に余分なデータを排除したい場合
構文
add_filter( 'woocommerce_duplicate_product_exclude_meta', 'custom_exclude_meta', 10, 2 );
パラメータ
$exclude_meta
(array): 省略するメタデータのキーのリスト。$product_id
(int): 複製元商品のID。
戻り値
- (array): 除外すべきメタデータのキーのリスト。
対応バージョン
- WooCommerce バージョン: 2.6.x 以降
- WordPress バージョン: 4.4.x 以降
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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_filter( 'woocommerce_duplicate_product_exclude_meta', 'exclude_custom_field', 10, 2 );
function exclude_custom_field( $exclude_meta, $product_id ) {
$exclude_meta[] = 'custom_product_field';
return $exclude_meta;
}
このコードは、商品の複製時に「custom_product_field」というメタフィールドを除外します。
サンプル2
add_filter( 'woocommerce_duplicate_product_exclude_meta', 'exclude_specific_meta', 10, 2 );
function exclude_specific_meta( $exclude_meta, $product_id ) {
if ( get_post_meta( $product_id, '_is_special_product', true ) ) {
$exclude_meta[] = '_special_note';
}
return $exclude_meta;
}
このコードは、特定のプロパティに基づいてメタフィールド _special_note
を除外します。
サンプル3
add_filter( 'woocommerce_duplicate_product_exclude_meta', 'exclude_priority_meta', 10, 2 );
function exclude_priority_meta( $exclude_meta, $product_id ) {
$priority_fields = array( '_priority_field_1', '_priority_field_2' );
return array_merge( $exclude_meta, $priority_fields );
}
このコードは、複製する際に優先度の高い2つのメタフィールドを除外します。
サンプル4
add_filter( 'woocommerce_duplicate_product_exclude_meta', 'exclude_variation_meta', 10, 2 );
function exclude_variation_meta( $exclude_meta, $product_id ) {
if ( has_term( 'variable', 'product_type', $product_id ) ) {
$exclude_meta[] = '_variation_attributes';
}
return $exclude_meta;
}
このサンプルは、バリエーション商品に関して特定のメタフィールドを除外します。
サンプル5
add_filter( 'woocommerce_duplicate_product_exclude_meta', 'exclude_inventory_meta', 10, 2 );
function exclude_inventory_meta( $exclude_meta, $product_id ) {
$exclude_meta[] = '_stock';
$exclude_meta[] = '_stock_status';
return $exclude_meta;
}
このコードは、複製時に在庫に関するメタデータを除外します。