本文整理了一些适用于WooCommerce的短代码,方便查阅和使用,更是为了理清思路,提高自己。以下WooCommerce简称WC,代码放在主题的functions.php中即可。

最后更新于: 2014-06-25

在主题中声明对WooCommerce的支持add_action( 'after_setup_theme', 'woocommerce_support' );

function woocommerce_support() {

add_theme_support( 'woocommerce' );

}

禁用WooCommerce默认样式// Disable WooCommerce styles

add_filter( 'woocommerce_enqueue_styles', '__return_false' );

禁用默认样式,就要引入自己的样式,可以直接写在style.css中,也可以另外写一个样式表function wp_enqueue_woocommerce_style(){

wp_register_style( 'woocommerce', get_template_directory_uri() . '/css/woocommerce.css' );

if ( class_exists( 'woocommerce' ) ) {

wp_enqueue_style( 'woocommerce' );

}

}

add_action( 'wp_enqueue_scripts', 'wp_enqueue_woocommerce_style' );

如果样式表中用到了WooCommerce默认的图片,还应将woocommerce/assets/images文件夹下的图片拷贝到主题目录。

WC面包屑导航

修改面包屑导航位置

首先删除默认的面包屑导航remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0);

将导航添加到其它位置,例如放在header.php中,则直接在header.php适当位置插入如下代码if( function_exists( 'woocommerce_breadcrumb') ) woocommerce_breadcrumb();

也可以用add_action添加,例如add_action( 'woocommerce_after_main_content', 'woocommerce_breadcrumb' );

修改面包屑导航的参数// Code source: https://gist.github.com/dwiash/4064836

function my_woocommerce_breadcrumbs() {

return array(

'delimiter' => ' / ',

'wrap_before' => '',

'wrap_after' => '',

'before' => '',

'after' => '',

'home' => _x( 'Home', 'breadcrumb', 'woocommerce' ),

);

}

add_filter( 'woocommerce_breadcrumb_defaults', 'my_woocommerce_breadcrumbs' );

参数注释:

delimiter:分隔符

wrap_before:起始标签

wrap_after:结束标签

before:起始标签之后、面包屑导航链接之前的内容

after:面包屑导航链接之后、结束标签之前的内容

home:首页文字,例如像给首页加font-awesome,可以这样设置'home' => _x( ' Home', 'breadcrumb', 'woocommerce' ),

修改首页和分类页面每页产品数量

每页显示多少产品默认跟随设置 » 阅读设置 » 博客页面至多显示的值,若要产品索引页和博文索引页使用不同的设置,可以使用下面的代码为产品索引页单独设置每页产品数。add_filter( 'loop_shop_per_page', create_function( '$cols', 'return 24;' ), 20 );

代码注释:每页显示24个产品。

修改分页导航的参数// Change args of wc pagination

add_filter( 'woocommerce_pagination_args', 'theme_wc_pagination_args' );

function theme_wc_pagination_args( $args ){

$args['prev_text'] = '« Previous page';

$args['next_text'] = 'Next page »';

$args['end_size'] = 3;

$args['mid_size'] = 3;

return $args;

}

参数注释:

prev_text: 向前翻页按钮的文字

next_text: 向后翻页按钮的文字

end_size:页面分头部、中间、后、尾部三部分显示,中间用省略号分隔,这个参数控制头部和尾部显示多少页

mid_size: 控制中间显示多少页

修改首页和分类页每行产品数量

注意,WC每行产品数量是靠给每行第一个产品元素添加.first class、每行最后一个添加.last class实现的,所以这段代码只能决定在哪里强制换行,与宽度无关。也就是说如果你设置一行显示4个产品,你不能期待每个li的宽度就是1/4,这个宽度是样式表设定的,如果样式表设定的宽度只够一行放下3个,而代码设定一行显示4个,那就会出现每行个数不等的情况。/* Change the number of products per column */

add_filter('loop_shop_columns', 'loop_columns');

if (!function_exists('loop_columns')) {

function loop_columns() {

return 5;

}

}

给列表页每个产品添加产品描述// Add product description

function theme_wc_single_excerpt(){

global $post;

echo '

' . apply_filters( 'woocommerce_short_description', $post->post_excerpt ) . '

';

}

add_action( 'woocommerce_after_shop_loop_item_title', 'theme_wc_single_excerpt' );

