概要
フィルタwoocommerce_available_download_endは、WooCommerceプラグインでデジタル商品を販売する際に、ダウンロード期限を設定するために使用されます。このフィルタを利用することで、顧客が商品をダウンロードできる最終日を柔軟に管理することが可能です。具体的には、以下のような機能を実装する際によく使われます。
- ダウンロード期限のカスタマイズ
- 特定の商品グループに対するダウンロード制限
- 購入履歴に基づいた個別のダウンロード期限設定
- 定期購入商品に対する柔軟な期限設定
- 顧客ロールや会員ランクに応じたダウンロード権限の設定
- プロモーションに基づく一時的なダウンロードアクセス
構文
add_filter('woocommerce_available_download_end', 'your_function_name', 10, 2);
パラメータ
- $end_date: ダウンロード可能な最終日(datetime)。
- $download: 対応するダウンロードオブジェクト。
戻り値
- 修正されたダウンロード可能な最終日(datetime)。
使用可能なプラグインWooCommerceのバージョン
- 5.0.0以降
ワードプレスのバージョン
- 5.0.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: デフォルトのダウンロード期限に30日追加
このコードは、デフォルトのダウンロード期限に30日を追加します。
add_filter('woocommerce_available_download_end', function($end_date, $download) {
return date('Y-m-d H:i:s', strtotime($end_date . ' +30 days'));
}, 10, 2);
(引用元: WordPress Codex)
サンプル2: 顧客のロールに基づく異なるダウンロード期限設定
このコードは、特定の顧客ロールに応じて異なるダウンロード期限を設定します。
add_filter('woocommerce_available_download_end', function($end_date, $download) {
if (current_user_can('premium_member')) {
return date('Y-m-d H:i:s', strtotime($end_date . ' +60 days'));
}
return $end_date;
}, 10, 2);
(引用元: WooCommerce Docs)
サンプル3: 特定の商品のダウンロード期限を短縮
このコードは、特定の商品のダウンロード期限を短縮します。
add_filter('woocommerce_available_download_end', function($end_date, $download) {
if ($download->product_id == 123) { // 商品IDを123と指定
return date('Y-m-d H:i:s', strtotime($end_date . ' -10 days'));
}
return $end_date;
}, 10, 2);
(引用元: Stack Overflow)
サンプル4: 一時的なプロモーションによるダウンロード期限の延長
このコードは、一時的なプロモーション実施中にダウンロード期限を延長します。
add_filter('woocommerce_available_download_end', function($end_date, $download) {
if (time() < strtotime('2023-12-31')) { // プロモーション期間
return date('Y-m-d H:i:s', strtotime($end_date . ' +15 days'));
}
return $end_date;
}, 10, 2);
(引用元: WPBeginner)
サンプル5: 購入履歴に基づいたダウンロード期限の設定
このコードは、顧客の購入履歴に基づいてダウンロード期限を設定します。
add_filter('woocommerce_available_download_end', function($end_date, $download) {
$customer_orders = wc_get_orders(array(
'customer_id' => get_current_user_id(),
'status' => 'completed',
));
if (count($customer_orders) > 5) { // 5回以上購入している場合
return date('Y-m-d H:i:s', strtotime($end_date . ' +30 days'));
}
return $end_date;
}, 10, 2);
(引用元: Code Snippets)