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

概要

woocommerce_order_is_download_permitted フィルタは、WooCommerce におけるダウンロード許可の処理に関連するフックです。このフィルタは、特定の条件に基づいて、ユーザーが購入した商品のダウンロードを許可するかどうかを制御するために使用されます。開発者はこのフィルタを用いて、ダウンロードファイルのアクセス制御をカスタマイズすることができます。

よく使われる機能の例

  1. ユーザーの役割に基づいたダウンロード権限の変更
  2. 特定の期間内のみダウンロードを許可する
  3. チケットやサービスのダウンロードアクセスを制御する
  4. 購入履歴に基づくダウンロードの有効化・無効化
  5. 外部リンクでのダウンロード権限を制御
  6. 限定されたプロモーションを提供し、そのダウンロードを許可

構文

add_filter('woocommerce_order_is_download_permitted', 'custom_download_permit', 10, 2);

パラメータ

  • $download_permitted (bool): ダウンロードが許可されているかどうかの状態。
  • $order (WC_Order): 現在処理中の WooCommerce のオーダーオブジェクト。

戻り値

  • bool: ダウンロードを許可する場合は true、許可しない場合は false。

使用可能なバージョン

  • WooCommerce: 3.0 以降
  • 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_order_is_download_permitted', 'restrict_download_by_user_role', 10, 2);
function restrict_download_by_user_role($download_permitted, $order) {
    if (current_user_can('subscriber')) {
        return false; // サブスクライバーはダウンロード不許可
    }
    return $download_permitted; // その他のユーザーは許可
}
// 引用元: https://woocommerce.com

サンプル 2: 購入履歴に基づくダウンロードの制御

add_filter('woocommerce_order_is_download_permitted', 'restrict_download_based_on_history', 10, 2);
function restrict_download_based_on_history($download_permitted, $order) {
    $user_id = $order->get_user_id();
    if (has_previous_order($user_id, $order)) {
        return true; // 過去の購入があるユーザーはダウンロード許可
    }
    return false; // その他は不許可
}
function has_previous_order($user_id, $order) {
    // 過去の注文を確認するロジック
    return false; // 仮の戻り値
}
// 引用元: https://woocommerce.com

サンプル 3: 限定プロモーションのダウンロード管理

add_filter('woocommerce_order_is_download_permitted', 'permitted_download_on_promo', 10, 2);
function permitted_download_on_promo($download_permitted, $order) {
    if (is_promo_invoice($order)) {
        return true; // プロモーションに該当する場合にダウンロード許可
    }
    return false;
}
function is_promo_invoice($order) {
    // プロモーション適用の確認ロジック
    return true; // 仮の戻り値
}
// 引用元: https://woocommerce.com

サンプル 4: 特定の期間内に限るダウンロード

add_filter('woocommerce_order_is_download_permitted', 'time_limited_download', 10, 2);
function time_limited_download($download_permitted, $order) {
    $expiry_date = '2023-12-31'; // 例えば年末まで
    if (current_time('Y-m-d') > $expiry_date) {
        return false; // 期限切れ
    }
    return $download_permitted; // 期限内なら許可
}
// 引用元: https://woocommerce.com

サンプル 5: 外部リンクのダウンロード権限制御

add_filter('woocommerce_order_is_download_permitted', 'external_link_download_control', 10, 2);
function external_link_download_control($download_permitted, $order) {
    if ($order->has_downloads() && $order->get_total() > 100) {
        return true; // 100ドル以上の注文に対しては許可
    }
    return false; // それ以外は不許可
}
// 引用元: https://woocommerce.com

各サンプルコードは、このフィルタを使用して特定の条件に基づいてダウンロード権限を制御する方法を示しています。上記のリンクは例示的なものであり、それぞれの具体的な実装は WooCommerce のドキュメントを参考にしてください。

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


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