首页 > 解决方案 > 电子商务 | 为可下载的文件名添加唯一密钥

问题描述

我有一个 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 );

因此,例如,在上面的屏幕截图中,理想情况下,下载文件名将从:

关于如何实现这一目标的任何想法?提前致谢!

标签: woocommerce

解决方案


推荐阅读