概要
フィルターフック wc_product_sku_enabled
は、WooCommerce の製品 SKU(Stock Keeping Unit)の機能を制御するために使用されます。このフィルタを使用することで、SKUを有効化または無効化することが可能になります。具体的には、以下のような機能を実装する際によく使われます。
- SKUの表示/非表示の切り替え
- 管理者権限に基づくSKUフィールドの制御
- 商品の種類に応じたSKUのカスタマイズ
- 特定の条件でのSKUの強制無効化
- 外部プラグインとの連携によるSKUの動的な制御
- フロントエンドおよびバックエンドでのSKUフィールドのカスタマイズ
構文
add_filter('wc_product_sku_enabled', 'your_function_name', 10, 2);
パラメータ
bool
$enabled: SKUが現在有効かどうかの真偽値。WP_Product
$product: SKUを確認している製品のオブジェクト。
戻り値
bool
: SKUの有効/無効を示す真偽値(デフォルトはtrue
)。
使用可能なプラグインWooCommerceのバージョン
- 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_sku_enabled', '__return_false');
このコードは全ての製品に対してSKUを無効化します。
サンプルコード2: 管理者のみSKUを有効化
add_filter('wc_product_sku_enabled', 'enable_sku_for_admins', 10, 2);
function enable_sku_for_admins($enabled, $product) {
return current_user_can('administrator') ? true : false;
}
このコードは、現在のユーザーが管理者の場合のみSKUを有効にします。
サンプルコード3: 特定の製品タイプでのSKUの制御
add_filter('wc_product_sku_enabled', 'custom_sku_control', 10, 2);
function custom_sku_control($enabled, $product) {
if ($product->get_type() === 'external') {
return false;
}
return $enabled;
}
このコードは、製品タイプが外部製品である場合はSKUを無効化します。
サンプルコード4: 特定のカスタムフィールドに基づくSKUの制御
add_filter('wc_product_sku_enabled', 'sku_based_on_custom_field', 10, 2);
function sku_based_on_custom_field($enabled, $product) {
$custom_field_value = get_post_meta($product->get_id(), 'disable_sku', true);
return $custom_field_value ? false : true;
}
このコードは、特定のカスタムフィールドが存在する場合にSKUを無効にします。
サンプルコード5: フロントエンドでのSKUの有効化制御
add_filter('wc_product_sku_enabled', 'front_end_sku_control', 10, 2);
function front_end_sku_control($enabled, $product) {
if (is_product() && !is_user_logged_in()) {
return false;
}
return $enabled;
}
このコードは、フロントエンドでログインしていないユーザーにはSKUを無効化します。
それぞれのサンプルコードは、異なるコンテキストで wc_product_sku_enabled
フィルターフックを使用して、SKUフィールドの表示を制御する方法を示しています。