WooCommerce将每个产品的总销量作为wp_postmeta表里,可以用get_post_meta获取,方法如下

在主题的functions.php中加入如下代码

//在shop页面显示总销量
add_action( 'woocommerce_after_shop_loop_item_title', 'wc_product_sold_count', 5 );
//在产品详情页面显示总销量
add_action( 'woocommerce_single_product_summary', 'wc_product_sold_count', 11 );

function wc_product_sold_count() {
	global $product;
	$units_sold = get_post_meta( $product->id, 'total_sales', true );
	echo '<p>' . sprintf( __( '已销售: %s', 'woocommerce' ), $units_sold ) . '</p>';
}

修改add_action最后的数字可以调整位置,值越大越靠后。

代码来自:WooCommerce Number Of Products Sold

效果如下所示:

在shop页面显示

product-sold2

在产品详情页面显示

product-sold

WooCommerce只记录了总销量,无法显示月销量。

48条留言

  1. shop页面和详情页面如何分别定义样式,这样输出后定义样式都是一样的

    1. 如果你是指能区分这两个页面的css selector,可以看一下body上的class,二者不同。
      如果要用php输出不同样式,可以看下判断条件:https://docs.woothemes.com/document/conditional-tags/

  2. 搞定了,非常感谢

    1. 太好了,很高兴你自己能解决。

  3. 晕,不能发代码上来

  4. 博主你好,我又点你的广告来了,哈/
    请问这个销量的代码是不是不行了,我加入以后要么不显示,要么在导航栏头顶出现乱码
    可以帮我看下应该怎么加吗?下面是我主题的functions.php

  5. Fatal error: Cannot redeclare wc_product_sold_count() (previously declared in \functions.php on line 1786

    有问题,不能使用

  6. 请问在shop页面显示 TAG,代码该怎样写呢?

    1. get_the_terms( $post->ID, ‘product_tag’ ), 核心在此,具体用法你谷歌一下就有了

  7. 版主辛苦了!woocommerce属性设置添加 颜色属性(红黄蓝)为中文!添加自定义商品颜色属性(选择显示的是 红黄蓝),在前台显示是乱码!用英文(red“` 就显示正常)!请问是编码的问题么?如何解决!谢谢!

  8. 用了这个,但是数字前的名称显示的是乱码,另外不知道样式能不能好快点,比如做成个按钮啥的。

    1. 只要会css样式随意改,我觉得没有写出来的必要。中文显示乱码,注意一下编辑器的编码和网页编码是否一致,一般是utf8。
      一个没链接的销量做成可点击的按钮似乎没啥意义,你说呢。

  9. 请问博主大大,这个销售数量自己可以随便改么?thanks.

    1. 既然是cusotm field应该可以改吧,在编辑文章里开启自定义字段的显示,找一下total_sales这个字段

      1. 谢谢! 另外还想说下WOO产品页的产品图片真心不好修改啊!可以写个与这个有关的文章么?其实我就是想让我的产品图片小一些,并且我知道WOO默认是一个403X某某的固定位置,所以产品图片无论在后台怎么设置它都要FIT在这个位置上。观察到这个后,我就想到直接用CSS改这个位置的布局,可是还是不行,某些情况下宽度怎么改都不变。。。

        1. 图片变小,改一下css就行了,不如加一段样式

          .woocommerce #content div.product div.images, .woocommerce div.product div.images, .woocommerce-page #content div.product div.images, .woocommerce-page div.product div.images {
          padding-right: 40px;
          box-sizing: border-box;
          -moz-box-sizing:border-box;
          }
          

          padding值越大图片就会越小,主题可能对结果产生影响,需要你懂css才行

          1. .attachment-shop_single{
            width: 250px;
            height: 300px !important;
            }

            我用的上面这个。

  10. 你好,有一些問題困擾我很久,也嘗試找解決方法但還是解決不了,希望可以幫忙一下,謝謝

    1.我的Woocommerce中的My account登出時會出現404 PAGE NOT FOUND!而不是登出頁面,還有”登出和修改帳戶資料及密碼”的文字不能以其他顏色區分?

    2.我嘗試完成交易但不能自動發電子郵件?

    3.在編輯My account個人資料可否只提供”名字,電子郵件和電話”這三項的填寫資料?

    謝謝

    1. woocommerce登出后404,这时浏览器地址栏里的url是什么?是my account页面的地址吗?
      完成订单是指在后台点完成订单按钮吗?如果是,那么检查一下你的站点是否能正常收发邮件。
      第三个问题可以用代码解决,代码放到主题的functions.php里,注意这段代码也会影响checkout页面的字段

      add_filter( 'woocommerce_default_address_fields', 'wc_custom_default_address_fields');
      function wc_custom_default_address_fields( $fields ){
      	foreach( $fields as $key => $v ){
      		if( !in_array($key, array('phone','email','first_name','last_name') ) ){
      			unset($fields[$key]);
      		}
      	}	
      	return $fields;
      }
      
      1. 不是,栏里的url是my.com/wp-login.php?action=logout&redirect_to=http%3A%2F%2Fmy.com%2Fproduct%2Fmy-account%2F&_wpnonce=dd9255dd58″,訂單我在後台還有手機上也是一樣,要怎樣否能正常收发邮件和如果不能正常收发邮件可以怎樣解決,代碼是放在 woocommerce/includes/wc-product-functions.php這裡嗎?還是另外的functions.php,因為有幾個,要在那找?
        謝謝

        1. 你好,我嘗試找出登出問題時,在woocommerce/includes/wc-template-functions.php中,找到這個// Logout
          elseif ( isset( $wp->query_vars[‘customer-logout’] ) ) {
          wp_redirect( str_replace( ‘&’, ‘&’, wp_logout_url( get_permalink( wc_get_page_id( ‘myaccount’ ) ) ) ) );
          exit;
          在網上找到一上資料,修改了這段,出現了很大的問題,我現在連wordpress控制台也進不了,進入時網頁出現了Parse error: syntax error, unexpected ‘)’ in /home/content/p3nexnas05_data02/58/2093158/html/wp-content/plugins/woocommerce/includes/wc-template-functions.php on line 37

          該怎麼辦><,請幫幫我,感謝

          1. 你好,我巳用restore解決以上問題了,我的登出問題是在: Jim您好~ (不是 Jim? 登出)。 從你的管理面板,您可以查詢近期的訂單、 收貨及帳單地址以及 修改帳戶資料及密碼。在這裡的登出後栏里的url是:
            http://mydomain.com/%22http:/mydomain.com/wp-login.php?action=logout&redirect_to=http%3A%2F%2Fmydomain.com%2Fshop%2Fmy-account%2F&_wpnonce=dcf46b1752%22
            而這裡的登出和修改帳戶資料及密碼顏色也是黑色的,別人會很難辨別出來,可以怎麼修改?

            我是用godaddy主機的,我用了WP-Mail-SMTP這個外掛,
            在SMTP Host選項填了relay-hosting.secureserver.net,現在如果購買成功客戶是可以收到e-mail了,但是如果客戶想回覆該郵件我的郵箱是收不到,還有如果有客戶新訂單也收不到郵件通知,在Contact Form 7 中,如果客戶評論了也是收不到郵件通知,簡單來說現在是可以發出郵件但不能收到郵件,謝謝

        2. 代码放在你正在使用的主题的functions.php里,在wp-content/themes目录下。
          登出应该不是woocommerce本身的问题,把其他插件一个个禁用,换成默认主题,用排除法找下是不是插件主题有错误。wordpress和woocommerce都用最新版。另外,检查一下错误日志。

    2. 颜色的话要修改主题样式。登出错误有可能跟godaddy session问题有关,google一下。
      godaddy必须用smtp才能发邮件,收邮件可以用gmail之类的,非要用godaddy的email收,那就检查一下你的邮箱配置吧,收不到邮件就问客服。

      1. 我在style.css中的woocommerce項中,但那個才是My account頁面裡的顏色?

        我嘗試在選單增加customer-logout頁面,在網站裡是可以登出,但在my account裡的登出連結就不行,我嘗試 以下連結消除了這個,是可以到達登出畫面
        http://mydomain.com/“http:/mydomain.com/wp-login.php?action=logout&redirect_to=http%3A%2F%2Fmydomain.com%2Fshop%2Fmy-account%2F&_wpnonce=dcf46b1752”

        但這個多出來的要怎樣消除變回正常的連結?

        我是用gmail來作為網站郵箱,不是godaddy,所以奇怪為什麼只可寄而收不到

  11. 你好,请问下 如何在首页显示sku ?

    1. 商店首页的话,用钩子或者修改模版,具体可以看下官方文档

      1. 不能通过修改上述的代码实现吗?

        1. 上述代码就是钩子方式,显示的是总销量而非sku,你需要写获取sku的代码

          $sku = get_post_meta( $product->id, '_sku', true );
          if( !empty($sku) )
              echo '<p>' . sprintf( __( SKU: %s', 'woocommerce' ), $sku ) . '</p>';
          
  12. 很受用啊 谢谢版主辛苦整理 我还有几个问题啊 希望版主能有解决办法
    1 在自定义购物车界面的时候 发现商品图片是固定好的 不能通过css自己定义改,不知版主有没有更好的办法
    2 商品的好多属性也不知道该怎样添加啊。。。比如我卖的是衣服 总该有每件衣服的号码吧。。。可是这该怎样设置和显示呢。
    持续关注中

      1. 不知道你的网站为什么不能登录了 。。。就在这里留言吧 上次你解答了我的问题 我已经会设置商品的属性,在官方视频中 客户在购买界面选择好商品的属性时,页面就会自动出现加入购物车的按键,我的却怎么也出不来。,。。。好郁闷

        1. 按理说选了就可以出来,不出来的话可能是你没写价格,库存不足等等,你可以先安装官方的demo,demo里有可变产品,如果人家的能正常显示,那就是产品设置的问题了。

          1. 应该不是商品设置的问题 因为我用官方的主题就能出来 一换我的主题就出不来了,一定是我的自定义主题出了什么问题,我自定义主题不是通过钩子在functions.php文件中修改 而是直接在主题文件里创建woocommerce文件,然后直接修改原文件。所以才会出现这么严重的问题吧,这个瓶颈已经快走不过去了。。。。

        2. 最好不要覆盖woocommerce.php文件,这样更新时容易出问题。用既然走不下去,就重新整理下好了。

          1. 不覆盖没办法。。商品页完全自定义,如果不覆盖需要用的钩子太多。。。今天查出问题了 是css的问题。。。

        3. 在woocommerce.php里注释掉add_action与在functions.php里写remove_action,后者也不会麻烦太多吧。前者在woocommerce小升级时没事,大升级时就得对比一下文件更改了。

          1. 嗯 对的 你所说的也是我的顾虑 还要好好研究一下钩子的用法。。。 我修改了一下single-product / add-to-cart / variable.php文件 购物车按键是出来了。。 不过貌似提交不了我的商品样式选择,购物车里也总是提示我“请选择商品选项”。。。

        4. 无法提交商品选项,是不是有js错误?

  13. 请教一个问题,Woocommerce支持用户VIP包年服务吗?比如我有很多虚拟产品,单独购买15元每个, 用户也可以选择包年, 支付99元,那么所有的东西都可以不用在单独购买了,全部都可以下载. 这样不知道如何实现? 谢谢~

    1. 单独创建一个包年产品,把所有虚拟产品打包到一起放到这个产品的下载里可以吗?

      1. 多谢博主回答,我想来想去貌似也就是这个办法最简单,不足就是只能打包销售已经发布的,未来的就没办法了….就是不知道WooCommerce打包的产品最多支持多少个? 有没有上限? 另外就是想问下大神以你对WooCommerce的了解,有无可能二次开发使用优惠卷功能实现? 比如购买优惠券,和用户绑定,以后购买商品的时候都可以使用此优惠券,优惠券限期1年,基本上也就相当于年付了. 谢谢~

  14. 可行。谢谢!
    另,Shop页面下的Star Rating(星级评定)如何显示的?

    1. 商品选项卡下,选上“在评论中启用评分 ”,商品有人评分的情况下就可以显示。除非你主题不支持。

  15. 如何修改代码,销量为0 的不显示呢?

评论功能已关闭