プラグインWooCommerceのwoocommerce_is_virtual関数の使用方法・解説

概要

woocommerce_is_virtual 関数は、WooCommerceの製品がデジタル商品であるかどうかを判断するために使用される関数です。この関数は、特に以下のような機能を実装する際によく使われます。

  1. デジタル商品と物理商品を区別するための条件分岐。
  2. チェックアウトプロセスでのデジタル商品の特別な扱い。
  3. 配送オプションを表示するかどうかの制御。
  4. 購入後のメール通知のカスタマイズ。
  5. デジタル商品の特典やクーポンの適用条件の設定。
  6. カートや出荷オプションの表示制御。

構文

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 'カートにはデジタル商品が含まれています。';
        }
    }
}

このサンプルコードは、カートの内容をチェックし、デジタル商品が含まれている場合にメッセージを表示します。

この関数について質問する


上の計算式の答えを入力してください