WooCommerce:如何在产品页面上添加下载按钮?

时间:2019-01-24 19:26:13

标签: php wordpress woocommerce

我们正在电子商务网站上使用WooCommerce插件。我想在产品页面上添加一个按钮,该按钮允许用户免费下载PDF文件,而无需进入产品单页。此外,所有产品都需要具有唯一的PDF文件。这可能吗?

P.S。我也在这里尝试了一些答案。

1 个答案:

答案 0 :(得分:1)

是可能的。使用metaboxioCMB2创建单个产品元字段。创建或编辑产品时,可以在其中上传每种产品的pdf文件的位置。

然后,您可以使用WooCommerce挂钩在此处显示“下载”按钮。

MetaBox IO的示例:

将以上代码添加到functions.php文件的底部。确保已安装并激活了metaboxio插件。您可以转到插件->添加--然后使用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。

有关如何获取上载的文件网址的更多信息,请检查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 }
}