概要
woocommerce_available_download_start
フィルタは、WooCommerceでデジタル商品のダウンロードリンクを表示する際に使用されるフックです。特に、ユーザーが購入したダウンロード可能な商品を管理するための機能を拡張する際によく利用されます。具体的には以下のような場面で役立ちます。
- ダウンロードリンクをカスタマイズする
- ユーザーに特定のダウンロードオプションを提供する
- 商品によって異なるダウンロード条件を設定する
- セキュリティを強化するためにダウンロードを制限する
- ダウンロードの履歴をログに記録する
- クーポンやプロモーションに応じてダウンロードリンクを変更する
構文
add_filter('woocommerce_available_download_start', 'your_function_name', 10, 2);
パラメータ
$download
– 利用可能なダウンロード情報の配列$order
– 注文オブジェクト
戻り値
- フィルタを通過した後、ダウンロード情報の配列を返す。
WooCommerce バージョン
- WooCommerce 2.5.0以降
WordPress バージョン
- 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_available_download_start', 'custom_download_link_text', 10, 2);
function custom_download_link_text($download, $order) {
if ($order->get_total() > 0) {
$download['name'] = 'ダウンロード開始';
}
return $download;
}
引用元: https://woocommerce.com/documentation/plugins/woocommerce/shortcodes/
サンプル2: ダウンロードの制限
このコードは、特定のユーザー以外はダウンロードをできないように制御します。
add_filter('woocommerce_available_download_start', 'restrict_download_based_on_user', 10, 2);
function restrict_download_based_on_user($download, $order) {
if (!current_user_can('administrator')) {
$download = []; // すべてのダウンロードを無効にする
}
return $download;
}
引用元: https://developer.wordpress.org/reference/functions/current_user_can/
サンプル3: ダウンロードのトラッキング
このコードは、ダウンロードを開始するときにログを記録します。
add_filter('woocommerce_available_download_start', 'log_download_start', 10, 2);
function log_download_start($download, $order) {
error_log('ユーザーがダウンロードを開始しました: ' . $download['file']);
return $download;
}
引用元: https://developer.wordpress.org/reference/functions/error_log/
サンプル4: 特定商品のダウンロード条件変更
このコードは、特定の商品に対して異なるダウンロード条件を設定します。
add_filter('woocommerce_available_download_start', 'conditional_download_based_on_product', 10, 2);
function conditional_download_based_on_product($download, $order) {
if ($download['product_id'] === 123) { // 商品IDが123の場合
// 特定の変更を加える
$download['url'] = 'https://example.com/special_download_link';
}
return $download;
}
引用元: https://woocommerce.com/documentation/plugins/woocommerce/advanced-setup/
サンプル5: ダウンロードリンクへのクーポン追加
このコードは、ダウンロードリンクにクーポンコードを追記します。
add_filter('woocommerce_available_download_start', 'append_coupon_to_download_link', 10, 2);
function append_coupon_to_download_link($download, $order) {
$download['url'] .= '?coupon=MYCOUPON'; // クーポンをリンクに追加
return $download;
}
引用元: https://woocommerce.com/documentation/plugins/woocommerce/coupons/