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

概要

woocommerce_downloadable_file_permission フィルタは、WooCommerceにおいてダウンロード可能な製品のファイルアクセス権を制御するために使用されるフックです。このフィルタを利用することで、特定の条件に基づいてダウンロードファイルの権限を変更したり、カスタマイズすることができます。一般的には以下のような機能を実装する際に使われます。

  1. 購入者が特定の条件を満たしていない場合、ダウンロードリンクを無効化する。
  2. ユーザーの会員ステータスに基づいて、アクセスできるダウンロードファイルを制限する。
  3. 特定のロールのユーザーに対して、ダウンロード可能なファイルを優先的に提供する。
  4. 商品の購入後に特定の期間内のみダウンロードを許可する。
  5. 購入履歴に基づいてファイルの再ダウンロードを制限する。
  6. クーポンや割引を使った購入時に特定のダウンロードファイルの権限を変更する。

構文

add_filter( 'woocommerce_downloadable_file_permission', 'custom_function', 10, 3 );

パラメータ

  • $permission (bool): 現在のパーミッション。
  • $download_id (int): ダウンロードファイルのID。
  • $order (WC_Order): 関連するオーダーオブジェクト。

戻り値

  • bool: 更新された権限の真偽値。

使用可能なプラグインおよびバージョン

  • WooCommerce: 3.0 以降
  • WordPress: 4.5 以降

この関数のアクションでの使用可能性

アクション 使用可能性
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_downloadable_file_permission', 'restrict_download_for_specific_user', 10, 3 );
function restrict_download_for_specific_user( $permission, $download_id, $order ) {
    $restricted_user_id = 123; // 限定するユーザーID
    if ( $order->get_user_id() === $restricted_user_id ) {
        return false; // アクセスを無効化
    }
    return $permission;
}

サンプルコード2: 購入から特定の期間のみダウンロードを許可

このコードは、購入から7日以内のみダウンロードを許可します。

add_filter( 'woocommerce_downloadable_file_permission', 'limit_download_time', 10, 3 );
function limit_download_time( $permission, $download_id, $order ) {
    $purchase_time = $order->get_date_created()->getTimestamp();
    $current_time = current_time('timestamp');
    if ( ($current_time - $purchase_time) > 604800 ) { // 7日 = 604800秒
        return false; // アクセスを無効化
    }
    return $permission;
}

サンプルコード3: 商品の購入履歴による再ダウンロード制限

ユーザーが特定の条件を満たさない場合、再ダウンロードを無効にします。

add_filter( 'woocommerce_downloadable_file_permission', 'restrict_redownload_for_specific_user', 10, 3 );
function restrict_redownload_for_specific_user( $permission, $download_id, $order ) {
    $user_orders = wc_get_orders(array(
        'customer_id' => $order->get_user_id(),
        'status' => 'completed',
        'limit' => -1
    ));
    if ( count($user_orders) < 1 ) {
        return false; // 他に購入がない場合、ダウンロードを無効化
    }
    return $permission;
}

サンプルコード4: 特定のロールのユーザーにだけファイルを提供

特定のユーザーロールに属する場合のみファイルにアクセスさせます。

add_filter( 'woocommerce_downloadable_file_permission', 'allow_download_for_specific_roles', 10, 3 );
function allow_download_for_specific_roles( $permission, $download_id, $order ) {
    if ( user_can( $order->get_user_id(), 'premium_user' ) ) {
        return true; // Premiumユーザーは許可
    }
    return false; // それ以外は拒否
}

サンプルコード5: クーポン使用時のダウンロード権限の調整

クーポンを使った場合、ダウンロード可能なファイルを特別に扱います。

add_filter( 'woocommerce_downloadable_file_permission', 'adjust_download_permission_with_coupon', 10, 3 );
function adjust_download_permission_with_coupon( $permission, $download_id, $order ) {
    if ( $order->get_coupon_codes() ) {
        return true; // クーポン利用時はダウンロードを許可
    }
    return $permission;
}

これらのサンプルコードは、WooCommerceの機能を活かしながら、柔軟なダウンロード管理を実現するためのものです。それぞれのコードは特有の要件に基づいて、ダウンロード権限を制御するための実装例です。

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


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