如何在WooCommerce中为产品变体添加专属可下载PDF文件?
WooCommerce 为产品变体添加专属可下载PDF的解决方案
方法一:自定义字段+代码实现(无需插件)
适合有基础开发能力的用户,完全自定义控制逻辑:
1. 给变体添加PDF上传字段
将以下代码添加到主题的functions.php文件(或自定义插件中),会在变体编辑页面新增一个PDF上传框:
// 添加变体专属PDF上传字段 add_action('woocommerce_product_after_variable_attributes', 'add_variant_pdf_upload_field', 10, 3); function add_variant_pdf_upload_field($loop, $variation_data, $variation) { woocommerce_wp_file_input(array( 'id' => '_variant_pdf[' . $loop . ']', 'name' => '_variant_pdf[' . $loop . ']', 'value' => get_post_meta($variation->ID, '_variant_pdf', true), 'label' => __('变体专属PDF', 'woocommerce'), 'description' => __('上传此变体对应的可下载PDF文件', 'woocommerce') )); } // 保存变体PDF字段值 add_action('woocommerce_save_product_variation', 'save_variant_pdf_upload_field', 10, 2); function save_variant_pdf_upload_field($variation_id, $i) { if (!empty($_FILES['_variant_pdf']['name'][$i])) { $upload = wp_handle_upload($_FILES['_variant_pdf']['files'][$i], array('test_form' => false)); if (!empty($upload['url'])) { update_post_meta($variation_id, '_variant_pdf', esc_url($upload['url'])); } } elseif (isset($_POST['_variant_pdf'][$i]) && $_POST['_variant_pdf'][$i] === '') { delete_post_meta($variation_id, '_variant_pdf'); } }
2. 在订单中显示下载链接
添加以下代码,让买家在订单详情页、「我的账户」的订单列表中看到对应变体的PDF下载入口:
// 在订单项目中插入变体PDF下载链接 add_action('woocommerce_order_item_meta_end', 'display_variant_pdf_in_order', 10, 4); function display_variant_pdf_in_order($item_id, $item, $order, $plain_text) { $variation_id = $item->get_variation_id(); if ($variation_id) { $pdf_url = get_post_meta($variation_id, '_variant_pdf', true); if ($pdf_url) { echo '<br><a href="' . esc_url($pdf_url) . '" target="_blank" download>下载变体专属PDF</a>'; } } }
方法二:使用支持变体级下载的插件
如果没有开发能力,直接筛选WooCommerce插件库中明确支持变体专属可下载文件的插件。这类插件会在变体编辑界面原生集成文件上传功能,无需手动写代码,配置更简单,适合非技术用户。
额外优化(可选)
如果想在产品页面让买家选好变体后就能看到PDF预览/下载提示,可以添加JS监听变体切换事件,动态获取当前变体的PDF链接并展示:
jQuery(document).ready(function($) { $('form.variations_form').on('show_variation', function(event, variation) { if (variation._variant_pdf) { $('.variant-pdf-container').html('<a href="' + variation._variant_pdf + '" target="_blank" download>查看此变体专属PDF</a>'); } else { $('.variant-pdf-container').empty(); } }); });
同时需要在产品模板中添加一个容器<div class="variant-pdf-container"></div>,并通过wp_localize_script将变体的PDF链接传递到JS中。
内容的提问来源于stack exchange,提问作者Félix Poirier
相关产品推荐
相关产品推荐

