2340条评论

  1. 请教:woocommerce单个产品的的按纽文字是“加入购物车”,可变产品的按纽文字是“选择选项”,用你的代码
    function woo_custom_cart_button_text() {
    return __(‘My Button Text’, ‘woocommerce’);
    }
    add_filter(‘single_add_to_cart_text’, ‘woo_custom_cart_button_text’);
    ,然后呢,要怎么做?我添加到模板的Function.php了,可是按纽文字没有变化哦,能帮我看下吗

    1. 新版filter名字变了,add_filter那段要改成
      add_filter(‘woocommerce_product_single_add_to_cart_text’, ‘woo_custom_cart_button_text’);

    1. 要是默认的woocommerce可以这样加

      add_action( 'woocommerce_after_add_to_cart_button', 'wc_single_product_extra_link' );
      function wc_single_product_extra_link(){
      	global $product;
      	$taobao_link = get_post_meta( $product->id, 'taobao_link', true );
      	if( !empty( $taobao_link ) ) :
      	?>
      	<a href="<?php echo $taobao_link?>" class="taobao-link button">淘宝链接</a>
      	<?php
      	endif;
      }
      

      淘宝链接存储到名为taobao_link的custom field里。

      1. 十分感谢美女,前面的代码是添加在哪个文件里?还有custom field是得需要个自定义域的插件吗

  2. 您好,看了您的网站很久了,我正在做一个网站,我的woocommerce 产品页 一行 只显示 3 个 产品 ,而且不对称,靠左,右边有一块地方看起来可以放下另外一张图片,但是显示空白,可是主页上一行可以显示4各产品,不知道为什么,我看到您有些过一个代码,关于first class, last class 的,我复制代码到 function 中 不好使,然后我又去下载了,WooCommerce Product Archive Customiser这款插件,安装后在dashboard中找不到 这个插件的设置页面,希望您能帮我解决这个问题。谢谢

      1. sola, 你好

        谢谢,我看到了,不管我怎么调整每行的产品数量,我的product 页面产品都是不对其的

        我选择显示2个每行,我的页面里则出现 – 第一行 1个产品,第二行 2 个产品,下面的重复这样
        我选择显示3个每行,则每行3个产品,就刚刚好,很对称
        我选择>3个每行, 则只显示3个,右边对应空出位置

        不知道为什么
        麻烦你解答一下

        1. 可能你主题用了类似masonry的设计,或者有布局错误,这个你只能去问主题作者。

  3. 你好,我使用了woocommerce后,站点页面会在顶部出现“This is a demo store for testing purposes — no orders shall be fulfilled.”的提示
    请问要进行过什么的设置才可以把它去掉?(它判断是否处于测试阶段的依据是?)

    1. 啊,刚才的问题已解决. . . 坑爹的中文翻译搞得我不知道哪里设置,后来终于发现了
      那另外再问问如何把woocommerce设成纯英文界面好了

      1. 把wordpress改成英文的,或者直接把woocommerce的中文语言包删了,那个中文翻译有些地方确实令人费解。

  4. 我一直想建一个网站,就像这个页面上
    http://www.v7v3.com/wpqiyezhuti/
    每一张图链接到一个页面(文章),我想在主页上只显示图像,而不显是文章的内容,
    但是,我找了一天多,都找不到该如何实现这种效果,
    望前辈指定迷津,醍醐灌顶

    1. 你说对是数字对黄色背景吗?那个数字使用html5标签mark包裹的,默认就是黄色背景,你要想改掉的话需要在样式表里覆盖掉这个设定。

  5. 你好博主,我的网站使用了woocommerce,结账的时候用银行卡的话就会生成清单,然后库存就会减少,但是使用支付宝结算的话,付完款后清单的位置显示erro,并且库存不会减少,但是order处显示了出来,并且支付成功了,该如何办呢?

  6. 您好,woocommerce结账页面收货人信息的国家,省市,地址,电话等显示顺序不符合国人的使用习惯,我想修改,但一直找不到这个表单在哪个文件里,form-checkout.php,form-billing.php两个文件里也只是简单的do_acttion调用,实际控制这个填写收货人信息的表单在哪里呢?麻烦告诉我,谢谢!

      1. 不用插件行吗?还有一些必填的选项后有个星号,用unset卸载后可以不填,但是星号还在,您知道怎么去掉吗?

        1. 卸载公司和邮编选项后,收件人信息模板排列就长短不一,这些是哪个文件控制的,checkout.php文件里找不到,谢谢!

        2. 插件使用得是woocommerce checkoit field api,如果你懂代码不怕读文档,那就可以不用插件了,去掉星号也是用这个api。基本上就是把那插件的代码copy一下放进主题里,去除admin选项部分。

  7. hi sola
    有个需求想麻烦您给点实现思路。
    一个wp模板有产品展示模块,现在想实现客户浏览产品过程将有意向的产品添加到一个列表或其他位置,
    最后可以调出这个列表来实现询价,询价就是普通的外贸框架,例如产品名称、最小定量、价格等字段。
    现在模板没用woocommerce,只是纯展示。
    实现这个需求要用到woocommerce吗?不用的话应该从哪入手?
    再次感谢!!

  8. 另外还有一个,添加自定义排序选项,改成显示正在打折的商品,如果可以按打折力度排行更好。

  9. Hello , 有个奇怪的功能想实现:

    如果可以控制所有商品额外加多少钱,例如这周网站上所有商品都在原价上+10元,下周又修改成5元 (直接在商品原价格上显示新价格)

  10. sola,又遇到个问题,我想给woocommerce的注册页面添加验证码,用了插件SI CAPTCHA Anti-Spam,但是完全无效,不填验证码也可以注册,你有没有什么好的办法?

    1. woocommerce最新版是自带anti-spam功能的,你要是观察下注册表单(My Account页面的那个),会有这段代码,用了honeypot的方法

      <!-- Spam Trap -->
      <div style="left:-999em; position:absolute;">
      <label for="trap"><?php _e( 'Anti-spam', 'woocommerce' ); ?></label>
      <input type="text" name="email_2" id="trap" tabindex="-1" /></div>

      建议你先这样运行一段时间,看看是否有spam注册。如果有的话再加别的验证。先从简单的开始,比如加一个注册问题,有个固定的答案,定期更换问题答案就是了。下面的代码演示如何更改注册表单,验证自定义字段,代码放主题的functions.php里

      /**
       * 给my account页面的注册表单增加注册问题
       */
      function wc_custom_registry_fields(){
          $question = '请填写本站域名'; //自定义问题
          ?>    
          <p class="form-row form-row-wide">
              <label for="reg_question"><?php echo $question; ?><span class="required">*</span></label>
              <input type="text" class="input-text" name="reg_question" id="reg_company" value="<?php if (isset($_POST['reg_question'])) echo esc_attr($_POST['reg_question']); ?>" />
          </p>   
          <?php
      }
      add_action( 'register_form', 'wc_custom_registry_fields' );
      
      /**
       * 验证注册问题
       */
      function wc_validate_register_fields($errors, $username, $user_email) { 
          $question_answer = "答案"; //自定义问题答案
          if ( empty( $_POST['reg_question'] ) ){
              $errors->add( 'reg_question_error', '<strong>错误</strong>请回答问题' );  
          } else if( false === strpos( $question_answer, strtolower($_POST['reg_question']) ) ){
              $errors->add( 'reg_question_error', '<strong>错误</strong>:问题回答错误' );  
          }
          return $errors;
      }
      add_filter('woocommerce_registration_errors', 'wc_validate_register_fields', 10, 3);
      

       

  11. sola,测试的时候发现我的QQ邮箱收不到自己网站上的评论提醒,其他邮箱都正常,但是我能收到你这里的,想请教一下你是怎么配置的?

    1. 我装了这个插件https://wordpress.org/plugins/wp-mail-smtp/
      From Emal设置为reply@solagirl.net
      From Name设置为~SolagirL~
      reply@solagirl.net这个邮箱是服务器上创建的真是存在的地址。

      不然WordPress就是用默认的地址发邮件,长的比较难看,有时候还发不出去。

        1. 这个插件本身不是重点,重要的是From地址,我想qq邮箱过滤垃圾邮件的时候会过滤这个地址吧。

  12. 您好 我装了个wp mail smtp插件 测试发邮件可以成功 为什么contact form 7还是收不到邮件呢 还要配置什么吗

    1. 检查发送邮件的地址,默认是用户填写的email地址,可以改为一个固定的地址,比如你服务器上创建的email。

  13. 我也是一个WP爱好者,深度地,不过我技术没你好,但很想和你交个朋友,一起讨论强大的WP。如有意向,请加我QQ820089893,如无意向,抱歉,打扰了。

  14. 你好啊,站主,我想问一下,wc里面,如何设置商品的码数之类的,比如裤子,有28码-31码,然后可以选择码数购买的。望指教。

    1. 用可变商品(Variable Product),先设置产品属性,在给每个属性设置价格库存等,就是variations选项卡
      官方文档看这里http://docs.woothemes.com/document/product-variations/,有图有视频。

  15. 为什么Woocommerce,上传商品后,商品图片显示特虚,还特大,而且相关商品的图片也特虚
    sola 这个怎么破?

  16. hi Sola

    不好意思,还得跟您请教一下关于woocommerce的问题,我想添加两个币种,一个是美元一个是人民币,需求就是用户用支付宝支付时的价格按设置的汇率转换成人民币。
    默认是paypal支付。我看您介绍过一个叫WooCommerce Multilingual的插件,这个可以用在这上面吗?
    还有paypal能单独设置一个手续费吗?使用paypal支付的用户需要多付一定比例的手续费。这个能实现吗?
    不好意思老是打扰您。希望不吝赐教。谢谢!

    1. WooCommerce Multilingual需要和wpml一起使用,它是根据语言来切换货币的。paypal不支持人民币只能用美元结账,要添加手续费需要filter一下paypal最后生成的参数,比如你可以在描述里写上额外加收总价1%的手续费,或者固定的费用,然后给总价格加上这笔钱,方法参考这篇文章https://www.solagirl.net/woocommerce-paypal-rmb.html

      至于支付宝,也跟paypal一样,在最后生成参数时,把总价格按汇率转换。因为支付方式是在最后一步才决定的,所以只能修改支付方式自己的参数实现。

  17. 您好 我想实现这样一个需求 希望有幸得到solagirl的指点
    首先说一下哈 不使用插件
    需求是这样的 :
    前台有个复杂的表单(有text类型、textarea类型、file类型【有多个】), 网站后台有个专门的管理表单的页面 类似于后台所有文章的列表展示方式(有单个删除、批量删除功能,可以分页,另外增加两个字段“处理完毕的”,“未处理的”) 点击某一项管理员可以修改用户提交的数据(比如处理进度)等
    用户登录后可以查看自己提交的申请的处理进度
    设想过使用投稿的方式来实现 但是感觉存在以下问题:投稿的话相当于发布个待审的文章 文章列表头部都是显示的文章标题 作者 分类目录 标签 日期这样的 而我的需求是后台表单列表头部显示 提交时间 提交用户的名称 以及各个表单项 {file类型的 显示file的url地址},处理进度
    不知道该如何实现这样的需求 如有好的方法 还望多多指点啊 感激不尽

    1. 首先,后台列表头部显示什么是可以自定义的,方法https://www.solagirl.net/custom-wordpress-admin-list-tables.html
      这样投稿功能的弊端就不存在了吧?最好单独拿一个custom post type来做,免得和别的post混在一起。

      1. 哦哦 好高级
        另外还有个问题哈嘿嘿
        前台表单上传的文件 可以不保存到网站服务器吗 我想让用户点击提交按钮以后 把普通字段以邮件内容的形式,把文件字段的数据以附件的形式发送到我的邮箱 这样可以吗

        1. 可以,用contact form 7 做表单,需要存数据库的,用action wpcf7_before_send_mail
          代码参考这里http://tonykwon.com/2011/05/07/preventing-contact-form-7-from-sending-out-emails/

        2. 博主您好 感谢您的及时回复 我的意思是 可不可以直接发送邮件附件吗

        3. 我用contact form 7 发邮件总是失败 装了个wp smtp插件 还是不行 收不到任何邮件

        4. 是在服务器上测试吗,发不了邮件说明配置不对。本地的话,smtp配置不对肯定发不了。要是cf7发不了邮件,你自己写程序发恐怕也成功不了。

        5. 配置完wp smtp.我用wp user front end 插件的表单 提交后 就可以收到邮件 用cf7却不能 好奇怪

        6. 那就是cf7设置有问题。要是那个插件你会用就用那个插件做呗,意思差不多。

  18. 您好 我想实现这样一个需求 希望有幸得到solagirl的指点
    首先说一下哈 不使用插件
    需求是这样的 :
    前台有个复杂的表单(有text类型、textarea类型、file类型【有多个】), 网站后台有个专门的管理表单的页面 类似于后台所有文章的列表展示方式(有单个删除、批量删除功能,可以分页,另外增加两个字段“处理完毕的”,“未处理的”) 点击某一项管理员可以修改用户提交的数据(比如处理进度)等
    用户登录后可以查看自己提交的申请的处理进度

  19. sola,你好,我最近想做个产品购物网站,就卖一种产品:眼镜。能否推荐一个集成WooCommerce的主题给我?免费的最好,以后我自己小改改也方便点。

    1. 可以考虑下woothemes自己出的免费主题,有几款支持woocommerce的,样子还不错,结合woosidebars插件使用,还是挺方便的,如果你会css,可以用child theme改改样子

  20. sola 最近申请了支付宝的平台商资格 可是在集成时遇上了一些问题 准确的说 是没有思路啦 不知道你可不可以来帮帮我? 当然也不好意思让你白干活 酬劳可以商议的

    1. 支付宝新的接口我没怎么研究过,你告诉我你要往哪里集成?我也只能说点思路,深入的东西我也不太了解啊。

        1. 多卖家是怎么个多法?假设你开了多卖家网店,每个用户可以填写自己的支付宝商户信息,结帐时根据商品是谁家的来决定收款人,这种功能用get_option的filter就能实现,动态修改alipay for woocommerce的收款人信息就行。你那链接打不开,我也没研究过支付宝的平台商,反正支付宝的文档看着就让人郁闷。

        2. 多卖家就是像淘宝一样的平台 我有用product vendor这个插件 所以卖家可以登自己的支付宝账号 在订单信息中插入这个应该也是没有问题的 可是alipay for woocommerce 的修改我还是无从下手啊 且不论支付宝那恶心的开发文档 我无法区分插件中哪些是作者自己加进去可以改的 哪些又是支付宝提供的接口文档哎…

        3. lib目录下是支付宝的,其它是自己写的。如果我上面说的符合你的需求,那你根本不用读支付宝文档。支付时用到的合作者id,key还有账户存储在options表里,get_option获取值时可以覆盖输出,用filter。只需要付款时根据条件修改一下支付宝插件用到的信息就行了。你要想弄明白,看看get_option的用法和woocommerce payment gateway开发文档,支付宝的看不看无所谓。

        4. 另外我说的方式应该不用修改插件,功能写主题里就行,只是要看你的vender插件怎么区分卖家的。

        5. 谢谢sola 经过你这么一分析 一下子清晰多了~ vendor插件会把账号写入wp option一表 另外我有一个疑虑就是 如果平台商和普通的担保交易的差别在于账号是单一还是多个的话 通过修改功能的确能达到我所要的效果 可是支付宝又是如何判断对方是否具有平台商资格的?我是说 一般的担保交易 只能绑定一个支付宝账号 即开发者账号 那么平台商和卖家账号之间又是怎么一种关系呢?

  21. 你好,请问woo做的网站,买了一个支付宝跨境的插件,为什么出现
    Payment error: Bad “currency” parameter (for Alipay payment request). Must be non-empty/non-blank string.

    谢谢 博主
    答疑

    1. 显示最低价格的话,可以试试下面的代码

      add_filter( 'woocommerce_get_price_html', 'wc_variable_price_format',10,2 );
      function wc_variable_price_format( $price, $product ){
          
          if ( !empty($price) && $product->product_type == 'variable' && !is_product() ) {
          
              $price = wc_price( $product->get_variation_price( 'min', true ) );            
              $saleprice = wc_price( $product->get_variation_regular_price( 'min', true ) );
              
              if( $price !== $saleprice ){
                  $price = $product->get_price_html_from_to( $saleprice, $price ) . $product->get_price_suffix();
              } else {
                  $price = $price . $product->get_price_suffix();
              }
              
          }
          return $price;
      }

       

  22. hi Sola
    五一快乐
    跟您请教一个woo的问题,我最近用Jupiter这个主题,发现SHOP页或者其他shop列表页面产品排列顺序有问题。
    如果是一行3列的结构,第4个也就是第二行第一个商品会跑到中间去,正常应该是从左边开始排列的,但我这个不知道为什么从中间开始了。然后第5个在最右边,第6个在最左边,这样导致了如果是4的倍数,产品会在中间,很难看,我看了一下官方的演示站没有这个问题,我用的是Jupiter 3.9.1 woocommerce 2.1.7和2.1.8都用过,都是一种问题。
    查看了一下css,发现是用-webkit-transform布局。不知道该如何处理。。。

    1. 我很久没用jupiter了,你那个shop页是不是masonry布局?官方演示站点的shop页我这怎么也加载不出来。要是masonry布局,可能排列顺序比较奇怪。要是float布局,那就是有浮动下落的问题,你的每个商品block的高度是不是不一样?最好直接去跟作者反映下,免得下个版本更新了还有这问题。

    2. 终于打开了,看了下官方demo,用isotope布局的,效果大概是这样http://isotope.metafizzy.co/layout-modes/masonry.html
      如果方块高度各式各样,那出来的结果可能会比较奇怪,你最好编辑一下你的图片,让图片高度一样,标题也不要换行,官方demo就是这么干的所以没问题。

      1. 十分感谢。
        的确是这个问题,通过对比发现促销价格所在的行比普通的高处2px,强制为统一高度问题解决了,官方的也有这个问题,只是他排列的顺序不知道是不是有意排列的,所以正好错开了这个状况。

        1. 不好意思,还得再打扰下,在这个主题商品页,我设置了关联商品,但是貌似没用,是不是主题没有调用这个设置的原因,他自己调用的好像是按类别关联的,我手动指定没有效果。

        2. 你说的是related product吗?这个是模版single-products/related.php控制,如果你看一下get_related()的注释,会发现这么一行
          // Related products are found from category and tag
          也就是说关联产品是根据类别和标签自动产生的,你无法控制具体是哪一个,如果想完全自己指定关联产品,需要修改related.php模版,
          去掉$related = $product->get_related( $posts_per_page );
          改用advanced custom fields插件的的relationship field给变量$related赋值即可。