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

概要

woocommerce_download_productフィルタは、WooCommerceでデジタル商品のダウンロードリンクが生成される際に利用されます。このフィルタを使用すると、デジタル商品に関連する様々な情報を変更したり、カスタマイズしたりすることが可能です。具体的には、以下のような機能を実装する際によく使われます。

  1. ダウンロードリンクのカスタマイズ
  2. 特定の条件に基づくダウンロード権限の変更
  3. メール通知内容の変更
  4. ダウンロード数の制限設定
  5. ダウンロード有効期限の設定
  6. 商品ページへのカスタムフィールドの追加

フィルタの概要

  • 構文: add_filter( 'woocommerce_download_product', 'callback_function', 10, 2 );
  • パラメータ:
    • $downloads (array): ダウンロードリンクの情報。
    • $product (WC_Product): 対象の商品オブジェクト。
  • 戻り値: 変更されたダウンロードリンクの情報を含む配列。
  • 使用可能なWooCommerceのバージョン: 2.6.0以降
  • 使用可能なWordPressのバージョン: 4.5.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_download_product', 'custom_download_link_text', 10, 2 );
function custom_download_link_text( $downloads, $product ) {
    foreach ( $downloads as &$download ) {
        $download['name'] = '新しいリンクテキスト';
    }
    return $downloads;
}

サンプル 2: 特定ユーザーにのみダウンロードリンクを表示

このサンプルは、特定のユーザーにのみダウンロードリンクを表示します。

add_filter( 'woocommerce_download_product', 'restrict_download_link', 10, 2 );
function restrict_download_link( $downloads, $product ) {
    if ( ! current_user_can( 'special_access' ) ) {
        return [];
    }
    return $downloads;
}

サンプル 3: ダウンロード数を制限する

このコードでは、1人のユーザーがアクセスできるダウンロード数を制限します。

add_filter( 'woocommerce_download_product', 'limit_download_count', 10, 2 );
function limit_download_count( $downloads, $product ) {
    if ( count( $downloads ) > 3 ) {
        return array_slice( $downloads, 0, 3 );
    }
    return $downloads;
}

サンプル 4: ダウンロードの有効期限を追加する

このサンプルは、ダウンロードの有効期限を設定します。

add_filter( 'woocommerce_download_product', 'set_download_expiration', 10, 2 );
function set_download_expiration( $downloads, $product ) {
    foreach ( $downloads as &$download ) {
        $download['expires'] = strtotime( '+1 week' ); // 1週間後に期限切れ
    }
    return $downloads;
}

サンプル 5: カスタムフィールドの追加

このコードは、ダウンロードリンクにカスタムフィールドの情報を追加します。

add_filter( 'woocommerce_download_product', 'add_custom_field_to_download', 10, 2 );
function add_custom_field_to_download( $downloads, $product ) {
    foreach ( $downloads as &$download ) {
        $download['custom_field'] = 'カスタム情報';
    }
    return $downloads;
}

これらのサンプルはそれぞれ異なるニーズに応じてwoocommerce_download_productフィルタを利用する方法を示しています。

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


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