概要
woocommerce_product_importer_before_set_parsed_data
は、WooCommerce プラグイン内で製品のデータをインポートする際に、解析されたデータが実際に設定される前に呼び出されるアクションフックです。このフックを使用することで、製品データのインポートプロセスをカスタマイズし、追加の処理を実施することが可能です。これにより、さまざまなニーズに応じて製品データを変更したり、追加のバリデーションを行ったりできます。
このアクションは、以下のような機能を実装する際によく使用されます。
- インポートする製品情報のカスタマイズ
- 特定の条件に基づくフィールド値の修正
- インポートされた製品のメタデータの追加
- インポート時のエラーチェックやバリデーション
- インポート元に応じたカテゴリやタグの設定
- 外部ソースとのデータ統合
構文
do_action( 'woocommerce_product_importer_before_set_parsed_data', $parsed_data, $product );
パラメータ
$parsed_data
(array): 解析された製品データ。$product
(WC_Product): 現在の製品オブジェクト。
戻り値
このアクションは何も値を返しません。
対応バージョン
- WooCommerce バージョン: 2.6.0 以降
- WordPress バージョン: 4.6 以降
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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_importer_before_set_parsed_data', 'customize_product_name', 10, 2 );
function customize_product_name( $parsed_data, $product ) {
if ( isset( $parsed_data['name'] ) ) {
$parsed_data['name'] = $parsed_data['name'] . ' (Imported)'; // 商品名に「(Imported)」を追加
}
}
このコードは、インポートされる商品名の末尾に「(Imported)」を追加します。
サンプルコード 2: カテゴリの自動設定
add_action( 'woocommerce_product_importer_before_set_parsed_data', 'set_default_category', 10, 2 );
function set_default_category( $parsed_data, $product ) {
if ( empty( $parsed_data['categories'] ) ) {
$parsed_data['categories'] = array( 'Default Category' ); // カテゴリが空の場合、デフォルトのカテゴリを設定
}
}
このコードでは、インポートされた製品にカテゴリが指定されていない場合にデフォルトのカテゴリ「Default Category」を設定します。
サンプルコード 3: カスタムメタデータの追加
add_action( 'woocommerce_product_importer_before_set_parsed_data', 'add_custom_meta_data', 10, 2 );
function add_custom_meta_data( $parsed_data, $product ) {
$parsed_data['_custom_meta_key'] = 'Custom Value'; // カスタムメタデータを追加
}
このサンプルでは、インポートする製品にカスタムメタデータを追加しています。
サンプルコード 4: エラーチェックの実装
add_action( 'woocommerce_product_importer_before_set_parsed_data', 'validate_imported_data', 10, 2 );
function validate_imported_data( $parsed_data, $product ) {
if ( empty( $parsed_data['sku'] ) ) {
// SKUが空の場合、エラーを返す
throw new Exception( 'SKUは必須です。' );
}
}
このコードは、インポートされたデータにSKUが含まれていない場合に、エラーを投げます。
サンプルコード 5: 特定のフィールドの条件付き変更
add_action( 'woocommerce_product_importer_before_set_parsed_data', 'conditional_field_change', 10, 2 );
function conditional_field_change( $parsed_data, $product ) {
if ( isset( $parsed_data['price'] ) && $parsed_data['price'] < 10 ) {
$parsed_data['price'] = 10; // 価格が10未満の場合、最低価格を10に設定
}
}
このコードは、インポートされる価格が10未満の場合に、価格を10に引き上げる条件付きの変更を行っています。