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

概要

woocommerce_delete_order_downloadable_permissions フィルタは、WooCommerceのプラグイン内で、ダウンロード可能な商品の権限を処理する際に使用されるフックです。このフィルタを利用することで、特定の条件に基づいてダウンロード権限をカスタマイズすることができます。主に以下のような機能を実装する際に役立ちます:

  1. 購入者に特定のダウンロード権限を付与する。
  2. ダウンロード期限を過ぎた商品の権限を自動的に無効化する。
  3. 特定の商品カテゴリーに対して異なるダウンロード権限を設定する。
  4. ユーザーの役割(ロール)に基づくカスタマイズ。
  5. 複数ユーザーが同じアカウントを共有する場合の権限調整。
  6. 顧客からのリクエストに基づく即時の権限変更。

構文

apply_filters( 'woocommerce_delete_order_downloadable_permissions', $permissions, $order, $product );

パラメータ

  • $permissions (array) – 現在のダウンロード権限のリスト。
  • $order (WC_Order) – 注文オブジェクト。
  • $product (WC_Product) – 商品オブジェクト。

戻り値

  • (array) – ダウンロード権限の配列。

対応するバージョン

  • WooCommerce: 4.0以上
  • WordPress: 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_delete_order_downloadable_permissions', 'custom_downloadable_permissions', 10, 3);
function custom_downloadable_permissions($permissions, $order, $product) {
    // 特定の条件に基づきダウンロード許可を変更
    if ($order->get_total() > 100) {
        $permissions[$product->get_id()] = true; // 高額注文のユーザーに対してダウンロードを許可
    }
    return $permissions;
}

このコードは、総額が100ドルを超える注文の場合、その商品のダウンロードを許可する設定を行います。

サンプルコード 2

add_filter('woocommerce_delete_order_downloadable_permissions', 'limit_downloads_based_on_user', 10, 3);
function limit_downloads_based_on_user($permissions, $order, $product) {
    // 特定のユーザーにのみダウンロードを許可する
    if (user_can($order->get_user_id(), 'specific_role')) {
        $permissions[$product->get_id()] = true; // 特定の役割に基づいて許可
    } else {
        $permissions[$product->get_id()] = false; // 他は不許可
    }
    return $permissions;
}

このコードは、特定の役割を持つユーザーのみがダウンロードできるように制限します。

サンプルコード 3

add_filter('woocommerce_delete_order_downloadable_permissions', 'remove_expired_downloads', 10, 3);
function remove_expired_downloads($permissions, $order, $product) {
    // ダウンロード権限が期限切れの場合は削除
    if ($product->get_download_limit() < time()) {
        $permissions[$product->get_id()] = false; // 権限を無効化
    }
    return $permissions;
}

このコードは、ダウンロードの期限が切れた場合、その商品のダウンロード権限を削除します。

サンプルコード 4

add_filter('woocommerce_delete_order_downloadable_permissions', 'allow_reupload_for_customers', 10, 3);
function allow_reupload_for_customers($permissions, $order, $product) {
    // 顧客が間違ってダウンロードを削除した場合の再ダウンロードを許可
    if ($order->get_status() == 'completed') {
        $permissions[$product->get_id()] = true;
    }
    return $permissions;
}

このコードは、注文が完了している場合、顧客がダウンロードを再度行えるように権限を付与します。

サンプルコード 5

add_filter('woocommerce_delete_order_downloadable_permissions', 'custom_access_for_bulk_orders', 10, 3);
function custom_access_for_bulk_orders($permissions, $order, $product) {
    // 大口注文の場合、ダウンロードを制限なく許可
    if ($order->get_item_count() > 10) {
        $permissions[$product->get_id()] = true; // 大口注文
    }
    return $permissions;
}

このコードは、10個以上の商品を含む大口注文に対してダウンロード権限を無制限に許可します。

これらのサンプルコードは著作権フリーのものです。

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


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