概要
woocommerce_is_virtual
関数は、WooCommerceの製品がデジタル商品であるかどうかを判断するために使用される関数です。この関数は、特に以下のような機能を実装する際によく使われます。
- デジタル商品と物理商品を区別するための条件分岐。
- チェックアウトプロセスでのデジタル商品の特別な扱い。
- 配送オプションを表示するかどうかの制御。
- 購入後のメール通知のカスタマイズ。
- デジタル商品の特典やクーポンの適用条件の設定。
- カートや出荷オプションの表示制御。
構文
woocommerce_is_virtual( $product );
パラメータ
$product
(WP_Product):チェックする対象の製品オブジェクト。
戻り値
- boolean:製品がデジタル商品であれば
true
、そうでなければfalse
を返します。
使用可能なプラグインバージョン
- WooCommerce バージョン:すべてのバージョン
- WordPress バージョン:すべてのバージョン(WooCommerceプラグインが正しく動作するためには、一般的に最新のWordPressを推奨)
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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
if ( woocommerce_is_virtual( $product ) ) {
echo 'この商品はデジタル商品です。';
}
このサンプルコードは、特定の製品がデジタル商品である場合にメッセージを表示します。
サンプルコード2
add_action( 'woocommerce_cart_calculate_fees', 'add_custom_fee' );
function add_custom_fee() {
global $woocommerce;
foreach ( $woocommerce->cart->get_cart() as $cart_item ) {
$product = $cart_item['data'];
if ( woocommerce_is_virtual( $product ) ) {
// デジタル商品に対して特別な手数料を追加する処理
}
}
}
このコードは、カート内の各アイテムに対してデジタル商品の場合は特別な手数料を追加するためのフックを実装しています。
サンプルコード3
add_filter( 'woocommerce_shipping_package_needs_shipping', 'custom_virtual_product_shipping' );
function custom_virtual_product_shipping( $needs_shipping, $package ) {
foreach ( $package['contents'] as $item ) {
if ( woocommerce_is_virtual( $item['data'] ) ) {
return false; // デジタル商品があるため配送は不要
}
}
return $needs_shipping;
}
このサンプルコードは、カートにデジタル商品が含まれている場合、配送が不要とするフックを実装しています。
サンプルコード4
add_action( 'woocommerce_order_status_changed', 'notify_virtual_product' );
function notify_virtual_product( $order_id ) {
$order = wc_get_order( $order_id );
foreach ( $order->get_items() as $item_id => $item ) {
$product = $item->get_product();
if ( woocommerce_is_virtual( $product ) ) {
// デジタル商品の通知処理
}
}
}
このコードは、注文ステータスが変更された際に、デジタル商品に対する特定の通知処理を実行します。
サンプルコード5
add_action( 'woocommerce_before_cart', 'check_virtual_products' );
function check_virtual_products() {
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
if ( woocommerce_is_virtual( $cart_item['data'] ) ) {
echo 'カートにはデジタル商品が含まれています。';
}
}
}
このサンプルコードは、カートの内容をチェックし、デジタル商品が含まれている場合にメッセージを表示します。