概要
woocommerce_product_importer_pre_expand_data
は、WooCommerceでの商品データインポート処理において、データが拡張される前の段階でフックされるアクションです。このフックを利用することで、商品インポート前にデータを変更したり、新しいプロパティを追加したりすることが可能です。以下のような場合に使用されることが一般的です。
- インポートする商品のカスタムフィールドを追加
- 特定の条件に基づいてデータをフィルタリング
- デフォルトのデータをカスタマイズ
- インポートプロセス中のエラーハンドリング
- 外部APIからデータを取得して商品情報を更新
- 商品のタグやカテゴリをダイナミックに生成
構文
do_action( 'woocommerce_product_importer_pre_expand_data', $data );
パラメータ
$data
: インポートされる商品のデータを含む配列。
戻り値
このアクションは戻り値を持ちません。主にデータの拡張や変更が目的です。
使用可能なプラグインのバージョン
- WooCommerce: 3.0.0 以上
- WordPress: 4.0 以上
サンプルコード
サンプルコード1: カスタムフィールドの追加
このサンプルコードは、商品インポート時にカスタムフィールドを追加します。
add_action( 'woocommerce_product_importer_pre_expand_data', 'add_custom_field_to_import' );
function add_custom_field_to_import( $data ) {
$data['custom_field'] = 'value'; // カスタムフィールドを追加
return $data; // 変更されたデータを返す
}
このコードは、商品データに custom_field
というカスタムフィールドを追加します。
サンプルコード2: データのフィルタリング
このサンプルコードは、特定の条件に基づいてデータをフィルタリングします。
add_action( 'woocommerce_product_importer_pre_expand_data', 'filter_product_data' );
function filter_product_data( $data ) {
if ( $data['price'] < 0 ) {
$data['price'] = 0; // 価格が負の場合、0に変更
}
return $data;
}
価格が負の値であれば、0に変更する処理を行います。
サンプルコード3: デフォルト値のカスタマイズ
このコードは商品がインポートされる際に、特定のデフォルト値を設定します。
add_action( 'woocommerce_product_importer_pre_expand_data', 'set_default_product_data' );
function set_default_product_data( $data ) {
if ( empty( $data['sku'] ) ) {
$data['sku'] = 'default-sku'; // SKUが空の場合はデフォルト値を設定
}
return $data;
}
SKUが指定されていない場合、デフォルトのSKUを設定します。
サンプルコード4: エラーハンドリング
データの不備に対するエラーハンドリングを行います。
add_action( 'woocommerce_product_importer_pre_expand_data', 'handle_import_errors' );
function handle_import_errors( $data ) {
if ( empty( $data['name'] ) ) {
// 商品名が空の場合、エラーメッセージを表示
error_log( '商品名が未入力です。' );
}
return $data;
}
商品名が入力されていない場合にエラーログを出力します。
サンプルコード5: 外部APIからのデータ取得
外部APIを使用して商品情報を更新します。
add_action( 'woocommerce_product_importer_pre_expand_data', 'fetch_data_from_external_api' );
function fetch_data_from_external_api( $data ) {
$response = wp_remote_get( 'http://example.com/api/product/' . $data['id'] );
if ( is_array( $response ) && ! is_wp_error( $response ) ) {
$body = json_decode( $response['body'], true );
$data['price'] = $body['price']; // APIから取得した価格を使用
}
return $data;
}
特定の商品IDを以って外部APIから価格を取得し、商品データに反映させます。
この関数のアクションでの使用可能性
アクション名 | 使用例 |
---|---|
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 |