隐藏相关产品列表

默认产品页面底部有相关产品一栏,要去掉这个栏目,使用下面的代码。function wc_remove_related_products( $args ) {

return array();

}

add_filter('woocommerce_related_products_args','wc_remove_related_products', 10);

修改相关产品列表每行产品数量

用filter: woocommerce_output_related_products_args改变相关产品数量,同样只是改变换行的位置,需要配合适当的css设定宽度才能实现最终效果。add_filter( 'woocommerce_output_related_products_args', 'wc_custom_related_products_args' );

function wc_custom_related_products_args( $args ){

$args = array(

'posts_per_page' => 2, //共显示多少产品

'columns' => 2, //分几栏显示

'orderby' => 'rand'

);

return $args;

}

代码注释:在每个产品页面展示最多10个相关产品,每行显示3个。

修改产品缩略图每行数量

和首页产品每行数量类似,是通过添加.first和.last class实现,要真正达到自己想要的效果,还要添加适当的样式。add_filter ( 'woocommerce_product_thumbnails_columns', 'woo_thumb_cols' );

function woo_thumb_cols() {

return 4; // .last class applied to every 4th thumbnail

}

修改“Add to Cart”按钮的文字function woo_custom_cart_button_text() {

return __('My Button Text', 'woocommerce');

}

add_filter('woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text');

这段代码在实现Catalog Mode中十分有用。

修改货币符号function change_existing_currency_symbol( $currency_symbol, $currency ) {

switch( $currency ) {

case 'AUD': $currency_symbol = 'AUD$'; break;

}

return $currency_symbol;

}

add_filter('woocommerce_currency_symbol', 'change_existing_currency_symbol', 10, 2);

代码注释:将澳元的货币符号从默认的$改为AUD$。

添加自定义排序选项

下面的代码演示如何添加一个随机排序(Random)选项,添加其它选项方法类似。function custom_woocommerce_get_catalog_ordering_args( $args ) {

$orderby_value = isset( $_GET['orderby'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );

if ( 'random_list' == $orderby_value ) {

$args['orderby'] = 'rand';

$args['order'] = '';

$args['meta_key'] = '';

}

return $args;

}

add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args' );

function custom_woocommerce_catalog_orderby( $sortby ) {

$sortby['random_list'] = __('Sort by random order');

return $sortby;

}

add_filter( 'woocommerce_default_catalog_orderby_options', 'custom_woocommerce_catalog_orderby' );

add_filter( 'woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby' );

为订单添加附加费用/手续费

以下代码演示收取每单商品费用加运费总和的1%作为附加费用。add_action( 'woocommerce_cart_calculate_fees','woocommerce_custom_surcharge' );

function woocommerce_custom_surcharge() {

global $woocommerce;

if ( is_admin() && ! defined( 'DOING_AJAX' ) )

return;

$percentage = 0.01;

$surcharge = ( $woocommerce->cart->cart_contents_total + $woocommerce->cart->shipping_total ) * $percentage;

$woocommerce->cart->add_fee( 'Surcharge', $surcharge, false, '' );

}

付款成功后立刻发送invoice/**

* send invoice straight away if payment is successful

* @param string $order_id valid payment order id

* @return null

*/

function send_invoice_upon_payment_successful($order_id) {

global $woocommerce;

$order = new WC_Order($order_id);

$mailer = $woocommerce->mailer();

$mailer->customer_invoice( $order );

}

add_action('woocommerce_payment_complete', 'send_invoice_upon_payment_successful');

产品列表页:加入购物车按钮移动到标题之前remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );

add_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_add_to_cart', 10 );

产品列表页:添加链接

下面的代码演示如何在标题之前添加链接。add_action( 'woocommerce_before_shop_loop_item_title', 'wc_template_loop_additional_links', 10 );

function wc_template_loop_additional_links(){

?>

Button 1

Button 2

}

修改产品列表页按钮文字

产品列表页的按钮文字一般是:add to cart、select options, view options和read more。下面代码演示如何更改这些按钮文字,使用代码时,只选择需要的即可,比如要修改view options,只需add_filter( 'grouped_add_to_cart_text', 'wc_add_to_cart_text' ),其它的删掉。add_filter( 'woocommerce_product_add_to_cart_text' , 'custom_woocommerce_product_add_to_cart_text' );

/**

* custom_woocommerce_template_loop_add_to_cart

*/

