プラグインWooCommerceのwoocommerce_get_item_downloadsフィルタの使用方法・解説

概要

woocommerce_get_item_downloadsフィルタは、WooCommerceでダウンロード可能な商品のダウンロードリンクを取得する際に使用されます。このフィルタは、カスタムダウンロードのデータを追加したり、既存のデータを変更したりするために利用されることが多いです。具体的な用途としては、以下のようなケースが考えられます。

  1. 商品に対して特定の条件を満たすダウンロードのみを表示する。
  2. ダウンロード可能なファイルのメタデータを追加する。
  3. 特定のユーザーグループに対してダウンロードリンクを制御する。
  4. ダウンロードファイルのURLを動的に生成する。
  5. 購入した商品のダウンロード権を管理する。
  6. プロモーションやキャンペーン用に特別なダウンロードリンクを提供する。

構文

apply_filters( 'woocommerce_get_item_downloads', $downloads, $item, $order );

パラメータ

  • $downloads (array): 商品のダウンロード情報の配列。
  • $item (object): 注文アイテムのオブジェクト。
  • $order (object): 注文のオブジェクト。

戻り値

  • (array): 修正されたダウンロード情報の配列。

使用可能なバージョン

  • WooCommerceのバージョン: 2.6以降
  • 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: ダウンロードリンクの条件付き表示

add_filter( 'woocommerce_get_item_downloads', 'custom_filter_downloads', 10, 3 );

function custom_filter_downloads( $downloads, $item, $order ) {
    // ユーザーの特定ロールをチェック
    if ( ! current_user_can( 'premium_member' ) ) {
        return array(); // プレミアムメンバーでない場合、ダウンロードリンクを表示しない
    }
    return $downloads;
}

このサンプルコードは、特定のユーザー権限(premium_member)がない場合、ダウンロードリンクを表示しないようにしています。

サンプル2: ダウンロードファイルのメタデータ追加

add_filter( 'woocommerce_get_item_downloads', 'add_custom_metadata_to_downloads', 10, 3 );

function add_custom_metadata_to_downloads( $downloads, $item, $order ) {
    // ダウンロードファイルにカスタムメタデータを追加
    foreach ( $downloads as &$download ) {
        $download['custom_meta'] = 'This is custom metadata'; // カスタムメタデータ
    }
    return $downloads;
}

このコードは、ダウンロードリンクにカスタムメタデータを追加する機能を持っています。

サンプル3: ダウンロードリンクのURLを動的に生成

add_filter( 'woocommerce_get_item_downloads', 'generate_dynamic_download_links', 10, 3 );

function generate_dynamic_download_links( $downloads, $item, $order ) {
    foreach ( $downloads as &$download ) {
        $download['file'] = 'https://example.com/downloads/' . $item->get_product_id() . . 'sample-file.zip'; // 動的生成URL
    }
    return $downloads;
}

こちらのサンプルは、ダウンロードリンクのURLを動的に生成して変更しています。

サンプル4: 特定のプロモーション用のダウンロードリンク管理

add_filter( 'woocommerce_get_item_downloads', 'manage_promotional_download_links', 10, 3 );

function manage_promotional_download_links( $downloads, $item, $order ) {
    if ( isset( $item['promotion_code'] ) && $item['promotion_code'] === 'SPECIAL_PROMO' ) {
        // プロモーションコードによるリンクの変更
        $downloads = array(
            array(
                'name' => 'Exclusive Download',
                'file' => 'https://example.com/promotions/exclusive-file.zip',
                'id'   => 1,
            ),
        );
    }
    return $downloads;
}

このサンプルは、プロモーションコードが適用された場合に特別なダウンロードリンクを提供します。

サンプル5: 購入した商品のダウンロード権を制御

add_filter( 'woocommerce_get_item_downloads', 'control_download_permissions', 10, 3 );

function control_download_permissions( $downloads, $item, $order ) {
    if ( $item->get_quantity() < 1 ) {
        return array(); // 購入数が1未満の場合、ダウンロードを無効にする
    }
    return $downloads;
}

このサンプルでは、購入数が1未満の場合、ダウンロードリンクを無効にしています。

これらのサンプルコードは、著作権フリーのものであり、WooCommerceのカスタマイズに役立つ基本的な使い方を示しています。

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


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