概要
wc_product_pre_has_unique_sku
フィルタは、WooCommerceにおいて製品のSKU(Stock Keeping Unit)が一意であるかどうかを確認する際に使用されます。このフィルタは、SKUのユニーク性を確認するカスタムロジックを実装したい場合に非常に有用です。このフィルタを利用することで、特定の条件に基づいてSKUのユニーク性を変更でき、以下のような機能を実装する際によく使用されます:
- SKUのカスタムフォーマットを定義する。
- 異なる製品タイプごとにSKUの一意性を確認する。
- サードパーティの在庫システムと連携する際のSKUバリデーション。
- ユーザーによるSKUの重複を防止するカスタムメッセージの表示。
- 特定の条件に基づくSKUの自動生成。
- SKUの一意性を担保するための追加条件設定。
構文
apply_filters( 'wc_product_pre_has_unique_sku', $is_unique, $sku, $product_id );
パラメータ
$is_unique
(bool) – 現在のSKUが一意であるかどうかの真理値。$sku
(string) – チェックするSKUの値。$product_id
(int) – チェック中の製品のID。
戻り値
- (bool) 新しいSKUが一意であると判定された場合は
true
、一意でない場合はfalse
。
使用可能なプラグインバージョン
- WooCommerce: 3.0以降
- WordPress: 4.0以降
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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: SKUが特定の文字列を含む場合に一意でないと判定する
add_filter( 'wc_product_pre_has_unique_sku', function( $is_unique, $sku, $product_id ) {
if ( strpos( $sku, 'SPECIAL' ) !== false ) {
return false; // 'SPECIAL'を含むSKUは一意でない
}
return $is_unique;
});
このコードは、SKUが’SPECIAL’という文字列を含む場合に、そのSKUが一意でないと判定します。他のSKUは変更しません。
サンプルコード2: 製品タイプに基づいてSKUの一意性を判定する
add_filter( 'wc_product_pre_has_unique_sku', function( $is_unique, $sku, $product_id ) {
$product = wc_get_product( $product_id );
if ( $product->get_type() === 'variable' ) {
// 変数商品の場合は一意性の判定を変更
return true;
}
return $is_unique;
});
このコードは、変数商品に対してはSKUの一意性を常に真として扱います。
サンプルコード3: ユーザーにエラーを表示するためのフィルタ
add_filter( 'wc_product_pre_has_unique_sku', function( $is_unique, $sku, $product_id ) {
if ( ! $is_unique ) {
wc_add_notice( __( 'このSKUはすでに存在します。', 'text-domain' ), 'error' );
}
return $is_unique;
});
このコードは、SKUが一意でない場合にユーザーにエラーメッセージを表示します。
サンプルコード4: SKUのプレフィックスを追加する
add_filter( 'wc_product_pre_has_unique_sku', function( $is_unique, $sku, $product_id ) {
$new_sku = 'PREFIX-' . $sku; // SKUにプレフィックスを追加
// 新しいSKUの一意性を鑑みる処理を入れる
return some_unique_sku_check_function( $new_sku );
});
このコードはSKUに「PREFIX-」というプレフィックスを追加し、その新しい形式で一意性をチェックします。
サンプルコード5: SKUの自動生成ロジックを追加
add_filter( 'wc_product_pre_has_unique_sku', function( $is_unique, $sku, $product_id ) {
if ( empty( $sku ) ) {
$sku = 'AUTO-' . uniqid(); // SKUが空の場合、自動生成したSKUを使用
}
return $is_unique; // 既存の一意性の判定を継続
});
このコードはSKUが空の場合に自動生成されたSKUを設定し、そのSKUの一意性をチェックします。