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

概要

woocommerce_is_downloadable 関数は、WooCommerce の製品がダウンロード可能かどうかを判定するための関数です。この関数は主に、デジタル商品を取り扱うオンラインストアで使用されます。デジタル商品が購入された際に、ダウンロードリンクを表示するかどうかのロジックを実装する際に役立ちます。

よく使われるシナリオ

  1. 購入者向けのダウンロードリンクの表示
  2. 管理者向けの注文管理におけるダウンロード商品のフィルタリング
  3. カスタムテーマでのダウンロード商品の表示調整
  4. ユーザーアカウントページでの過去のダウンロード履歴の管理
  5. Eメールでのダウンロードリンクの送信
  6. カスタム機能でのサブスクリプション商品管理

構文

woocommerce_is_downloadable( $product_id );

パラメータ

  • $product_id (int): チェック対象の製品のID。

戻り値

  • (bool): 製品がダウンロード可能な場合は true、それ以外は false を返します。

使用可能なバージョン

  • WooCommerce バージョン: 2.6.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: ダウンロードリンクの表示

$product_id = 123; // 製品ID
if (woocommerce_is_downloadable($product_id)) {
    echo '<a href="download_link_url">ダウンロードリンク</a>';
}

このサンプルコードは、特定の製品がダウンロード可能な場合にダウンロードリンクを表示します。

サンプル2: 管理者の注文管理ページでのフィルタリング

add_filter('woocommerce_my_account_my_orders_columns', 'custom_order_columns');
function custom_order_columns($columns) {
    foreach ($columns as $key => $column) {
        // 特定の条件でダウンロード商品をフィルタリングするロジック
    }
    return $columns;
}

このコードは、ユーザーのアカウントページの注文リストにおいて、ダウンロード可能な製品に基づいて列をカスタマイズします。

サンプル3: 過去のダウンロード履歴の表示

$orders = wc_get_orders(array('customer_id' => get_current_user_id()));
foreach ($orders as $order) {
    foreach ($order->get_items() as $item) {
        if (woocommerce_is_downloadable($item->get_product_id())) {
            echo 'ダウンロード商品: ' . $item->get_name();
        }
    }
}

このサンプルコードは、ログインユーザーの過去の注文からダウンロード商品をリスト表示します。

サンプル4: Eメールテンプレートにダウンロードリンクを追加

add_action('woocommerce_email_order_details', 'add_download_link_email', 10, 4);
function add_download_link_email($order, $sent_to_admin, $plain_text, $email) {
    foreach ($order->get_items() as $item) {
        if (woocommerce_is_downloadable($item->get_product_id())) {
            echo 'ダウンロードリンク: <a href="download_link_url">こちら</a>';
        }
    }
}

このサンプルコードは、注文確認メールにダウンロードリンクを追加します。

サンプル5: カスタムクエリでデジタル商品をフィルタリング

add_action('pre_get_posts', 'filter_downloadable_products');
function filter_downloadable_products($query) {
    if (!is_admin() && $query->is_main_query() && $query->is_post_type_archive('product')) {
        $query->set('meta_query', array(
            array(
                'key' => '_downloadable',
                'value' => 'yes',
            ),
        ));
    }
}

このコードは、公開された製品アーカイブページでダウンロード可能な製品のみを取得するためのカスタムメタクエリを設定します。

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


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