概要
woocommerce_product_import_pre_insert_product_object
アクションは、WooCommerceの製品データをインポートする際に、製品オブジェクトがデータベースに挿入される直前にフックされるアクションです。このアクションを利用することで、インポート時に製品オブジェクトのプロパティを変更したり、カスタマイズしたりすることができます。
このアクションは以下のような機能を実装する際によく使われます:
- カスタムフィールドの追加・編集
- 製品のステータス変更
- タクソノミーの割り当て
- 特定の条件に基づく製品データの検証
- インポート前に製品情報のログを記録
- 独自の計算ロジックを実装
構文
add_action('woocommerce_product_import_pre_insert_product_object', 'my_custom_function', 10, 2);
パラメータ
$product_object
(WC_Product): 製品オブジェクト$data
(array): 製品データの配列
戻り値
特に戻り値はありませんが、$product_objectを変更することができます。
バージョン
このアクションはWooCommerceバージョン3.0以降、WordPressバージョン4.5以降で使用可能です。
サンプルコード
サンプル1: カスタムフィールドの追加
このサンプルコードでは、製品オブジェクトにカスタムフィールドを追加します。
add_action('woocommerce_product_import_pre_insert_product_object', 'add_custom_field_to_product', 10, 2);
function add_custom_field_to_product($product_object, $data) {
$custom_field_value = isset($data['custom_field']) ? $data['custom_field'] : '';
$product_object->add_meta_data('custom_field', $custom_field_value);
}
サンプル2: 製品のステータスを変更
このサンプルは、インポートされた製品のステータスを「draft」に設定します。
add_action('woocommerce_product_import_pre_insert_product_object', 'change_product_status', 10, 2);
function change_product_status($product_object, $data) {
$product_object->set_status('draft');
}
サンプル3: タクソノミーの割り当て
このサンプルは、特定の製品カテゴリをインポートする際に製品に割り当てます。
add_action('woocommerce_product_import_pre_insert_product_object', 'assign_product_category', 10, 2);
function assign_product_category($product_object, $data) {
if (isset($data['category'])) {
$product_object->set_category_ids([$data['category']]);
}
}
サンプル4: インポートデータの検証
このサンプルコードでは、特定の条件に基づいて製品データが適切かどうかを確認します。
add_action('woocommerce_product_import_pre_insert_product_object', 'validate_import_data', 10, 2);
function validate_import_data($product_object, $data) {
if (empty($data['name'])) {
// 製品名が空の場合はエラーを発生させる
throw new Exception('製品名は必須です。');
}
}
サンプル5: ログの記録
このサンプルは、インポートされる製品の情報をログファイルに記録します。
add_action('woocommerce_product_import_pre_insert_product_object', 'log_imported_product_info', 10, 2);
function log_imported_product_info($product_object, $data) {
error_log('インポートされた製品: ' . $data['name']);
}
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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 |