function custom_woocommerce_product_add_to_cart_text() {

global $product;

$product_type = $product->product_type;

switch ( $product_type ) {

case 'external':

return __( 'Buy product', 'woocommerce' );

break;

case 'grouped':

return __( 'View products', 'woocommerce' );

break;

case 'simple':

return __( 'Add to cart', 'woocommerce' );

break;

case 'variable':

return __( 'Select options', 'woocommerce' );

break;

default:

return __( 'Read more', 'woocommerce' );

}

}

无论产品是否有属性,添加到购物车的按钮名称都是Purchase.

去掉产品页reviews选项卡add_filter( 'woocommerce_product_tabs', 'wc_remove_reviews_tab' );

function wc_remove_reviews_tab( $tabs ){

unset($tabs['reviews']);

return $tabs;

}

产品页添加自定义选项卡

添加一个features选项卡,内容可以用custom field来写。//Add custom tab

add_filter( 'woocommerce_product_tabs', 'wc_add_features_tab' );

function wc_add_features_tab( $tabs ){

global $product;

$content = get_post_meta( $product->id, 'product_features', true );

if( !empty($content) ) {

$tabs[ 'features' ] = array(

'title'    => 'Features',

'priority' => 1,

'callback' => 'wc_features_tabs_panel_content',

'content'  => $content,  // custom field

);

}

return $tabs;

}

function wc_features_tabs_panel_content( $key, $tab ){

echo  '

' . $tab['title'] . '

';

echo $tab['content'];

}

修改Shop base页面的浏览器标题// Change the browser title of shop base page

add_filter('post_type_archive_title', 'theme_wc_shop_browser_title' );

function theme_wc_shop_browser_title( $title ){

if( $title == __('Products', 'woocommerce')){

$shop_page_id = woocommerce_get_page_id( 'shop' );

$page_title = get_the_title( $shop_page_id );

return $page_title;

}

return $title;

}

商店页面默认的浏览器标题(Browser Title)是Products,这个页面其实是一个custom post type archive页面,虽然内容区域的标题跟随该页面的标题,但浏览器标题却是WordPress默认的,Products是一个custom post type,所以它的archive页面标题就是它的label名称。

上面这段代码可以让页面的标题成为browser title。

用户访问时将产品自动添加到购物车// add item to cart on visit

add_action( 'init', 'add_product_to_cart' );

function add_product_to_cart() {

if (!is_admin()) {

global $woocommerce;

$product_id = 64;

$found = false;

//check if product already in cart

if (sizeof($woocommerce->cart->get_cart()) > 0) {

foreach ($woocommerce->cart->get_cart() as $cart_item_key => $values) {

$_product = $values['data'];

if ($_product->id == $product_id)

$found = true;

}

// if product not found, add it

if (!$found)

$woocommerce->cart->add_to_cart($product_id);

} else {

// if no products in cart, add it

$woocommerce->cart->add_to_cart($product_id);

}

}

}

虚拟产品:付款成功后订单状态立即变为completeadd_filter( 'woocommerce_payment_complete_order_status', 'virtual_order_payment_complete_order_status', 10, 2 );

function virtual_order_payment_complete_order_status( $order_status, $order_id ) {

$order = new WC_Order( $order_id );

if ( 'processing' == $order_status &&

( 'on-hold' == $order->status || 'pending' == $order->status || 'failed' == $order->status ) ) {

$virtual_order = null;

if ( count( $order->get_items() ) > 0 ) {

foreach( $order->get_items() as $item ) {

if ( 'line_item' == $item['type'] ) {

$_product = $order->get_product_from_item( $item );

if ( ! $_product->is_virtual() ) {

// once we've found one non-virtual product we know we're done, break out of the loop

$virtual_order = false;

break;

} else {

$virtual_order = true;

}

}

}

}

// virtual order, mark as completed

if ( $virtual_order ) {

return 'completed';

}

}

// non-virtual order, return original status

return $order_status;

}

