【发布时间】:2019-01-24 19:26:13
【问题描述】:
我们在我们的电子商务网站上使用 WooCommerce 插件。我想在产品页面上添加一个按钮,允许用户免费下载 PDF 文件,而无需进入产品单页。此外,所有产品都需要有一个唯一的 PDF 文件。这可能吗?
附:我也尝试了这里的一些答案。
【问题讨论】:
标签: php wordpress woocommerce
我们在我们的电子商务网站上使用 WooCommerce 插件。我想在产品页面上添加一个按钮,允许用户免费下载 PDF 文件,而无需进入产品单页。此外,所有产品都需要有一个唯一的 PDF 文件。这可能吗?
附:我也尝试了这里的一些答案。
【问题讨论】:
标签: php wordpress woocommerce
是的,这是可能的。使用metaboxio 或CMB2 创建单个产品元字段。创建或编辑产品时,您可以在其中上传每个产品的 pdf 文件。
然后您可以使用 WooCommerce 钩子在此处显示 DownLoad 按钮。
MetaBox IO 示例:
将上述代码添加到您的functions.php 文件的底部。确保已安装并激活 metaboxio 插件。你可以去 Plugins -> Add New -> 然后用metboxio搜索然后安装并激活它。之后,您可以根据建议复制粘贴代码。
function rox-pdf-button( $meta_boxes ) {
$prefix = 'rox-';
$meta_boxes[] = array(
'id' => 'pdf-btn',
'title' => esc_html__( 'Upload PDF', 'pluginrox' ),
'post_types' => array('product' ),
'context' => 'advanced',
'priority' => 'default',
'autosave' => 'true',
'fields' => array(
array(
'id' => $prefix . 'product-pdf',
'type' => 'file_advanced',
'name' => esc_html__( 'Upload PDF File', 'pluginrox' ),
'desc' => esc_html__( 'Here you can upload your pdf file to show on single product page', 'pluginrox' ),
'mime_type' => 'application/pdf',
'max_file_uploads' => 5,
'max_status' => 'true',
'size' => 5,
),
),
);
return $meta_boxes;
}
add_filter( 'rwmb_meta_boxes', 'rox-pdf-button' );
在我启用了多文件上传选项的代码中,您可以像单文件上传选项一样简单。检查 metabox io 文档。
转到您的产品,现在编辑那里的任何产品,您现在可以选择添加 PDF。
有关如何获取上传文件 url 的更多信息,请查看this documentation。
使用 WooCommerce 单一产品挂钩在您的产品上发布下载按钮。
显示下载按钮的示例编码:
add_action( 'woocommerce_after_add_to_cart_form', 'rox_single_download_button', 5 );
function rox_single_download_button() {
$files = rwmb_meta( 'rox-product-pdf' );
foreach ( $files as $file ) {?>
<a href="<?php echo $file['url']; ?>"><?php echo $file['name']; ?></a>
<?php }
}
如果您想在产品存档页面/WooCommerce 商店页面添加按钮,那么您必须在产品商店或循环挂钩上申请。
你可以试试下面的代码,让我知道它是否有效,因为我没有在商店页面上测试过。我只在单页上进行了测试,但它应该可以工作。
add_action('woocommerce_after_shop_loop_item', 'rox_loop_download_button', 5);
function rox_loop_download_button() {
global $product;
$product_id = $product->get_id();
$files = rwmb_meta('rox-product-pdf', '', $product_id);
foreach ($files
as $file) { ?>
<a href="<?php echo $file['url']; ?>"><?php echo $file['name']; ?></a>
<?php }
}
【讨论】: