在我的解决方案中,我希望尽可能自动化产品创建.在我看来,一种节省时间的方法是将可下载文件自动添加到产品中.
In my solution I want to automate the product creation as much as possible. One time saver is, in my opinion, to auto add the downloadable file to the product.
我创建了这个函数:
function fcsp_add_downloadable_file($post_id, $post, $update){
$post_thumbnail_id = get_post_thumbnail_id( $post_id );
$url = get_site_url()."/wp-content/uploads/".get_the_date('Y')."/".get_the_date('m')."/".$filename_only = basename( get_attached_file( $post_thumbnail_id ) );
update_post_meta($post_id, '_downloadable_files' , $url);
}
add_action( 'save_post', 'fcsp_add_downloadable_file', 99, 3 );
当我更新产品时,我可以看到文件路径已保存到 _downloadable_files 元键.然而,它只是纯文本,而不是 woocommerce 存储它的方式.查看屏幕截图(这是使用 Woo Add Product 界面创建的另一个产品:
I can see when I update the product that the file path is saved to the _downloadable_files meta key. However it is just plain text and not in the way woocommerce stores it. See screenshot (this is from another product created with the Woo Add Product interface:
它也未被 woocommerca 识别为可下载文件.非常感谢您对解决此问题的任何帮助.
It is also not recognized by woocommerca as a downloadable file. Any help on fixing this is much appreciated.
第二部分
这是要设置的产品标题:
This is the product title to be set:
我们必须从图像的 EXIF 元标记标题"中获取它,并且必须在保存产品之前或保存产品时将其设置为产品名称.($filemeta['image_meta']['title'];)
We have to get it from the EXIF meta tag "title" from the image and has te be set as the product name before or while saving the product. ($filemeta['image_meta']['title'];)
Update 2 (添加了 if 语句以允许下载生成仅到一个文件)
以下代码将自动添加由产品图片制作的可下载文件(下载标题来自 EXIF 数据标题).
The following code will auto add a downloadable file made from the product image (The download title comes from the EXIF data title).
您最好使用专用的 woocommerce_admin_process_product_object 动作挂钩和可用的 CRUD 对象和 getter/setter 方法 woocommerce 3 以这种方式引入:
You should better use dedicated woocommerce_admin_process_product_object action hook and available CRUD objects and getters / setters methods introduced with woocommerce 3 this way:
add_action( 'woocommerce_admin_process_product_object', 'auto_add_downloadable_file', 50, 1 );
function auto_add_downloadable_file( $product ){
// Get downloads (if there is any)
$downloads = (array) $product->get_downloads();
// Only added once (avoiding repetitions
if( sizeof($downloads) == 0 ){
// Get post thumbnail data
$thumb_id = get_post_thumbnail_id( $product->get_id() );
$src_img = wp_get_attachment_image_src( $thumb_id, 'full');
$img_meta = wp_get_attachment_metadata( $thumb_id, false );
// Prepare download data
$file_title = $img_meta['image_meta']['title'];
$file_url = reset($src_img);
$file_md5 = md5($file_url);
$download = new WC_Product_Download(); // Get an instance of the WC_Product_Download Object
// Set the download data
$download->set_name($file_title);
$download->set_id($file_md5);
$download->set_file($file_url);
$downloads[$md5_num] = $download; // Insert the new download to the array of downloads
$product->set_downloads($downloads); // Set new array of downloads
}
}
代码位于活动子主题(或活动主题)的 function.php 文件中.经测试有效.
Code goes in function.php file of your active child theme (or active theme). Tested and works.
您还可以使用 is_downloadable 检查产品是否可下载() 方法在函数内部启动时的 IF 语句中.
You could also check if product is downloadable using
is_downloadable()method in anIFstatement on start inside the function.
这篇关于以编程方式将可下载文件添加到 Woocommerce 产品的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
获取今天 Woocommerce 中每种产品的总订单数Get today#39;s total orders count for each product in Woocommerce(获取今天 Woocommerce 中每种产品的总订单数)
在 WooCommerce 和电话字段验证问题中添加自定义注Add Custom registration fields in WooCommerce and phone field validation issue(在 WooCommerce 和电话字段验证问题中添加自定义注册字段
在 Woocommerce 简单产品中添加一个将更改价格的选Add a select field that will change price in Woocommerce simple products(在 Woocommerce 简单产品中添加一个将更改价格的选择字段)
在 WooCommerce 3 中将自定义列添加到管理产品列表Add custom columns to admin products list in WooCommerce 3(在 WooCommerce 3 中将自定义列添加到管理产品列表)
自定义结帐“下订单"按钮输出htmlCustomizing checkout quot;Place Orderquot; button output html(自定义结帐“下订单按钮输出html)
将生日字段添加到 WooCommerce 我的帐户和管理员用Add birthday field to WooCommerce my account and admin user page(将生日字段添加到 WooCommerce 我的帐户和管理员用户页面)