概要
woocommerce_grant_product_download_permissions フィルタは、WooCommerce においてダウンロード可能な製品の権限を管理するために使用されます。このフィルタを利用することで、特定の条件に基づいてユーザーに対するダウンロード権限を付与または除外することができます。これは主に以下のような場合に役立ちます。
- 特定のユーザーグループに対してダウンロード権限を制御する。
- 特定の製品購入後にのみダウンロードを許可する。
- 限定された時間内にダウンロードを有効にする。
- ボーナスコンテンツを特定のユーザーにのみ提供する。
- 他のプラグインとの統合による条件付きのダウンロード権限の管理。
- サブスクリプションなど、定期的な支払いに基づくダウンロード権限の管理。
フィルタの概要
構文:
add_filter( 'woocommerce_grant_product_download_permissions', 'custom_function', 10, 2 );
パラメータ:
1. $granted_permissions: 権限を返すためのブール値。
2. $product: 現在処理中の製品オブジェクト。
戻り値:
ブール値(true または false)
使用可能なプラグインバージョン:
– WooCommerce: v2.6.0 以降
– WordPress: v4.5 以降
サンプルコード
サンプルコード 1
add_filter( 'woocommerce_grant_product_download_permissions', 'allow_download_for_specific_user', 10, 2 );
function allow_download_for_specific_user( $granted_permissions, $product ) {
if ( is_user_logged_in() && current_user_can( 'special_download_access' ) ) {
return true; // 特定のユーザー権限を持つ場合はダウンロードを許可
}
return $granted_permissions; // デフォルトの権限を維持
}
このサンプルコードは、特定のユーザー権限を持つ場合にダウンロードを許可します。
サンプルコード 2
add_filter( 'woocommerce_grant_product_download_permissions', 'allow_download_after_purchase', 10, 2 );
function allow_download_after_purchase( $granted_permissions, $product ) {
$order = wc_get_order( get_the_ID() );
if ( $order && $order->has_status( 'completed' ) ) {
return true; // 購入後のダウンロードを許可
}
return $granted_permissions;
}
このサンプルコードでは、注文が「完了」状態のときに製品のダウンロードを許可します。
サンプルコード 3
add_filter( 'woocommerce_grant_product_download_permissions', 'limit_download_duration', 10, 2 );
function limit_download_duration( $granted_permissions, $product ) {
$set_time = get_post_meta( $product->get_id(), '_download_limit_time', true );
if ( time() > $set_time ) {
return false; // 下载権限の時間制限を超過した場合
}
return $granted_permissions;
}
このコードは、製品のダウンロードが特定の時間を超過した場合に権限を拒否します。
サンプルコード 4
add_filter( 'woocommerce_grant_product_download_permissions', 'grant_bonus_content_access', 10, 2 );
function grant_bonus_content_access( $granted_permissions, $product ) {
if ( current_user_can( 'bonus_content_access' ) ) {
return true; // ボーナスコンテンツを持つユーザーにダウンロードを許可
}
return $granted_permissions;
}
このコードは、ボーナスコンテンツの権限を持つユーザーにダウンロードを許可します。
サンプルコード 5
add_filter( 'woocommerce_grant_product_download_permissions', 'conditional_download_by_membership', 10, 2 );
function conditional_download_by_membership( $granted_permissions, $product ) {
if ( my_custom_membership_check() ) {
return true; // 特定のメンバーシップがある場合、ダウンロードを許可
}
return $granted_permissions;
}
このサンプルコードは、カスタムメンバーシップを持つユーザーにダウンロードを許可します。
この関数のアクションでの使用可能性
| アクション名 | 使用可能性 |
|---|---|
| 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 |
この表は、woocommerce_grant_product_download_permissions フィルタがどのアクションで使用可能かを示しています。実際には、フィルタは主に WooCommerce のダウンロード権限に関連する処理の際に使用されます。