概要
woocommerce_is_downloadable
関数は、WooCommerce の製品がダウンロード可能かどうかを判定するための関数です。この関数は主に、デジタル商品を取り扱うオンラインストアで使用されます。デジタル商品が購入された際に、ダウンロードリンクを表示するかどうかのロジックを実装する際に役立ちます。
よく使われるシナリオ
- 購入者向けのダウンロードリンクの表示
- 管理者向けの注文管理におけるダウンロード商品のフィルタリング
- カスタムテーマでのダウンロード商品の表示調整
- ユーザーアカウントページでの過去のダウンロード履歴の管理
- Eメールでのダウンロードリンクの送信
- カスタム機能でのサブスクリプション商品管理
構文
woocommerce_is_downloadable( $product_id );
パラメータ
$product_id
(int): チェック対象の製品のID。
戻り値
- (bool): 製品がダウンロード可能な場合は
true
、それ以外はfalse
を返します。
使用可能なバージョン
- WooCommerce バージョン: 2.6.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: ダウンロードリンクの表示
$product_id = 123; // 製品ID
if (woocommerce_is_downloadable($product_id)) {
echo '<a href="download_link_url">ダウンロードリンク</a>';
}
このサンプルコードは、特定の製品がダウンロード可能な場合にダウンロードリンクを表示します。
サンプル2: 管理者の注文管理ページでのフィルタリング
add_filter('woocommerce_my_account_my_orders_columns', 'custom_order_columns');
function custom_order_columns($columns) {
foreach ($columns as $key => $column) {
// 特定の条件でダウンロード商品をフィルタリングするロジック
}
return $columns;
}
このコードは、ユーザーのアカウントページの注文リストにおいて、ダウンロード可能な製品に基づいて列をカスタマイズします。
サンプル3: 過去のダウンロード履歴の表示
$orders = wc_get_orders(array('customer_id' => get_current_user_id()));
foreach ($orders as $order) {
foreach ($order->get_items() as $item) {
if (woocommerce_is_downloadable($item->get_product_id())) {
echo 'ダウンロード商品: ' . $item->get_name();
}
}
}
このサンプルコードは、ログインユーザーの過去の注文からダウンロード商品をリスト表示します。
サンプル4: Eメールテンプレートにダウンロードリンクを追加
add_action('woocommerce_email_order_details', 'add_download_link_email', 10, 4);
function add_download_link_email($order, $sent_to_admin, $plain_text, $email) {
foreach ($order->get_items() as $item) {
if (woocommerce_is_downloadable($item->get_product_id())) {
echo 'ダウンロードリンク: <a href="download_link_url">こちら</a>';
}
}
}
このサンプルコードは、注文確認メールにダウンロードリンクを追加します。
サンプル5: カスタムクエリでデジタル商品をフィルタリング
add_action('pre_get_posts', 'filter_downloadable_products');
function filter_downloadable_products($query) {
if (!is_admin() && $query->is_main_query() && $query->is_post_type_archive('product')) {
$query->set('meta_query', array(
array(
'key' => '_downloadable',
'value' => 'yes',
),
));
}
}
このコードは、公開された製品アーカイブページでダウンロード可能な製品のみを取得するためのカスタムメタクエリを設定します。