概要
woocommerce_delete_order_downloadable_permissions フィルタは、WooCommerceのプラグイン内で、ダウンロード可能な商品の権限を処理する際に使用されるフックです。このフィルタを利用することで、特定の条件に基づいてダウンロード権限をカスタマイズすることができます。主に以下のような機能を実装する際に役立ちます:
- 購入者に特定のダウンロード権限を付与する。
- ダウンロード期限を過ぎた商品の権限を自動的に無効化する。
- 特定の商品カテゴリーに対して異なるダウンロード権限を設定する。
- ユーザーの役割(ロール)に基づくカスタマイズ。
- 複数ユーザーが同じアカウントを共有する場合の権限調整。
- 顧客からのリクエストに基づく即時の権限変更。
構文
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個以上の商品を含む大口注文に対してダウンロード権限を無制限に許可します。
これらのサンプルコードは著作権フリーのものです。