【发布时间】:2021-06-15 04:29:12
【问题描述】:
我正在销售电子书,并且我正在获取一个名称,以便使用自定义字段来许可每本电子书,因为这些电子书大多是由教师代表学生购买的。每本电子书都使用 WooCommerce PDF Watermark 使用许可信息添加水印
我还有一段代码将同一产品的多个项目分成单独的行项目:
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 );
一切正常,我的订单完成页面如下所示:
我的测试电子书 (ID 16786) 的每个副本都单独显示,并带有相关的 license_to 字段。
然后我有以下代码根据developer's docs here将自定义字段添加到PDF中
function wc_pdf_watermark_extend_template_tags( $parsed_text, $unparsed_text, $order, $product ) {
$licensed_to_string = ' ';
$order_items_array = $order->get_items();
foreach ( $order_items_array as $item_id => $item ) {
$product_id = $item->get_product_id();
$licensed_to = $item->get_meta( 'licensed_to', true );
$licensed_to_string .= $product_id . ' - ' . $item_id . ' - ' . $licensed_to . ' | ';
}
$parsed_text = str_replace( '{licensed_to}', $licensed_to_string, $parsed_text );
return $parsed_text;
}
add_filter( 'woocommerce_pdf_watermark_parse_template_tags', 'wc_pdf_watermark_extend_template_tags', 10, 4 );
问题是每个 PDF 都显示所有 3 个名称,而每个可下载的电子书应该只授权给一个人:
有什么方法可以让每个自定义元字段与其对应的 PDF 相匹配?也许在数组中计算位置或其他什么?
或者,是否还有其他技巧可以更改已完成订单的产品名称,并在名称中包含自定义字段?然后可以将其包含在水印中并解决我的问题。
【问题讨论】:
-
@LoicTheAztec 感谢您的回答,有时间我会尽快查看。目前正在从事另一个项目。
标签: php wordpress pdf woocommerce watermark