woocommerce 分类到菜单_WooCommerce实用代码集合相关推荐

  1. woocommerce 分类到菜单_Woocommerce商店显示分类

    我是wordpress的新手, 所以如果我输入的语言错误, 请仍然为我提供帮助. 我想使用woocommerce显示具有可变产品的商店, 我希望商店链接登录页面显示具有该类别特征图像的商店类别. 我当 ...

  2. woocommerce 分类到菜单_Woocommerce教程:添加和编辑产品Category分类

    在使用WordPress的woocommerce商城插件制定商城的时候, 如果你公司拥有众多产品, 那么应该需要给这些产品添加Category分类, 以便分类管理产品, 让网站访客更快地找到自己想要的 ...

  3. php左测导航栏,商城左侧大分类导航菜单教程完整代码

    提示:本页面右侧代码编辑器中的代码纯属展示调试代码 本代码最终的效果请用下面的的完整代码,复制到本地运行 完整代码html> 商城左侧大分类导航菜单 *{ margin:0; padding:0 ...

  4. woocommerce 分类到菜单_我如何为每个WooCommerce产品类别创建不同的菜单?

    请帮我有关Wordpress的提示, 我也创建了9个菜单, 也创建了9个WooCommerce类别, 但是我不知道如何在各自的WooCommerce产品类别中调用每个菜单. 我使用Themefores ...

  5. 做网页很实用代码集合和CSS制作网页小技巧整理

    做网页很实用代码集合 控制横向和纵向滚动条的显隐?<body style="overflow-y:hidden"> 去掉x轴 <body style=" ...

  6. 【经典之作】做网页经常用到的代码集合2

    做网页经常用到的代码集合2 26.图片渐渐显示   说明: 图片渐渐显示   代码: <img src="UploadFiles/200601/20066404225734.gif&q ...

  7. Vue 所有实用插件集合汇总

    Vue 所有实用插件集合汇总 框架 element - 饿了么出品的Vue2的web UI工具套件 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开源 UI 组件库 ...

  8. 数学建模_随机森林分类模型详解Python代码

    数学建模_随机森林分类模型详解Python代码 随机森林需要调整的参数有: (1) 决策树的个数 (2) 特征属性的个数 (3) 递归次数(即决策树的深度)''' from numpy import ...

  9. 朴素贝叶斯(西瓜数据集分类,社区恶意留言分类,垃圾邮件分类,新浪新闻分类),AODE分类器 代码实现

    朴素贝叶斯(西瓜数据集分类,社区恶意留言分类,垃圾邮件分类,新浪新闻分类),AODE分类器 代码实现 以下代码为本人学习后,修改或补充后的代码实现,数据集和原代码请参考:https://github. ...

最新文章

  1. ArrayList集合为什么不能使用foreach增删改
  2. python 引用(import)文件夹下的py文件的方法
  3. Node.js 究竟是什么?(zz)
  4. css之其它技巧和经验列表
  5. foo、bar到底是什么意思
  6. 5 ui自适应窗口_Qt编写地图综合应用5-自适应拉伸
  7. shell中$( )与${ }及$(( ))的区别
  8. catia钣金根据线段折弯_钣金折弯如何确定折弯的顺序
  9. 培养创造力的10个注意点
  10. 【实验五】利用三层交换机实现VLAN间路由
  11. 一dubbo框架学前原理介绍
  12. 知网查重报告html乱码,知网查重报告出现乱码怎么办
  13. 逻辑库、物理库、分库分表(TDDL)
  14. 8个免费高清无版权图片网站--设计必备
  15. 【随笔】Linux刷脏页
  16. 2021年全网最详细的计算机二级备考攻略,看完都会过~
  17. node联合echarts简单实现疫情地图
  18. 常见的引脚功能介绍(基于ADSP-SC589芯片)
  19. 西电计算机学院崔江涛,“师德标兵”崔江涛:人才培养的研究者与实践者
  20. 方格走法-牛客网(排列组合和动态规划)

热门文章

  1. Bootstrap4 div居中
  2. linux屏幕伽马值设置,设置计算机显示屏的亮度和对比度伽玛值
  3. 全球及中国车险行业十四五渠道营销与竞争战略规划报告2022-2028年
  4. PHP开发微信支付小微商户V3版本 图片上传、生成签名、平台证书获取、平台证书编号、敏感信息加密
  5. 会员付费超前点播模式争议背后,我们该怎么看待在线视频的未来?
  6. 详解GMT CST UTC DST PDT PST几个时间概念
  7. 类似qq的汉字拼音首字查询
  8. 7寸显示器 树莓派4b,7寸屏幕
  9. Flink 如何分流数据
  10. VS Code写C语言输出long double类型数据不正确的问题