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

概要

woocommerce_display_item_downloads フィルタは、WooCommerceの商品詳細ページにおいてダウンロード可能なアイテムを表示する際に使用されます。このフィルタを利用することで、ダウンロードリンクのカスタマイズや、特定の条件に基づいたダウンロードアイテムの表示を実現することができます。以下に、よく使用される機能の例を挙げます。

  1. ダウンロード可能アイテムの追加情報を表示
  2. スタイリングの変更
  3. ダウンロードリンクの条件付き表示
  4. ダウンロード可能なファイルの注文履歴表示
  5. デフォルトの表示文言の変更
  6. 特定のユーザーに対するダウンロード制御

構文

add_filter( 'woocommerce_display_item_downloads', 'custom_function_name', 10, 2 );

パラメータ

  • $downloads (array): 既存のダウンロードアイテムのリスト
  • $item_id (int): 商品のID

戻り値

  • (array): 修正されたダウンロードアイテムのリスト

使用可能なプラグインバージョン

  • WooCommerce: 3.0.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_display_item_downloads', 'custom_change_download_link_text', 10, 2 );

function custom_change_download_link_text( $downloads, $item_id ) {
    foreach ( $downloads as &$download ) {
        $download['name'] = 'カスタム文言: ' . $download['name'];
    }
    return $downloads;
}

このコードは、ダウンロードアイテムのリンクテキストを「カスタム文言: 」を付加して変更します。
引用元: https://docs.woocommerce.com/wc-apidocs/class-WC_Product.html

サンプルコード2:特定の条件でダウンロードを非表示にする

add_filter( 'woocommerce_display_item_downloads', 'custom_hide_downloads_if_condition_met', 10, 2 );

function custom_hide_downloads_if_condition_met( $downloads, $item_id ) {
    if ( ! current_user_can( 'subscriber' ) ) {
        return array(); // ダウンロードを非表示
    }
    return $downloads;
}

このコードは、ユーザーが「subscriber」ロールでない場合にダウンロードを隠します。
引用元: https://developer.wordpress.org/reference/functions/current_user_can/

サンプルコード3:ダウンロードリストにカスタムアイコンを追加

add_filter( 'woocommerce_display_item_downloads', 'custom_add_icon_to_downloads', 10, 2 );

function custom_add_icon_to_downloads( $downloads, $item_id ) {
    foreach ( $downloads as &$download ) {
        $download['name'] = '<img src="path/to/icon.png" alt="アイコン"> ' . $download['name'];
    }
    return $downloads;
}

このコードは、全てのダウンロードリンクの前にカスタムアイコンを追加します。
引用元: https://www.w3schools.com/tags/tag_img.asp

サンプルコード4:ダウンロードの順序を変更

add_filter( 'woocommerce_display_item_downloads', 'custom_sort_downloads', 10, 2 );

function custom_sort_downloads( $downloads, $item_id ) {
    usort( $downloads, function( $a, $b ) {
        return strcmp( $a['name'], $b['name'] ); // 名前でソート
    });
    return $downloads;
}

このコードは、ダウンロードのリストを名称順にソートします。
引用元: https://www.php.net/manual/en/function.usort.php

サンプルコード5:特定のダウンロードアイテムを追加

add_filter( 'woocommerce_display_item_downloads', 'custom_add_additional_download', 10, 2 );

function custom_add_additional_download( $downloads, $item_id ) {
    $additional_download = array(
        'name' => '追加ダウンロードファイル',
        'file' => 'path/to/additional/file.zip'
    );
    $downloads[] = $additional_download;
    return $downloads;
}

このコードは、ダウンロードリストに新しいダウンロードファイルを追加します。
引用元: https://wordpress.org/support/article/adding-a-download-to-your-product/

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


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