Woocommerce 可下载产品作为电子邮件附件 - 403 禁止
Woocommerce downloadable product as email attachment - 403 forbidden
我正在使用 woocommerce_email_attachments
专用挂钩将项目可下载文件附加到 WooCommerce 客户完成订单电子邮件通知。我的问题是我被禁止访问 403,因为挂钩直接从文件 URL、Woocommerce_uploads:
获取文件
https://website.com/wp-content/uploads/woocommerce_uploads/2021/02/document-for-client-deqwt5.docx
有了这个,我得到了 403 禁止。但是,如果我从 woocommerce_uploads 中删除 .htaccess 文件,一切正常。
我怀疑如果我可以让钩子使用与用户相同的下载路径,我就不会得到 403 禁止响应。
如何让挂钩使用安全下载路径而不是文件 URL?
这是我正在使用的钩子,来自另一个 answer:
add_filter( 'woocommerce_email_attachments', 'attach_downloadable_files_to_customer_completed_email', 10, 3 );
function attach_downloadable_files_to_customer_completed_email( $attachments, $email_id, $order ) {
if( isset( $email_id ) && $email_id === 'customer_completed_order' ){
// Loop through order items
foreach( $order->get_items() as $item ) {
$product = $item->get_product(); // The product Object
if ( $product->is_downloadable() && ( $downloads = $product->get_downloads() ) ) {
// Loop through product downloads
foreach( $downloads as $download ) {
$attachments[] = $download->get_file();
}
}
}
}
return $attachments;
}
你在找这个吗?
foreach( $downloads as $download ) {
$attachments[] = $product->get_file_download_path($download->get_id());
}
问题已解决:
- 在 woocommerce_upload 文件夹中
- 将 .htaccess 内容替换为:
order deny,allow
deny from all
allow from <your ip or server IP or hosting IP>
我正在使用 woocommerce_email_attachments
专用挂钩将项目可下载文件附加到 WooCommerce 客户完成订单电子邮件通知。我的问题是我被禁止访问 403,因为挂钩直接从文件 URL、Woocommerce_uploads:
https://website.com/wp-content/uploads/woocommerce_uploads/2021/02/document-for-client-deqwt5.docx
有了这个,我得到了 403 禁止。但是,如果我从 woocommerce_uploads 中删除 .htaccess 文件,一切正常。
我怀疑如果我可以让钩子使用与用户相同的下载路径,我就不会得到 403 禁止响应。
如何让挂钩使用安全下载路径而不是文件 URL?
这是我正在使用的钩子,来自另一个 answer:
add_filter( 'woocommerce_email_attachments', 'attach_downloadable_files_to_customer_completed_email', 10, 3 );
function attach_downloadable_files_to_customer_completed_email( $attachments, $email_id, $order ) {
if( isset( $email_id ) && $email_id === 'customer_completed_order' ){
// Loop through order items
foreach( $order->get_items() as $item ) {
$product = $item->get_product(); // The product Object
if ( $product->is_downloadable() && ( $downloads = $product->get_downloads() ) ) {
// Loop through product downloads
foreach( $downloads as $download ) {
$attachments[] = $download->get_file();
}
}
}
}
return $attachments;
}
你在找这个吗?
foreach( $downloads as $download ) {
$attachments[] = $product->get_file_download_path($download->get_id());
}
问题已解决:
- 在 woocommerce_upload 文件夹中
- 将 .htaccess 内容替换为:
order deny,allow
deny from all
allow from <your ip or server IP or hosting IP>