2340条评论

  1. 还有一个问题请教,想达到这样的功能,主要涉及到哪些知识点:打开一篇博文,左侧显示一个按钮,用于显示/隐藏 文章目录,有点像wordpress 仪表盘中的收起/展开菜单。我在stackexchange问过这个问题,被告知是用css解决就够了,但我还是没什么思路。

    文章目录,倒是有挺多现成插件的。我想到的一个方法是,左侧有一个sidebar,sidebar放上目录插件,再弄一个按钮用于显示/隐藏 sidebar。期待你的持续指点。

    1. 用css确实可以,就是会有浏览器支持的问题,看下这个帖子http://stackoverflow.com/questions/17731457/hide-show-content-list-with-only-css-no-javascript-used。
      先弄明白+ ~ :checked这几个选择符的含义,然后了解这个规则:点击label标签可以控制checkbox或者radio button的状态,只要label标签的for和input的name名称相同,当你能控制选中与否的状态时,就可以用:checked来写样式,翻译下就是说我想让被选中的那个radio button旁边的div隐藏或者显示。

      用jquery也比较容易,jquery的show() hide()方法就是专门干这个的。http://www.w3schools.com/jquery/jquery_hide_show.asp

      1. 非常感谢提供思路,看来有些复杂。我目前的站点几乎都是依靠插件来解决,再着就是伸手小范围修改下css。

  2. Hi Cathy (应该没错),

    从你博客了解到wooCommerce,但没看到你博客有wooCommerce主题的相关介绍,想听听你的看法。

    我大概了解了下,Divi几乎是一致好评(付费的,elegant themes开发的主题评论都挺好的),免费的话就估计是Storefront最好了。

    1. WooCommerce主题太多了,介绍也介绍不过来。Divi我用过,确实不错,但只是Divi自己的框架不错,elegant themes的框架在我看来就是多余的东西,没有更好。

      Divi主题自带一个类似visual composer的编辑器,后者也是一款很棒的复杂样式编辑器。二者各有所长,Divi比visual composer多了一个库的概念,可以把一段html代码或者几个element的组合样式定义为库里的元素,方便重复利用以及全局调整样式。Divi的UI设计也很有特色,用不同的颜色区分元素的使用场景。
      Divi使用WP的theme customizer定制主题,这个很好,那个主题选项是elegant theme的,就是我觉得很没用的部分。
      Divi的性能也不错,visual composer虽然不会拖慢站点,但很多使用这个插件的付费主题自己搞的太复杂,反而效率很差。

      我在用WooCommerce主题时也没太注意好坏,给我的感觉都差不太多,付费的功能多性能就不那么好。免费的功能少,客户可能要花更多的钱定制维护。然而客户选择主题时设计是一大要素,基本是先看样子,功能不够再找人开发。所以好不好是因人而异,只要不是代码写的很垃圾的,基本都差不太多。

      如果硬要来个排名,可以去themeforest上找下人气高的主题,这些主题维护的好,不用担心今天买完明天下架,作者回答问题也比较积极。说到这忍不住吐槽一下WooCommerce官网卖的插件,价格贵就不说了,有些用的人少的bug很多。真不如去themeforest买的插件好用。

  3. 请教美女一下,User Generate Password 插件.用户注册时可以输入密码。
    第二次登录输入注册时的密码确定密码就是注册时的。但是提示密码错误!

    1. 这个插件实在是太旧了,我没法保证能在最新版WordPress上运行,如果你能等等的话我可以抽空重新写一个。

      1. 我的版本是WordPress 4.3.1。找不到别的注册时候可以输入密码的插件,只好用你的了。可是发现了这个问题。现在头疼死了。每天注册的人都要加我我帮他们改密码。

        1. 别的插件我不清楚。这个不能用可能是新版WordPress强制使用复杂密码,不过这应该不是很难解决的问题。
          找人开发这个功能,可以基于现有代码开发,并不需要很厉害的程序员。如果你收到的报价都贵的无法接受,可能是你描述的需求有些笼统,程序员考虑到后期可能提出的各种细节问题而提高报价。个人经验,客户需求十分明确,价格会比较合理。

  4. 请问下,如何才能让用户必须登录之后才能在woocommerce里面购买,否则不行? 我在百度了一段代码,但是放进去网站就白了 add_filter(‘woocommerce_get_price_html’,’members_only_price’); function members_only_price($price){ if(is_user_logged_in() ){ return $price; } else return ‘登录注册查看价格!’; }

    1. WC的设置 checkout选项卡下有个选项叫“ Enable guest checkout”,不要勾选就行了。

      至于代码,是有php错误吧

  5. (Sorry for not Chinese input method on Ubuntu)

    Dear Sola,

    Thx for your constant help. I happen to know that the domain name ‘solagirl.com’ is currently available. Hope this info is helpful to you.

    Have a wonderful day.

    SparkandShine

    1. 多谢多谢,我很多东西虽然知道但不是一清二楚,和你讨论问题也等于逼自己弄清楚了^_^。看你的博客觉得你的学习方法很棒,记录问题,解决问题,逻辑很清晰,很高心你在我的博客留言。

  6. 还有一个问题请教您。我利用代码插件插入代码,代码中显示的是HTML entries,而不是HTML字符,比如:

    \setsansfont{<font name>}[<font options>]

    实际上,应该为(左右尖括号):

    \setsansfont{}[]

    求指点,先谢谢了。

    1. 到你这就显示正常了。即HTML characters不正常显示,显示的是HTML entries。比如”<" 显示为 “<”

    2. 要正常显示代码就要让浏览器把标签当成plain text,比如要显示 < 应该写成 < 可以看下http://stackoverflow.com/questions/42182/how-to-escape-and-inside-pre-tags

  7. Hi solagirl, 最近有一个wordpress问题困惑我。我wp升级至4.3.1,发现以前的代码(利用代码插件插入的)不能自动换行(wrap line)了。 我看了wordpress论坛,说是跟

    <pre class="brush:php"></pre>

    有关,但我还是未能解决该问题。请指点!谢谢!

      1. 我用inspect element查看HTML标签,是code,又查看了style.css的,只有两条代码:
        code, kbd, tt, var {
        font: 15px Monaco, Consolas, “Andale Mono”, “DejaVu Sans Mono”, monospace;
        white-space: pre-wrap;
        }

        于是添加了如下代码,但还是不能解决问题。
        code {
        white-space: nowrap;
        }

        我将问题相关的代码整理成一篇文章http://sparkandshine.net/ask-questions/,还请您抽空提供指点,谢谢。

        1. 你问问题的方式好新颖~~

          我在firebug里试了一下,如果你在主题样式表里添加这个样式可能管用

          .syntaxhighlighter code {
              white-space: pre !important;
          }
          

          你主题的code{white-space: pre-wrap;} 导致换行的。

          我装了syntaxhighlighter evolved插件,用shortcode插入java代码并没有引号被转义的问题,除非一开始拷贝的代码就是被转义的代码。建议试试直接在可视模式下输入代码会不会出问题。在html模式下输入会被WordPress 转义。

          至于WP Keyword Link插件,它应该是过滤所有content,把tag文字替换成链接。而显示源代码必须把<>这俩符号转义,让浏览器把

          这种当成普通字符串处理,为了正常显示代码,高亮插件肯定要转义的,但keyword插件不会,这俩同时处理一段字符串会产生冲突。源代码最外层是pre标签,禁止keyword插件碰触pre标签里的东西就避免冲突了。

        2. 非常感谢您耐心的回复,想必一定占用了你不少时间。 在您的帮助下,问题终于解决了。是这样的,syntaxhighlighter evolved是wordpress插件(默认支持的是shortcodes),我平时写博文是在Windows live writer,这样就需要装一个支持syntaxhighlighter的插件,最后选择的是precode(不支持shortcodes,用的是pre标签)。所以: (1)设置syntaxhighlighter evolved,让pre标签可用。这样就解决了HTML entries显示问题,如 '% lt;' 便可正常显示为 '<'; (2) 禁止代码换行。关于源代码显示,如果我没有理解错的话,可以用两种标签:

          。在您的指导下,我发现syntaxhighlighter的css文件,有如下代码:
          
          .syntaxhighlighter code {
            display: inline !important;
          }
          
          最后,我在自定义css添加如下内容:
          
          pre {
              white-space: pre !important;
          }
          
          .syntaxhighlighter code {
              white-space: pre !important;
          }
          
          注:之所以还添加
          
          也是`white-space: pre !important;`,是因为我之前博文插入代码没使用插件,inspect elements查看,用的是
          
          Thx for whatever u have done for me. Have a nice day:-)
          
  8. 我想请问下用那个外链产品,会有按钮直接链接到其他网站,可我还想要拥有能够在本站购买的功能,这个该如何实施?

    1. 如果目的是增加站外购买链接,而不是去掉购买功能,那应该用普通产品类型,然后把购买链接加到模板里就可以了。
      例如加下面代码到functions.php里,代码作用是将echo的内容放到add to cart按钮后面。如果没起作用可能是你主题定制了woocommerce,换twentytwelve主题测试。

      function product_external_buy_links(){
      	echo '<button class="button">购买链接</button>';
      }
      add_action( 'woocommerce_single_product_summary', 'product_external_buy_links', 35 );
      

      购买链接可以用custom field存储,读取用get_post_meta()函数
      或者用Advanced custom fields插件创建一个字段存储,本质相同但界面更友好,调用时用the_field(‘字段名称’)就行了。

      1. 不好意思再打扰你下,我用读取用get_post_meta()函数,可只要用在href就出错,而直接弄成文字就没事? 这为何

        1. 首先打印get_post_meta到底获取了什么,是否含有非法字符串,是不是返回了一个数组?
          当然,最好据报错来解决,比如parse error之类的,谷歌一下一般都有结果。

  9. sola你好,请教下 advanced custom field 增加Text Area类型的时候会自动增加p标签,如何去除p标签呢?用strip_tags函数会全部或者留一个标签其他都去掉.如何才能实现后台填写的值是多少,输出的值就是多少?谢谢sola的指导

    1. 创建textarea时有个选项叫New Lines,设置为No Formatting就可以。或者你直接用get_post_meta读取这个字段,数据库里存储的是没有p和br的数据,输出时用了wpautop()才出现换行符。

  10. 你好,
    我来了你的站好几趟,原来是找wordpress用户注册界面发送邮件问题,无意中从一个插件内,知道地址。因为不太合适就没用到它,后来自己想办法搞掂了。
    我的站是新站,原来只有颜色和文字,从中参考了很多象你一样的博客的意见,现在开始做得还算可以。
    不过,现在还一个外链没有。能不能交换个链接?
    我的站
    midao.xyz
    多嘴说句,有人赞你的“那些格子”,哈哈,我倒觉得怪怪的、很眼花,一般移动距离没那么开吧,似乎有些夸张。

    1. 链接暂时不会换了,估计很久都不会换了,没时间打理这些东西。
      审美是我怎么都羡慕不来的东西,设计师赛高。不过有人赞不正说明自己不是一个人吗(⌒▽⌒)

  11. 你好,一直都在关注着你的博客,首先非常感谢你的博客帮我解决了很多技术问题!今天又遇到一问题向你请教一下。
    请教如何 woocommerce 插件用户中心显示 wordpress用户中的 “昵称”和“公开显示为” 这两个选项!

    期待着你的回复!谢谢

    1. 你可以把woocommerce/templates/myaccount/form-edit-account.php拷贝到主题里进行更改,这是覆盖woocommerce模板的方式,具体操作自行谷歌一下。

      这个模板输出的内容是yourdomain.com/my-account/edit-account/页面的表单,把昵称和公开显示为两个字段写进这个表单里。

      然后把存储这两个字段的代码也写进主题,方法是把这个操作放到woocommerce保存account details的代码里,利用do_action( ‘woocommerce_save_account_details’, $user->ID ),action的用法请自行了解一下。

      更改那两个字段的值需要用函数wp_update_user(),字段名称为user_nicename和display_name。

    2. 参考代码http://bitsandbabble.com/2014/10/custom-user-fields-on-woocommerce-my-account-page/,忽略内容直奔代码看看。

  12. 我的网站说是有病毒,我查看后台,出现了一些不认识的文件,类似这样的:tetqwqsadBlpnyw,tetqwqsaddeeroM,tetqwqsadzM05Ge,…很多
    不知道怎么回事?是有人攻击吗?

    1. 估计网站被人装后门了,这些文件都是通过后门装上的。而有后门可能是网站的脚本有漏洞,通常是第三方插件或主题带的。

        1. 把站点清理干净,特别注意WordPress核心代码通常也会被污染,重新升级后还要手动删除多余文件。更改管理员密码,最好cpanel、ftp和数据库密码都改一下。

          检查所用的主题和插件,主题不要太旧,比如带有旧版timthumb的主题就很容易被黑,插件选择使用人数较多且维护好的。

          可以借助一些工具来排除,比如https://sitecheck.sucuri.net
          也可以装一下WordPress插件来帮助提升安全系数,像https://wordpress.org/plugins/sucuri-scanner/和https://wordpress.org/plugins/gotmls/

          站点要经常备份,这很重要。如果想找出入侵路径,可以找人检查一下访问日志。中毒后必须清理干净,否则就是没完没了。

  13. 博主您好,还有一些问题想请教一下,woocommerce除了支持支付宝,paypal,支票,线下转账等以外有什么方法可以支持信用卡,借记卡,visa以及Mastercard这些付款方式吗?如何实现?

    1. 支持国内信用卡的插件不好找哦,大部分只是很对国外的服务,比如stripe之类的。
      你可以看看官方的扩展http://www.woothemes.com/product-category/woocommerce-extensions/payment-gateways/

      但官方的有些插件质量不是太好,还贵,不如在codecanyon上找找,http://codecanyon.net/search?utf8=%E2%9C%93&term=woocommerce+credit+card

      免费插件也有,比如
      https://wordpress.org/plugins/woo-mynix-braintree/
      https://wordpress.org/plugins/woocommerce-payment-gateway/
      https://wordpress.org/plugins/stripe-for-woocommerce/

  14. 博主您好,最近在使用woocommerce过程中遇到点难题,需要二次开发,有些地方不明白,如果你有时间的话麻烦您加我的QQ 309316513 希望你能对woocommerce插件进行二次开发

      1. 是這樣的,我有個網站http://www.forestpet.com/index1.asp ,這個是我專門用來給客戶下單的,用戶勾選好產品之後點擊右上角的inquire now就會進入一個頁面提交訂單,並且輸入一些東西,然後我現在想改版(因為網站過時了),決定用wordpress加woocommerce來實現,前台首頁樣式我已經弄好了,現在就是想用woocommerce插件來實現剩下的功能,第一是不顯示價格(用了你的代碼搞定了),但是woocommerce默認不寫價格的話前台不會顯示產品,所以有沒有什麽辦法讓後臺不需要輸入價格,也不需要顯示價格那個模塊就能讓產品顯示在前台呢?
        還有就是怎樣把add to cart的按鈕變成一個加號按鈕
        最後就是想修改前台產品頁面的樣式,我上傳了兩張圖片,分别是兩種布局,因為我的產品之中有一種產品顯示都是橫條,所以不希望用九宮格實現,這是我後面打算用的程序網站:http://elos.wptheme.wang/
        這里是兩種布局的圖片地址:http://www.dailymail.cn/wp-content/uploads/2015/10/Collar-Harness-Lead-Product-Categories-Colo-副本.png
        http://www.dailymail.cn/wp-content/uploads/2015/10/Collar-Harness-Lead-Product-Categories-Colo.png

        感激不盡

        1. woocommerce产品不写价格也会显示,链接叫read more而非add to cart;catalog mode是说填写价格但不想价格显示出来,并去掉所有购买功能,不知道你的为何不写价格就不显示?

          add to cart的样式可以用css修改,也可以直接修改文字,这里我建议你用插件WooCommerce Customizer,合理使用插件不会降低网站速度,而且利于后期维护。catalog mode也可以用插件的,比如https://wordpress.org/plugins/woocommerce-catalog。

          布局可以通过css修改,比如把需要横幅显示的产品放进一个分类,只修改这个分类的模板。

  15. 你好,感谢您分享的技术文章,不过我还是有些问题解决不了,请问可以帮忙看一下吗?http://kristybiju.com.br/my-account ,注册以后不会自动登陆,而且登陆的话还显示密码错误,但是后台显示已经有了注册的帐户。另外商品无法添加到购物车

    1. 你确定你的浏览器支持cookie吗?登录和购物车都需要cookie的支持,我在你网站试了一下,可以添加产品到购物车,语言让我晕倒^_^

  16. SOLA美女,上次在你这里看到推荐一个国外研究wordpress一些免插件实现功能的网站,是你回复评论的时候发表的,当时没有收藏起来,只收藏了你的博客,现在想找回那个网站,找不到了。能告诉一下吗?非常感谢!

      1. 确实很久之前的吧。好像给的三个都不是。当时去进去看了一下,里面大多数都是以代码形式实现一些小功能,而且不是插件的。我今天翻了好多你的评论,你的wordpress文章都没有找到。晕死了,当时就觉得收藏起你的网址就可以了,下次要的时候再来找。结果现在不记得在哪篇文章里了。。不过,这三个也不错。非常感谢!

        1. 一定要及时bookmark啊,有些东西错过了就会永远错过。不过也有可能那网站已经改版了。我记得以前有个专门写wordpress code snippet的网站,现在死活也搜不到了

  17. Hi Sola,

    我的B2C外贸网站用的woocommerce,现在问题是shop page 页面产品的标题太长导致图片高度不能对齐,排版显得错乱,这个您有办法解决吗,我谷歌了下按照相关的代码粘贴到functions.php还是不能对齐高度。希望得到您的回复,谢谢!shop页面网站是http://www.queenstarhair.com/index.php/shop

    1. 这个shop页采用了pinterest那种瀑布流排版,这种方式为了最大限度利用空间,恰恰是不对齐的。
      如果不去掉这个脚本,你可以试试下面的方法:
      1. 缩小标题字号使其不换行
      2. 使用white-space:nowrap和text-overflow:ellipsis强制标题显示在一行上,显示不开了的用…代替
      3. 给每个产品加最小高度min-height:540px,保证这个高度比最占地方的还要高就行,再注意mobile下的样式

      这些css样式应该写在主题样式表里,一般是主题根目录下的style.css,写法如下

      .mobile-false .iso-container .wf-cell, .mobile-false .iso-grid .wf-cell {
          min-height: 540px;
      }
  18. 你好,我想问一下,我做的网站现在有个问题,就是二级菜单被限制了数量,目前就有四个可以点,不知道应该怎么来修改,谢谢

    1. 需要搞清楚是php代码限制了数量,还是css。
      菜单用wp_nav_menu()函数调用,这个函数的depth参数决定最多输出多少级菜单,0表示输出所有,1表示只输出顶级菜单,以此类推。
      如果php这里没问题,再添加css代码就可以了,显示次级菜单最简单的css代码是li:hover > ul{display:block},只要知道css的基本知识,就可以控制菜单输出的样式了。

  19. 博主,你好。我想,我有点喜欢你。
    我知道,这貌似与你无关,但还是要真心 祝福你 开心。

        1. 我不是感情专家,暗恋很多人都有吧,反正我有。不会有结果,但想想也挺舒服。

  20. 你好,看了你的博文,很赞赏你的专业素养,我想请你帮一些小忙,当然是有偿的,请联系我QQ:471318910

  21. 亲,你有帮人二次开发wordpress的商城吗?有的话请邮件联系我.
    帮我做个项目,我们谈酬劳。

  22. Hi Sola,百度许多次有关wordpress的问题,经常遇到你的网站,解决不少疑惑,谢谢!

    现在碰到一个支付的问题,是一个免费的simple membership 会员插件,老外做的,很不错,能够实现访问前必须注册(现有支付宝插件无法实现)但是只支持paypal。如何改为支付宝接口?谢谢!

    1. 我没用过这款插件,首先你需要知道支付宝接口的集成方法,然后读懂这个插件集成paypal的方式,把支付宝套进去。
      paypal和支付宝的api不同,但原理类似,基本过程都是:
      1. 收集付款参数,生成一个跳转到付款网站的链接,将用户跳转到这个链接
      2. 用户在付款网站完成支付,跳转到购物网站,这时收到同步通知,通常有一个同步处理函数来负责处理数据
      3. 付款网站还会发送异步通知,防止同步跳转失败时数据无法更新,同样要有一个负责处理异步通知的函数
      4. 在同步通知或者异步通知更新数据库,注意防止重复操作。

      付款时要生成什么样的链接,同步通知和异步通知会发送什么数据,这些是支付接口的api决定的,与你往哪里集成无关,对支付宝来说你要仔细读它的文档。

      在什么地方生成付款链接,如何跳转到支付网站,同步处理和异步处理的函数放在什么位置,付款时如何选择多个支付方式,如何判断收到的通知来自哪个支付网关,这些由你要集成的插件来决定,各个插件会有不同,但支付宝和paypal类似,可以参考paypal。

      如果你要找现成的插件,我爱莫能助。

    1. 我对拍卖功能不是很了解,如果让我做的话,只能先参考别人做过的东西,了解具体有哪些功能,后台界面要做成什么样子比较好之类的。
      我看有个免费的插件https://wordpress.org/plugins/ultimate-auction/,不过可能要付费才有完善的功能吧,没试过。

      这个视频http://www.wpauctions.com/介绍了一下后台界面和前台样子,看了一下能对拍卖有点既视感。

      看到拍卖需要商品、用户管理以及付款配送模块,那么基于woocommerce来做也不错,搜了下有类似插件,比如http://codecanyon.net/item/woocommerce-simple-auctions/6811382