概要
woocommerce_order_is_download_permitted
フィルタは、WooCommerce におけるダウンロード許可の処理に関連するフックです。このフィルタは、特定の条件に基づいて、ユーザーが購入した商品のダウンロードを許可するかどうかを制御するために使用されます。開発者はこのフィルタを用いて、ダウンロードファイルのアクセス制御をカスタマイズすることができます。
よく使われる機能の例
- ユーザーの役割に基づいたダウンロード権限の変更
- 特定の期間内のみダウンロードを許可する
- チケットやサービスのダウンロードアクセスを制御する
- 購入履歴に基づくダウンロードの有効化・無効化
- 外部リンクでのダウンロード権限を制御
- 限定されたプロモーションを提供し、そのダウンロードを許可
構文
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 のドキュメントを参考にしてください。