概要
woocommerce_product_import_before_import
は、WooCommerceの製品インポートイベントで呼び出されるフックです。このアクションは、製品のインポートが開始される前に実行されるため、データの検証やカスタマイズ、ロギングなどの処理を行う際に利用されます。このアクションを使用することで、次のような機能を実装できます:
- インポートするデータのカスタムバリデーション
- 特定の条件に基づいたエラーメッセージの表示
- インポート前のデータ変換処理
- 特定のユーザー向けの通知の送信
- ロギング機能の追加
- 製品メタデータのカスタマイズ
構文
add_action('woocommerce_product_import_before_import', 'your_function_name', 10, 1);
パラメータ
$importer
(オブジェクト): インポート処理を行うオブジェクト。
戻り値
このアクション自体は値を返しませんが、カスタム関数内での処理に応じて、エラーメッセージやデータを返すことがあります。
使用可能なプラグインバージョン
- WooCommerce: 3.0 以降
- WordPress: 4.0 以降
サンプルコード
サンプルコード 1: データのバリデーション
add_action('woocommerce_product_import_before_import', 'validate_imported_data', 10, 1);
function validate_imported_data($importer) {
foreach ($importer->get_rows() as $row) {
if (empty($row['name'])) {
$importer->add_error(__('Product name is required.', 'your-text-domain'));
}
}
}
このコードは、インポートされる各製品の名前が空でないかを検証し、エラーがあればメッセージを追加します。
サンプルコード 2: データ変換の追加
add_action('woocommerce_product_import_before_import', 'modify_imported_data', 10, 1);
function modify_imported_data($importer) {
foreach ($importer->get_rows() as &$row) {
$row['price'] = floatval($row['price']) * 1.1; // 価格に10%の追加
}
}
このコードは、インポートされる製品の価格に10%を追加する処理を行います。
サンプルコード 3: ロギング機能の追加
add_action('woocommerce_product_import_before_import', 'log_import_process', 10, 1);
function log_import_process($importer) {
error_log('Import process started for ' . count($importer->get_rows()) . ' products.');
}
このコードは、インポートプロセスが開始されると、その情報をエラーログに記録します。
サンプルコード 4: エラーメッセージの表示
add_action('woocommerce_product_import_before_import', 'show_error_message', 10, 1);
function show_error_message($importer) {
if ($importer->get_error_count() > 0) {
wc_add_notice(__('There were some errors during the import.', 'your-text-domain'), 'error');
}
}
このコードは、エラーが発生した場合にエラーメッセージを表示します。
サンプルコード 5: ユーザーへの通知
add_action('woocommerce_product_import_before_import', 'notify_user_before_import', 10, 1);
function notify_user_before_import($importer) {
$user_id = get_current_user_id();
wp_mail(get_userdata($user_id)->user_email, 'Import Notification', 'Your import is starting now.');
}
このコードは、インポートが始まると現在のユーザーに通知を送信します。
この関数のアクションでの使用可能性
アクション名 | 使用の有無 |
---|---|
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 |