プラグインWooCommerceのwoocommerce_available_download_endフィルタの使用方法・解説

概要

フィルタwoocommerce_available_download_endは、WooCommerceプラグインでデジタル商品を販売する際に、ダウンロード期限を設定するために使用されます。このフィルタを利用することで、顧客が商品をダウンロードできる最終日を柔軟に管理することが可能です。具体的には、以下のような機能を実装する際によく使われます。

  1. ダウンロード期限のカスタマイズ
  2. 特定の商品グループに対するダウンロード制限
  3. 購入履歴に基づいた個別のダウンロード期限設定
  4. 定期購入商品に対する柔軟な期限設定
  5. 顧客ロールや会員ランクに応じたダウンロード権限の設定
  6. プロモーションに基づく一時的なダウンロードアクセス

構文

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)

この関数について質問する


上の計算式の答えを入力してください