概要
woocommerce_download_product
フィルタは、WooCommerceでデジタル商品のダウンロードリンクが生成される際に利用されます。このフィルタを使用すると、デジタル商品に関連する様々な情報を変更したり、カスタマイズしたりすることが可能です。具体的には、以下のような機能を実装する際によく使われます。
- ダウンロードリンクのカスタマイズ
- 特定の条件に基づくダウンロード権限の変更
- メール通知内容の変更
- ダウンロード数の制限設定
- ダウンロード有効期限の設定
- 商品ページへのカスタムフィールドの追加
フィルタの概要
- 構文:
add_filter( 'woocommerce_download_product', 'callback_function', 10, 2 );
- パラメータ:
$downloads
(array): ダウンロードリンクの情報。$product
(WC_Product): 対象の商品オブジェクト。
- 戻り値: 変更されたダウンロードリンクの情報を含む配列。
- 使用可能なWooCommerceのバージョン: 2.6.0以降
- 使用可能なWordPressのバージョン: 4.5.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_download_product', 'custom_download_link_text', 10, 2 );
function custom_download_link_text( $downloads, $product ) {
foreach ( $downloads as &$download ) {
$download['name'] = '新しいリンクテキスト';
}
return $downloads;
}
サンプル 2: 特定ユーザーにのみダウンロードリンクを表示
このサンプルは、特定のユーザーにのみダウンロードリンクを表示します。
add_filter( 'woocommerce_download_product', 'restrict_download_link', 10, 2 );
function restrict_download_link( $downloads, $product ) {
if ( ! current_user_can( 'special_access' ) ) {
return [];
}
return $downloads;
}
サンプル 3: ダウンロード数を制限する
このコードでは、1人のユーザーがアクセスできるダウンロード数を制限します。
add_filter( 'woocommerce_download_product', 'limit_download_count', 10, 2 );
function limit_download_count( $downloads, $product ) {
if ( count( $downloads ) > 3 ) {
return array_slice( $downloads, 0, 3 );
}
return $downloads;
}
サンプル 4: ダウンロードの有効期限を追加する
このサンプルは、ダウンロードの有効期限を設定します。
add_filter( 'woocommerce_download_product', 'set_download_expiration', 10, 2 );
function set_download_expiration( $downloads, $product ) {
foreach ( $downloads as &$download ) {
$download['expires'] = strtotime( '+1 week' ); // 1週間後に期限切れ
}
return $downloads;
}
サンプル 5: カスタムフィールドの追加
このコードは、ダウンロードリンクにカスタムフィールドの情報を追加します。
add_filter( 'woocommerce_download_product', 'add_custom_field_to_download', 10, 2 );
function add_custom_field_to_download( $downloads, $product ) {
foreach ( $downloads as &$download ) {
$download['custom_field'] = 'カスタム情報';
}
return $downloads;
}
これらのサンプルはそれぞれ異なるニーズに応じてwoocommerce_download_product
フィルタを利用する方法を示しています。