概要
フィルタ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)