概要
woocommerce_grant_product_download_access
フィルタは、WooCommerceでデジタル商品やダウンロード可能な商品のダウンロード権限を管理するために使用されます。このフィルタを用いることで、特定の条件に基づいてユーザーにダウンロードアクセスを許可または拒否することができます。以下はこのフィルタがよく使われるシナリオの例です。
- 特定のユーザーグループにのみダウンロードアクセスを許可する。
- プロモーションに基づいて特定のユーザーにダウンロード権限を付与する。
- 商品購入後に一定期間アクセスを許可する。
- 購入履歴に応じて特定の商品ダウンロードを許可する。
- 限定キャンペーン商品としてダウンロードを制限する。
- 試用版ユーザーに一定のダウンロード数量を制限する。
構文
add_filter('woocommerce_grant_product_download_access', 'custom_function', 10, 3);
パラメータ
$grant
(bool): ダウンロードアクセスが許可されるかどうかを示すフラグ。$download
(object): ダウンロードオブジェクト。$product
(object): 関連する商品オブジェクト。
戻り値
- (bool): ダウンロードアクセスを許可する場合は
true
、そうでなければfalse
。
使用可能なWooCommerceのバージョン
- WooCommerce 3.0以降
使用可能なWordPressのバージョン
- WordPress 4.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_grant_product_download_access', 'custom_grant_access', 10, 3);
function custom_grant_access($grant, $download, $product) {
// 特定のユーザーIDがある場合にのみダウンロードを許可
if (get_current_user_id() === 5) {
return true; // アクセスを許可
}
return false; // アクセスを拒否
}
このコードは、ユーザーIDが5のユーザーにのみダウンロードアクセスを許可します。
サンプル2: 期間限定でダウンロードアクセスを許可する
add_filter('woocommerce_grant_product_download_access', 'timed_access', 10, 3);
function timed_access($grant, $download, $product) {
if (strtotime($download->access_expires) > time()) {
return true; // アクセスを許可
}
return false; // アクセスを拒否
}
このコードは、ダウンロードのアクセス期限が現在の日付より後であればアクセスを許可します。
サンプル3: 商品購入履歴に基づくアクセス制御
add_filter('woocommerce_grant_product_download_access', 'purchase_history_access', 10, 3);
function purchase_history_access($grant, $download, $product) {
if (wc_customer_bought_product('', get_current_user_id(), $product->get_id())) {
return true; // 過去に購入がある場合、アクセスを許可
}
return false; // アクセスを拒否
}
このコードは、ユーザーがその商品を過去に購入した場合にダウンロードアクセスを許可します。
サンプル4: 特定のカテゴリーの商品ダウンロードを制限
add_filter('woocommerce_grant_product_download_access', 'category_based_access', 10, 3);
function category_based_access($grant, $download, $product) {
if (has_term('restricted-category', 'product_cat', $product->get_id())) {
return false; // 特定のカテゴリーならアクセスを拒否
}
return true; // アクセスを許可
}
このコードは、特定のカテゴリーに属する商品についてはダウンロードアクセスを拒否します。
サンプル5: 社内ユーザーのみアクセスを許可する
add_filter('woocommerce_grant_product_download_access', 'internal_user_access', 10, 3);
function internal_user_access($grant, $download, $product) {
// 「internal」ロールのユーザーにのみアクセスを許可
if (user_can(get_current_user_id(), 'internal')) {
return true; // アクセスを許可
}
return false; // アクセスを拒否
}
このコードは、「internal」というロールを持つユーザーにのみダウンロードアクセスを許可します。