概要
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個以上の商品を含む大口注文に対してダウンロード権限を無制限に許可します。
これらのサンプルコードは著作権フリーのものです。