概要
woocommerce_get_item_downloads
フィルタは、WooCommerceでダウンロード可能な商品のダウンロードリンクを取得する際に使用されます。このフィルタは、カスタムダウンロードのデータを追加したり、既存のデータを変更したりするために利用されることが多いです。具体的な用途としては、以下のようなケースが考えられます。
- 商品に対して特定の条件を満たすダウンロードのみを表示する。
- ダウンロード可能なファイルのメタデータを追加する。
- 特定のユーザーグループに対してダウンロードリンクを制御する。
- ダウンロードファイルのURLを動的に生成する。
- 購入した商品のダウンロード権を管理する。
- プロモーションやキャンペーン用に特別なダウンロードリンクを提供する。
構文
apply_filters( 'woocommerce_get_item_downloads', $downloads, $item, $order );
パラメータ
$downloads
(array): 商品のダウンロード情報の配列。$item
(object): 注文アイテムのオブジェクト。$order
(object): 注文のオブジェクト。
戻り値
- (array): 修正されたダウンロード情報の配列。
使用可能なバージョン
- WooCommerceのバージョン: 2.6以降
- 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_get_item_downloads', 'custom_filter_downloads', 10, 3 );
function custom_filter_downloads( $downloads, $item, $order ) {
// ユーザーの特定ロールをチェック
if ( ! current_user_can( 'premium_member' ) ) {
return array(); // プレミアムメンバーでない場合、ダウンロードリンクを表示しない
}
return $downloads;
}
このサンプルコードは、特定のユーザー権限(premium_member
)がない場合、ダウンロードリンクを表示しないようにしています。
サンプル2: ダウンロードファイルのメタデータ追加
add_filter( 'woocommerce_get_item_downloads', 'add_custom_metadata_to_downloads', 10, 3 );
function add_custom_metadata_to_downloads( $downloads, $item, $order ) {
// ダウンロードファイルにカスタムメタデータを追加
foreach ( $downloads as &$download ) {
$download['custom_meta'] = 'This is custom metadata'; // カスタムメタデータ
}
return $downloads;
}
このコードは、ダウンロードリンクにカスタムメタデータを追加する機能を持っています。
サンプル3: ダウンロードリンクのURLを動的に生成
add_filter( 'woocommerce_get_item_downloads', 'generate_dynamic_download_links', 10, 3 );
function generate_dynamic_download_links( $downloads, $item, $order ) {
foreach ( $downloads as &$download ) {
$download['file'] = 'https://example.com/downloads/' . $item->get_product_id() . . 'sample-file.zip'; // 動的生成URL
}
return $downloads;
}
こちらのサンプルは、ダウンロードリンクのURLを動的に生成して変更しています。
サンプル4: 特定のプロモーション用のダウンロードリンク管理
add_filter( 'woocommerce_get_item_downloads', 'manage_promotional_download_links', 10, 3 );
function manage_promotional_download_links( $downloads, $item, $order ) {
if ( isset( $item['promotion_code'] ) && $item['promotion_code'] === 'SPECIAL_PROMO' ) {
// プロモーションコードによるリンクの変更
$downloads = array(
array(
'name' => 'Exclusive Download',
'file' => 'https://example.com/promotions/exclusive-file.zip',
'id' => 1,
),
);
}
return $downloads;
}
このサンプルは、プロモーションコードが適用された場合に特別なダウンロードリンクを提供します。
サンプル5: 購入した商品のダウンロード権を制御
add_filter( 'woocommerce_get_item_downloads', 'control_download_permissions', 10, 3 );
function control_download_permissions( $downloads, $item, $order ) {
if ( $item->get_quantity() < 1 ) {
return array(); // 購入数が1未満の場合、ダウンロードを無効にする
}
return $downloads;
}
このサンプルでは、購入数が1未満の場合、ダウンロードリンクを無効にしています。
これらのサンプルコードは、著作権フリーのものであり、WooCommerceのカスタマイズに役立つ基本的な使い方を示しています。