woocommerce - 电子商务 | 为可下载的文件名添加唯一密钥
问题描述
我有一个 PDF 电子书的数字产品。我正在捕获一个名为“licensed_to”的文本输入字段,并使用以下代码分离出同一产品的多个(电子书可以代表学生批量购买并授权给学生):
add_filter( 'woocommerce_is_sold_individually', '__return_true' );
function split_product_individual_cart_items( $cart_item_data, $product_id ){
$ids = array(16786);
if (!empty($product_id) && is_numeric($product_id) && in_array((int)$product_id, $ids)) {
$unique_cart_item_key = uniqid();
$cart_item_data['unique_key'] = $unique_cart_item_key;
}
return $cart_item_data;
}
add_filter( 'woocommerce_add_cart_item_data', 'split_product_individual_cart_items', 10, 2 );
这一切都很好,并出现在订单完成页面中,如下所示:
但是,我似乎无法弄清楚如何更改文件名以包含 license_to 字段。我一直在玩,woocommerce_file_download_filename
但无法想出一种方法来将 license_to 字段的每个实例与其相应的 PDF 匹配。
function change_woocommerce_file_download_filename( $filename, $product_id ) {
$filetype = wp_check_filetype( $filename );
$unique_filename = uniqid();
return join( '.', array( $unique_filename, $filetype['ext'] ) );
}
add_filter( 'woocommerce_file_download_filename', 'change_woocommerce_file_download_filename', 10, 2 );
因此,例如,在上面的屏幕截图中,理想情况下,下载文件名将从:
- dummy-uccov5.pdf
- dummy-uccov5.pdf
- dummy-uccov5.pdf
至
- dummy-uccov5-A 测试名称.pdf
- dummy-uccov5-Test.pdf 的另一个名称
- dummy-uccov5-Someone Else.pdf
关于如何实现这一目标的任何想法?提前致谢!
解决方案
推荐阅读
- java - 从 javax.enterprise.context 而非 javax.faces.bean 导入 sessionbean
- html - 无法让 ngMouseEnter(和类似命令)正常工作
- java - 如何确定Android中两个视图的共同超级视图
- c# - 如何在 c# 中使用 VB6 InStr IntStRev 和 Mid
- json - Cassandra 和 Go API
- javascript - 在 Visual Studio Code 的集成终端中使用 node.js 打开 JavaScript 代码
- ios - 如何将 Apple Watch 检测为蓝牙外围设备
- python-3.x - 您可以使用 Pool 生成的最大多进程数量是多少?
- quickfixj - 如果 quickfixj 在 onmessage 中崩溃,我会丢失当前的消息吗?
- python - Django/DRF 应用程序收到 AttributeError:'function' 对象没有属性 'get_extra_actions'