- Windows 本地安装 Kibana 查询 Elasticsearch
- Windows 本地安装和使用 Elasticsearch
- WooCommerce 请登录 链接不工作
- 使 WooCommerce 订单搜索支持自定义字段
- 如何使用 WooCommerce Session
- 获取 WooCommerce 页面地址的方法
- WooCommerce后台通过自定义字段检索产品
- WooCommerce 自定义订单号
- WooCommerce Login / Register Redirect
- WooCommerce自带的shortcodes
- WooCommerce 打印订单
- WooCommerce 新用户注册管理员通知
- WooCommerce 移除产品页商品图片的url
- WooCommerce Email 模版增加全局内容的一个方法
- 错误:Call to a member function is_visible() on a non-object
- WooCommerce实用代码集合
- WooCommerce根据支付方式收取额外费用(2021)
- WooCommerce 订单管理
- WooCommerce移除登出账户的确认提示
- WooCommerce列出所有产品分类(2021)
- WooCommerce收据功能的实现
- WooCommerce Dynamic Pricing动态价格表(2021)
- 如何免费试用WordPress付费插件
- 写代码定制WooCommerce产品页模板(2021)
- 自定义WooCommerce Order Details模板明细部分(2021)
- WooCommerce Class WC_Order
- WooCommerce 产品搜索支持 SKU
- WooCommerce定制产品的Additional Information选项卡(2021)
- WooCommerce 定制产品页选项卡(2021)
- WooCommerce admin bar快捷菜单
- WooCommerce库存管理插件Stock Manager for WooCommerce(2021)
- WordPress备份插件UpdraftPlus(2021)
- 隐藏WooCommerce的购物功能
- WooCommerce目录模式Catalog Mode(2021)
- 构建基于WooCommerce和WPML的多语言电商网站 - 概述篇
- 构建基于WooCommerce和WPML的多语言电商网站 - 安装WooCommerce和测试数据
- 配置WordPress运行环境 - Wampserver安装图解
- 构建基于WooCommerce和WPML的多语言电商网站 - 安装和配置 WPML 插件
- 构建基于 WooCommerce 和 WPML 的多语言电商网站 - 使 WooCommerce 和 WPML 协同工作
- WooCommerce Paypal & RMB
- WooCommerce 2.0 来袭
- 如何修改 WooCommerce 插件的模版
- WooCommerce 显示每个产品的总销量
- WooCommerce 中的 Custom JavaScript Event
- WooCommerce Authorize.net CIM Gateway
- 用WooCommerce Fees API 添加手续费
- WooCommerce 产品加入购物车后直接结账
- 设置 Paypal Sandbox 测试 WooCommerce Subscription 产品
- WooCommerce Conditional Tags 详解
- WooCommerce Single Category Selector
- WooCommerce 自定义结账字段(2021)
- WooCommerce 将产品属性加入网站菜单(2021)
- WooCommerce Product API(2021)
- WooCommerce 添加附加费 surcharge(2021)
- WooCommerce 安装中文语言包(2021)
- WooCommerce 营销:订阅促销弹窗和潜在客户发掘(2021)
- WooCommerce 邮件定制、预览和测试(2021)
- WooCommerce 在线站点付款测试(2021)
- WooCommerce Product Archive Image Slider(2021)
- woocommerce_form_field() examples
- WooCommerce 商店页插入 shortcode 问题
- WooCommerce 在 Email Header 中获取用户信息
- WooCommerce 自定义结账字段图文详解
- WooCommerce 2.1.12 - 如何修改相关产品列表
- 修改 WooCommerce My Account 页面的地址格式
- Woocommerce:如何根据国家设置支付方式
- Woocommerce 支付宝插件初探
- 支付宝集成 如何在回调地址中使用自定义参数
- Woocommerce Settings API 如何使用
- Woocommerce 中文货币符号错误如何解决
- WooCommerce 如何扩展支付方式
- Woo commerce 搭建 WordPress 电子商务网站
- WooCommerce 查看所有用户购物车(2021)
- WooCommerce 最近一个月销量排行(2021)
- WooCommerce 后台自定义产品选项(2021)
- WooCommerce 自定义产品列表带分页(2021)
- WooCommerce 设置 - 自定义选项卡和字段(2021)
- WooCommerce My Account Menu Links 定制方法(2021)
- WooCommerce 产品列表增加数量字段
- WooCommerce 可变产品变种的数量限制
WooCommerce收据功能的实现
WooCommerce收据功能就是让用户在“我的账户”里查看订单的收据,可以打印或下载。多免费插件可以实现这个功能,但经过一番试用后多少都有缺陷。比如,有些功能要收费版才有,有些插件代码写的不灵活,难以扩展和定制化。偶然发现一款收费插件,代码简洁明了,actions和filters丰富,定制化极强,记录一下使用心得。
WooCommerce Print Invoices & Packing lists
来自WooCommerce的官方插件WooCommerce Print Invoices & Packing lists,不仅支持Invoice,还可以打印Packing lists和Pick list,由于sola只使用了invoice功能,就不对其它两个功能做过多描述了。
先来看后台界面,可以用WordPress Customizer来定制样子,默认的invoice模板是整齐的表格布局。
通过覆盖模板的方式定制模板
该插件支持覆盖模板,把插件目录woocommerce-pip/templates/pip
下的所有文件复制到主题/woocommerce/pip
下,就可以通过覆盖模板的方式定制了。
用程序定制模板
不过这插件最厉害的地方是可以通过action和filter定制,基本不需要修改模板,以后升级也方便。先来看invocie页面有哪些action可以使用。
你可以通过这些action输出额外的内容。另外我们可以通过filter来修改既有内容,比如修改订单产品详情里的字段,添加产品描述、sku等。步骤有三:
- 修改table的header,添加description、sku等
- 修改table列的内容,输出description、sku的值
- 控制table列的宽度,让内容多的占据更大空间
代码如下:
add_filter( 'wc_pip_document_table_headers', 'sola_order_item_table_headers', 10, 3 );
add_filter( 'wc_pip_document_table_row_cells', 'sola_order_item_table_cells', 10, 6 );
add_filter( 'wc_pip_document_column_widths', 'sola_order_item_table_column_width', 10, 3 );
function sola_order_item_table_headers( $table_headers, $order_id, $type ){
if( !in_array( $type, array('invoice') ) ){
return $table_headers;
}
$new_table_headers = array(
'quantity' => 'ORD',
'sku' => 'SKU',
'product' => 'PRODUCT',
'description' => 'DESCRIPTION',
'price' => 'PRICE',
'amount' => 'AMOUNT',
'id' => ''
);
$table_headers = $new_table_headers + $table_headers;
return $table_headers;
}
function sola_order_item_table_cells( $item_data, $type, $item_id, $item, $product, $order ){
if( !in_array( $type, array('invoice') ) ){
return $item_data;
}
$new_item_data = array(
'quantity' => $item_data['quantity'],
'sku' => $item_data['sku'],
'product' => $item_data['product'],
'description' => wp_html_excerpt( $product->get_short_description(), 55, '…' ),
'price' => $order->get_item_subtotal( $item ),
'amount' => $item_data['price'],
'id' => $item_data['id']
);
$item_data = $new_item_data + $item_data;
return $item_data;
}
function sola_order_item_table_column_width( $column_widths, $order_id, $type ){
if( !in_array( $type, array('invoice') ) ){
return $column_widths;
}
$column_widths = array(
'quantity' => 5,
'sku' => 10,
'product' => 20,
'price' => 10,
'description' => 30,
'amount' => 10,
'unit_price' => 10
);
return $column_widths;
}
修改后的样子:
注意图片中第二个产品的Price和Unit Price不同,这里sola解释一下。Price输出的是下单时的产品价格,Unit Price输出了产品的当前价格,如果在下单后产品价格发生变化,Unit Price就会和订单里记录的price不同。
Unit Price是插件默认带着的字段,可以选择关闭,但使用时请注意它的含义。
更多定制该插件的代码看这里。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论