博客

  • 如何在 Page Builder Sandwich 上添加自定义短代码

    如何在 Page Builder Sandwich 上添加自定义短代码

    From the word itself, the word shortcode means exactly that: A short code; a shortcut code.

    简码允许您向网站添加内容(例如小工具),而无需像开发人员通常那样添加大段代码。

    例如,一段常规代码的长度大概会长成这样:

    <html>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    
    Etiam id aliquam turpis. Vivamus quis arcu tincidunt, finibus urna eget, placerat risus.
    
    Aliquam arcu massa, finibus et lacinia sed, scelerisque nec augue. Quisque eu viverra sapien, vel consequat lorem. Integer vel erat tortor.
    
    Phasellus condimentum magna eget congue venenatis. Suspendisse blandit vehicula consectetur.
    
    Nullam sodales eleifend massa, in bibendum purus fermentum id.
    
    Morbi et turpis feugiat, malesuada ipsum sit amet, interdum nulla. In non ante nec nisl mattis gravida sit amet id lectus.
    
    </html>​

    在这个示例中,假设上面的代码可以让您添加一整段 Lorem Ipsum 占位符文本。

    Now, a shortcode with the same exact function as the code above will look something like this, in contrast:

    [lorem ipsum dolor estat]Lorem Ipsum[/lorem]​

    You can see how they’re miles different from each other in terms of length.

    现在想象一下,这两段代码——原本冗长的代码,与仅包含单词“lorem”的简码——所做的事情完全相同:添加 Lorem Ipsum 文本。

    This is what shortcodes do. They make adding widgets, functions, and a bunch of other cool stuff easier for both ordinary WordPress users and developers alike.

    Where can I find shortcodes?

    如果您有喜爱的插件或小工具,它们很可能都提供了可供您使用的简码。

    Shortcodes Ultimate, for example, will let you choose from hundreds of shortcodes that you can use on Page Builder Sandwich (or anywhere, actually) by simply grabbing the shortcode of your choice from Shortcode Ultimate’s repository or documentation page.

    Adding Custom Shortcodes on PBS

    在 Page Builder Sandwich 上,您只需输入或复制粘贴到内容区域,即可直接在页面上添加简码。

    我们下面使用来自 Shortcodes Ultimate 的简码进行了演示,在 Page Builder Sandwich 演示页面上添加了一个内容框:

    Another thing you’ll find handy when using Page Builder Sandwich is our Shortcode Mapping feature.

    根据我们之前关于简码映射(Shortcode Mapping)的一篇文章,其定义如下:

    Shortcode mapping is like letting Page Builder Sandwich memorize all the shortcodes available on your site: their names, descriptions, their attributes, and what each of these attributes do.

    这意味着您不再需要在各自的文档或代码库中手动查找简码。

    只要您的 WordPress 网站上安装了包含该简码的插件,您就可以在 Page Builder Sandwich 上轻松使用它。

    So for example, if I wanted to add a WooCommerce shortcode on my page, all I have to do is make sure that it’s installed on my WordPress site, like so:

    And then, to actually add the shortcode, I’ll just go to my page, and drag and drop the Shortcode Element:

    Because we already have WooCommerce installed on our WordPress site, you can see that all of the shortcodes that are available on the WooCommerce plugin are already available on Page Builder Sandwich. This is what Shortcode Mapping is.

    You can also see on the upper left corner that the ACF (Advanced Custom Fields) and MailChimp shortcodes are available– because we have those instlled on our WordPress site, too.

    因此,如果您想添加自定义简码,或者自己制作的简码,只要将它们安装到您的 WordPress 网站上,就可以实现。

    Here are some other helpful plugins that you can use to create your own custom shortcodes:

  • 利用这些2017年黑色星期五优惠,打造一个超棒的WordPress网站

    Create WordPress Website With Black Friday Sale 2017 Deals Black Friday and Cyber Monday are coming in a couple of days (5 to be exact), but you’ll find that a bunch of websites have already started announcing their discount deals every which way. WordPress tools and plugins are definitely no exception.

    因此,趁着时间尚早(相对而言),我们整理了一份2017年WordPress黑色星期五最超值的优惠清单,涵盖了搭建WordPress网站所需的一切必备工具——而且完全在您的预算之内。

    闲话少叙,以下是搭建您的第一个基础WordPress网站所需的5款超值折扣工具和插件。

    Cloudways

    Cloudways is a managed cloud hosting platform that’s quick to start, easy to manage, and made to scale. It’s feature-rich, plus it lets you choose your server resources, allowing you to get your site up and running within minutes.

    Enter the coupon code HOLIDAY25 upon checkout to get a 25% discount on Cloudways for 3 months, valid until 28th November 2017.

    从Cloudways获取您的优惠券

    Yoast SEO

    Yoast SEO is one of the most popular (if not most trusted) search optimization plugin for WordPress, and for good reason too. With over 7 million installs, it’s probably the most comprehensive SEO tool in the digital market, and their millions of users (ourselves included) can attest: you simply can’t go wrong with a plugin as functional as Yoast.

    While they haven’t announced this year’s Black Friday coupons yet, they’ve made an announcement in one of their articles that they’ll definitely having a sale on November 24 and 25.

    立即查看Yoast SEO!

    WP Rocket Cache

    WP Rocket offers a good range of caching functions, giving your site the performance boost that it needs. It’s a breeze to configure as well, so it’s great for beginners as it only requires minimal effort for setup.

    This year, they’re having their biggest sale yet: 35% off on ALL their licenses.

    获取WP Rocket优惠券

    Theme Discounts from WeDevs.com

    WeDevs汇集了众多精妙的WordPress插件和扩展。他们拥有非常稳固的社区,自2008年便已成立。针对2017年黑色星期五(以及今年的后续节日),他们整理了一份WordPress节日特惠清单,包含大量精选WP主题的折扣和优惠券。

    获取主题优惠券

    BONUS RESOURCE: First Site Guide

    First Site Guide is a resource site and tool that contains easily accessible knowledge on how to create your first website, both on WordPress and off of it. It also has great infographics that guide you through the basics of blogging, design, and marketing as well. And best of all, you get this good share of site-building knowledge for free.

    我们很快还将推出一篇着陆页制作教程文章,其中包含来自First Site Guide的绝佳资源,敬请在接下来的几周保持关注!

    前往First Site Guide

    (And last but not least) Page Builder Sandwich!

    We definitely don’t want to miss out on all the fun. So this 2017, we’re giving you guys 33%-off on any license. Just use the promo code CYBERMONDAY33 upon checkout to start building your site today!

    Premium Single Site

    $39 $26.79

    立即购买

    Apply CYBERMONDAY33 upon checkout to save $13.20

    Premium Unlimited Sites

    $89 $60.29

    立即购买

    Apply CYBERMONDAY33 upon checkout to save $29.70

    So what are you waiting for? Grab these kick-ass WordPress deals now. After all, Black Friday only happens once a year. ?

  • Page Builder Sandwich 与众不同之处

    How-Page-Builder-Sandwich-Is-Different-from-the-Rest市面上有成百上千款页面构建器,您肯定会问自己:Page Builder Sandwich 有何特别之处?如果您手头已经有了一款,为什么还要费心使用它呢?

    在本文中,我将列举 Page Builder Sandwich 中所具备的几项关键特性,这些特性使其独树一帜,成为内容创作者和设计师的必备之选。如果您还不知道什么是页面构建器以及为什么需要它,别担心,我们有一些资料可以为您提供帮助。

    1. 您不仅能看到内容的视觉呈现,更能直接查看并编辑实际内容

    在其他页面构建器中,您看到的只是代表您内容的区域。您主要使用区块和矩形来布局内容,结果看起来更像是一个框架,展示您的内容最终在页面中的大致位置。这导致您需要不断点击预览按钮,只为了查看最终呈现效果。

    而使用 Page Builder Sandwich,所有编辑都在网站的前端完成,您可以直接编辑内容,获得真正的所见即所得体验。

    2. 快速便捷的直接编辑,告别所有恼人的弹出对话框

    弹出窗口一直是页面构建器的常见元素。在大多数构建器中,如果您想编辑布局中的任何内容,无论是标题、按钮标签还是小标语文本,您都必须先等待弹出对话框打开,然后在其中进行更改。

    在 Page Builder Sandwich 中,我们的目标是全面最大程度减少弹出窗口的使用。通过去除弹出窗口,编辑任何内容都变得前所未有的简单和流畅。

    编辑方式直截了当——点击文本即可放置光标,然后直接开始输入。您不再需要等待包含 TinyMCE 编辑器的弹出对话框打开才能开始编辑。最棒的是,您仍然可以随心所欲地拖放内容。

    另一项有助于实现无忧编辑的创新是随时可见的检查器(inspector)。检查器充当您的工具箱和属性编辑器。用于格式化内容的工具:文本颜色、标题、字体大小调整、外边距、内边距、边框、引用块等,只需轻轻一点即可使用。

    Reused functionality

    3. 复用 WordPress 原生功能

    我们在其他页面构建器中注意到的另一件事是,它们经常重复造轮子。有些构建器实现了自己的拾色器、图片上传器、图库创建器以及各种其他工具。这本身并没有什么错,但 WordPress 本身就是一个代码片段的宝库,为什么不加以利用呢?

    WordPress 是一个庞大而精彩的平台,包含众多优秀贡献者构建的大量酷炫工具。Page Builder Sandwich 尽可能多地使用 WordPress 已自带的功能。

    我们没有开发自己的拾色器,而是使用了 Iris 拾色器;没有开发自己的图片上传器,而是使用了媒体管理器。此外还有 backbonejs、underscorejs、wp.hooks 和 wp.shortcode 等许多精巧的脚本。我们充分利用了所有这些资源,这不仅让我们的开发更轻松,也带来了更稳定的代码库。

    复用 WordPress 的功能还带来了一些意外的惊喜。例如,由于我们使用媒体管理器插入图片,令人惊喜的是,我们开箱即用地支持了 WordPress 图库、音视频播放列表以及远程 URL。我们还可以直接使用媒体管理器进行图片编辑,从而省去了数小时不必要的开发烦恼。

    4. 键盘导航和快捷键

    在其他页面构建器中,鼠标是您的主要工具。您用它来拖放元素,双击元素来进行编辑。但键盘往往被忽视。

    例如,在某些构建器中,您无法轻松编辑当前编辑位置上方的一个段落/部分,因为您必须点击关闭一个弹出对话框,然后再点击进入另一个。而在 Page Builder Sandwich 中,您可以使用键盘进行导航。按下方向键即可在内容之间穿梭,即使您的其他内容嵌套在另一行或另一列中也同样有效。

    另一项重要功能是撤销和重做快捷键。它们一开始可能看起来不起眼,但试想一下:如果您不小心将内容拖放到错误的位置怎么办?在某些页面构建器中,您必须将其拖回原始位置。在 Page Builder Sandwich 中,撤销和重做都能完美运作。因此,无论您是想修改刚才输入的内容,还是想还原拖动的内容(甚至是多次拖动的内容),只需按下撤销或重做即可。撤销和重做不仅适用于拖放的内容,甚至还适用于属性更改(如字号和行内边距)。这使它们成为您编辑工具库中极其强大的利器。

    Relaxing experience

    5. 真正的前端页面构建器——更轻松、无烦恼的编辑体验

    我们在开发过程中的理念是:在前端编辑时不应感觉仍在使用后端工具。绝不能让人觉得这款构建器最初是为后端设计的,然后只是移植到了前端。

    总而言之,对我来说,Page Builder Sandwich 的核心不同之处在于,我们构建它的目标是成为一个“真正的”前端页面构建器——对前端编辑应有体验的重新构想。

  • Frontly API:让 Frontly 构建器对开发者更友好

    开发者的好消息:在 Frontly 即将发布的版本中,我们将正式推出 Frontly API。

    目前它仍在开发中,但你最终将能够为 Frontly 创建插件和扩展。当然,我们还会同步推出 API 文档,以提供更流畅、更实用的体验。

    我们迫不及待地想看到大家创造出的精彩内容。

    Here’s a short list of some of the APIs we have so far:

    1. Text Formatting Bar API

    借助文本格式栏 API,开发者可以扩展 Frontly 文本格式栏的功能。利用此功能,你可以在文本格式栏上添加新的按钮/选项。

    2. Add Element API

    此 API 将允许你创建新元素,并将它们添加到内容编辑器左侧“元素”部分的现有元素列表中。

    3. Inspector API

    检查器 API 将允许你在每个元素的属性检查器中创建、添加或移除设置。

    4. Text API

    文本 API 将允许你修改文本样式,具体而言,包括修改文本格式、更改文本背景颜色等功能。

    Developers! It’d be great if you could send over some suggestions

    These are just some of the basic APIs we have in store for you. We’re in the middle of creating more, but if you have any other ideas of APIs we can add to our console, just leave a comment below, or hit us up at [email protected]. We might just feature your suggestions in the upcoming Frontly release ?

  • 如何使用 Page Builder Sandwich 进行电子邮件营销

    如何使用 Page Builder Sandwich 进行电子邮件营销

    是的,您可以。

    The more important question, though, is how and why do you need to do it?

    My business is small. Can’t I just wing it?

    Email marketing has an average ROI of 3,800 percent. For every dollar invested, the average return is $38, according to Salesforce.

    In other words, it’s definitely something worth investing your time in.

    Because while there are tons of ways to market your products and capture leads– you can still try to make use of the less-popular cold call, for example– the most sure-fire way to connect and communicate with your target audience in the 21st century is through e-mail marketing.

    So if you’re running a business –any kind of business, whether small, big, online or otherwise– digital and e-mail marketing is an absolute must.

    Aside from cutting on costs (e-mail is free, after all), businesses rely on it not just because it’s been proven to be successful, but also because it yields results that are both measurable and flexible; you can track your audience’s responses to your e-mails, for example, or note how many clicks and opens your e-mail marketing campaigns get.

    How you can do it with Page Builder Sandwich

    There are lots of available software you can use to help you market your products and content digitally, like Hubspot’s E-mail Marketing Software, or Mailchimp, which gives you a management system that helps you create, organize, and analyze your newsletters.

    But did you know that using Sandwich, you can actually integrate some of the popular software mentioned via the Newsletter Element?

    The Newsletter Element (and how it works)

    You can find the Newsletter Element by hovering over to the Elements Inspector over to the left side of the screen, and selecting Newsletter from the bottom area.

    Using the Properties Inspector, you can also choose which newsletter integration you’d like to use with the Newsletter Element. For this exmple, we’re going to use MailChimp (highlighted in blue in the dropdown below).

    And, using the Input Field button, you can try to play around with the Newsletter Element’s settings as well, so you can change colors, customize success message options, and other settings, like so:

    By trying your hand at the different available settings for the Newsletter Element’s options, you can end up with something like this:

    Plus, with the help of our Pre-Designed Sections and other design tips, you can actually do a whole lot more.

    Other useful resources for e-mail marketing beginners

    • 11 Types of Marketing E-mails That Actually Generate a Response

    Conclusion

    While other noteworthy marketing trends still exist today, one thing’s for sure: E-mail marketing is definitely here to stay, and it’s important that you utilize it when you can. Who knows? Through e-mail marketing, your business could just get that big break it’s been looking for.

    Design in less time!

    Get access to Sandwich’s Pre-Designed Sections, Templates, and a whole lot more.

    Try Live Preview
  • 提供优质客户服务的秘诀

    每天早上上班路上,总有一位咖啡师以你能想象到的最臭的面瘫脸把咖啡递给我。这是我们俩每天的固定仪式。

    如果不是这家咖啡店刚好在去办公室的必经之路上,我可能很久以前就换地方买咖啡了。

    而在线客户支持领域中,也不乏这种咖啡师式的存在。

    但因为在电子邮件和在线交谈中看不到对方的面无表情,所以它们不太容易被一眼察觉。 但相信我,它们确实存在。

    优质的客户服务固然是业务增长的关键。但仅仅提供客户支持还远远不够。

    你必须提供良好(甚至卓越)的服务,让客户感到自己受到重视,因为他们确实很重要。 毕竟,客户才是你业务存在的根本原因。

    然而,并非所有人都明白,客户服务绝不能仅仅是敷衍了事而毫无质量可言。

    事实上,即使公司背后有客服团队早已是常态,但最新统计数据显示,68% 的客户离开一家公司是因为他们觉得公司并不在乎他们(而公司理应在乎)。

    但究竟什么才算得上是优质的客户支持,你又该如何维持它呢?

    作为一名客服同行,以下是让你的客户——进而让你的业务——保持满意的一些关键要素。

    1. 善用负面反馈

    无论是在科技行业还是其他行业,你总会通过某种方式收到关于你产品的反馈。但请注意:并非所有反馈都是你想听到的。

    对此你必须做好准备。

    不过,除了做好心理准备,你更需要做的是欣然接受并善用负面反馈。

    迟早有一天,投诉、功能需求和不满的声音会向你扑面而来。

    认真记录下它们。

    倾听并坦诚面对收到的所有评价至关重要——无论是正面的还是负面的。这些反馈指出了你的产品或服务所欠缺的地方,为你提供了满足受众或市场需求的机会。

    例如,如果你收到大量关于用户界面难以操作的投诉,那就意味着你必须改进用户界面。

    如果这是你一个月内第三次收到关于产品性能不佳的投诉,那么也许是时候和团队开个会,优先解决这一性能问题了。

    换句话说,负面反馈是好事。它们是你进一步改进产品的契机,让你能从客户的不满中汲取灵感。这将助力你的业务和产品更上一层楼,而这越能实现,你和你的客户就都会越满意。

    2. 让他们感受到你是一个真实的人

    真正让我感到厌烦的一件事,就是收到语气生硬、听起来像是自动生成的邮件。

    大型企业通常会依赖真正的自动回复和机器人,但这主要是因为它们的品牌在市场上已经根深蒂固且备受信赖。

    现在,如果你和我们一样是由真人提供客户支持,那么让受众知道你也是个真实的人就非常重要——他们可以与你交流,可以寻求帮助,并且能够得到真诚的回复,而不是听起来千篇一律、预设套话式的模板回答。

    对于一对一的邮件支持,我的建议是:绝不要对客户说你在现实生活中不会说的话。这意味着该抛弃诸如“问候!”或“对于未能及时回复,我们深表谦卑的歉意”之类的生硬措辞了。

    就个人而言,我认为过分的客套会让人觉得你提供支持并不是出于关心——而纯粹是因为这是你的工作,你不得不做。

    这是大忌。

    因此,除非公司政策明确规定,否则请务必努力让客户明白并感受到他们可以与你交流沟通。让他们知道你是真心提供帮助,而不仅仅是因为拿了薪水就机械地吐出机器人般的回复。

    3. 绝不要把他们晾在一边

    这一点显而易见。

    绝、绝对不要把客户晾在一边,而不给他们的问题提供解决方案——或者至少是一个权宜之计。

    不过有时候,没有直接解决方案的问题是无法避免的。比如,假设有客户询问某项你知道短期内绝不会推出的功能。

    你会怎么说?

    “抱歉,我们没有该功能。再见。

    顺祝商祺,
    客服支持团队”

    嗯……这样可不行。

    如果需要提供临时的替代方案,就提供。如果客户想要粉色款,而你目前只有红色款,坦白告知,但也告诉他们在此期间可以怎么做。

    “一旦有更多颜色可选,我们会再次联系您!”并且务必贯彻落实

    4. 快速响应固然重要,但高效解决同样不可或缺

    是的,尽快回复客户很重要。但仅仅发个回复是远远不够的。

    你的回复应该言之有物,并针对手头的问题为客户提供解决方案或替代办法(参见第 3 点)。 两者缺一不可。

    确实,客户往往心急如焚——但给他们一个敷衍了事的回复和完全不回复一样糟糕(甚至可能更糟,因为一旦点击“发送”按钮,就覆水难收了)。

    5. 切忌做出无法兑现的承诺

    “别担心,我们一小时内帮您搞定!”

    如果你花的时间超过了一小时,你和公司的声誉就全完了。

    虽然这在最初听起来对客户很有吸引力,但无法兑现可能会引发更具破坏性的反应。

    如果你知道需要 24 小时才能修复,那就诚实地告诉他们。相比一个匆忙赶出却差强人意的产品,客户宁愿多花点时间等待一个完美运作的产品。

    结语

    那么提供优质客户支持的秘诀是什么?永远不要低估它。

    客户是你的驱动力,也是重中之重。

    请以同等的重视态度对待他们。

    下次当你在投资优质客户支持方面犹豫不决时,请记住 Neil Patel 的这句话:

    “聪明的企业主深知,失去的每一段客户关系(无论是流失给竞争对手还是其他原因),平均每年都会让他们损失 289 美元。

    如果你认为只要获取新客户就能弥补这一损失,那就再想想吧。事实证明,获取一个新客户的成本是留住一个现有客户的六到七倍。”

  • PBS 4.0 版本中的移动端响应式

    正确实现移动端自适应响应式设计可能会非常棘手,一旦搞砸,结果往往惨不忍睹。事实上,如果你还没听说过的话,谷歌甚至在2015年4月就已经开始惩罚对移动设备不友好的网站了。简而言之,移动端自适应是一件大事。

    那么什么是移动端自适应?

    当一个网站的内容在桌面端以外的设备上查看时,能够适应不同的屏幕尺寸和屏幕方向,该网站就被认为是响应式的。更简单地说,如果你已经升级到 PBS v4 并希望设计或构建页面,无论你是在台式机、手机还是平板电脑上,浏览它们都应该毫无困难。

    4.0 版本中的自适应响应性

    在我们最新的更新中,我们的团队确保了 PBS 全新的移动端查看功能带来整体更流畅、更具响应性的体验:文本、图像和所有其他内容都会自动适应你的设备屏幕分辨率。

    现在所有标题都会根据屏幕尺寸自动调整,因此在手机上查看由 PBS 构建的网站或页面时,就不会出现巨大的文字。为了更清楚地展示这一点:

    以不同屏幕尺寸查看您的网站

    为了帮助大家了解自己的页面在移动设备上的呈现效果,我们还启用了通过桌面端进行移动视图预览的功能。这样一来,如果你想检查页面是否美观,就不必经历在手机(或平板电脑)和桌面端之间来回切换的麻烦。现在你可以在设计页面时,随时在不同屏幕尺寸之间轻松来回切换。

    更棒的是,你现在还可以专门针对平板电脑和手机微调元素的间距。

    大家觉得怎么样?喜欢还是不喜欢?关于移动端方面,我们还有哪些功能可以改进?请在下方评论区告诉我们!

  • Frontly 品牌重塑更新 #1:复制粘贴段落

    Over our past blog posts, we mentioned that PBS will be rebranding as Frontly, and that we’ll be changing and improving a lot of aspects for the better. One of these aspects is being able to use Frontly to experience a smoother, more intuitive page building experience that’s even better than PBS.

    因此,在我们仍在为大家完善 Frontly 的同时,我们决定发布一系列文章,让大家确切了解 Frontly 上市后您将获得什么。

    Copy-paste blocks of text on Frontly

    我们设计 PBS 的方式是让您的每个段落都成为一个独立的元素。复制粘贴长文本会将选定内容划分为独立的文本块。

    What do we mean by this? Here’s an example to illustrate.

    在 PBS 当前版本(即您现在使用的版本)中,复制粘贴多行文本会被拆分为多个文本元素,从而导致移动文本段落变得更加困难。这也让编辑文本变得很不方便。

    所以,如果我想把刚复制粘贴的文本移动到另一列,操作起来会更费劲,因为我必须逐行拖动。

    This is something we’re definitely addressing with Frontly.

    This is a small test page Benjamin made for Frontly. Here, you’ll see that we copy-pasted the same paragraph we tried to copy-paste on PBS. Only this time, everything is retained in a single area that you can drag around and place wherever you want to.

    这意味着您可以更顺畅地添加和编辑文本,为您带来轻松无忧的打字(以及页面构建)体验。

    Retain full text formatting with Frontly

    我们在 Frontly 中非常期待大家尝试的另一项功能,是所有格式都会保持原样——所有标题都会保留,包括项目符号,甚至是表情符号。

    Copy-pasting with PBS vs copy-pasting with Frontly

    在 Frontly(右侧)上,您会看到所有文本格式都保留了原始内容的样式。当粘贴到 Frontly 区域时,所有加粗、斜体、下划线或编辑为不同标题大小的内容都保持完好无损(相比之下,PBS 唯一保留的只有表情符号)。

    What else do we have in store for you?

    正如我们所提到的,这只是介绍 Frontly 将如何大幅领先于 PBS 的系列文章中的第一篇。我们迫不及待地想向您展示所有其他内容,敬请关注我们的下一篇博客文章!

    有任何建议或意见?欢迎联系我们并在下方留言!

  • 我们如何将插件性能提升200%

    2017年2月2日,Ann Taylor在CodeInWP上发表了文章《2017年WordPress页面构建器需要具备的12点特性 + 谁已经做到了》(12 Things We Need to See From WordPress Page Builders in 2017 + Who Already Gets It Right)。一年多来,我们一直在持续改进Page Builder Sandwich:我们深入调研,倾听用户心声,因此我们曾以为Page Builder Sandwich能够登上CodeInWP的“谁做到了”榜单。然而我们并未入选,原因出在性能上。?

    于是我们向Ann询问了原因,她回复道:

    ……我试用了一下免费版。它看起来很有前景:模块丰富、用户界面直观、出色的所见即所得体验、所有元素都能轻松拖拽。但是,当我在页面上添加了大约10个模块时,由于编辑速度变慢,继续操作就变得非常困难了……

    因此据她所说,Page Builder Sandwich存在性能问题。既然我们始终重视用户反馈,我们便对此进行了排查。

    测试性能

    我们需要一种方法来检测PBS的性能;由于PBS主要通过Javascript在浏览器端运行,Chrome的Timeline性能分析器(Profiler)正是胜任这项任务的最佳工具。Timeline分析器可以识别并测量网页在运行时发生的进程,非常适合用来寻找速度瓶颈。

    我们认为首先应该测试最简单的步骤——用鼠标滑过多处元素和行。很简单对吧?我们很有信心,像这样简单的操作绝不会遇到性能问题。不幸的是,我们错了。

    点击录制按钮后,我们在屏幕上移动了大约2秒鼠标,然后点击了停止按钮。以下是分析器生成的时间线:

    果不其然,到处都是性能瓶颈!

    图中发生了很多事情,但最明显的问题是里面有大量的紫色区域(这本不应该出现)。此外,这些紫色区域明显非常宽,而且似乎都达到了图表顶峰。您还会注意到图表始终处于占满状态,紫色区域几乎从未降为零。浏览器似乎总在忙碌地处理着某些事情,几乎从未歇息。

    但这些紫色区域到底意味着什么?

    分析器很贴心地告诉我们,它们被称为重排(reflows)。以下是来自Google开发者网站对重排的定义:

    重排(Reflow)是Web浏览器用于重新计算文档中元素位置和几何结构的过程……重排是浏览器中的用户阻塞操作。

    这意味着在PBS中随意滑动鼠标会触发大量重排。更糟糕的是,每次重排都会短暂暂停浏览器以完成计算。重排越多,意味着浏览器暂停越频繁,体验也会变得更加卡顿(janky)。简单来说,紫色区域多 = 体验糟糕。

    事实证明Ann是对的:我们确实存在巨大的性能瓶颈,因此我们的团队立即着手解决这一问题。

    解决重排/卡顿问题

    在着手解决之前,我们需要先进行一些研究,弄清楚究竟是什么引发了重排。我们发现,显然Javascript中的许多常见操作都会引发浏览器重排。

    几乎任何用于获取DOM元素宽度、高度或位置的函数都会触发重排。Paul Irish整理了一份详尽的列表,列出了Javascript中所有会导致重排的属性和函数。坏消息是,Page Builder Sandwich使用了大量这些属性和函数,而它们都会导致重排:

    • elem.getBoundingClientRect()
    • window.getComputedStyle()
    • window.scrollY
    • 以及更多……

    修复方案1:缓存开销巨大的重排过程

    最显而易见的解决方案是不使用这些属性和函数。然而,PBS严重依赖它们,我们无法完全不用。

    我们剩下的解决方案是尽可能减少对这些函数的调用。难点在于,我们在PBS的不同部分多次使用了这些属性和函数,而且大多数时候,我们是在同一个DOM元素上多次调用它们。为了解决这个问题,我们为每个有问题的属性/函数创建了自己的缓存机制。

    例如,getBoundingClientRect 函数可以为我们提供DOM元素当前的上、左、宽、高、右、下的像素测量值。我们在PBS中频繁使用此函数来计算绘制元素轮廓的位置。以下是我们为此创建的缓存函数:

    // 缓存:客户端矩形保存在这里,稍后可用于清理。
    var elemsWithBoundingRects = [];
    
    window.pbsGetBoundingClientRect = function( element ) {
    
    	// 检查之前是否已获取过客户端矩形。
    	if ( ! element._boundingClientRect ) {
    
    		// 如果没有,获取并存储以备后用。
    		element._boundingClientRect = element.getBoundingClientRect();
    		elemsWithBoundingRects.push( element );
    	}
    	return element._boundingClientRect;
    };
    ​

    现在我们不再直接调用 getBoundingClientRect ,而是使用 pbsGetBoundingClientRect 。现在每次查询客户端矩形时,我们都会存储该值以备后续使用,从而限制了重排触发的次数。

    当存储的客户端矩形失效时,我们还需要一种清理缓存的方法。当用户滚动页面或在屏幕中添加/修改/删除元素时,存储的客户端矩形值会发生变化。因此我们创建了一个缓存清理函数,每当我们需要获取最新的客户端矩形值时就可以调用它:

    var clearClientRects = function() {
    	var i;
    	for ( i = 0; i < elemsWithBoundingRects.length; i++ ) {
    		if ( elemsWithBoundingRects[ i ] ) {
    			elemsWithBoundingRects[ i ]._boundingClientRect = null;
    		}
    	}
    	elemsWithBoundingRects = [];
    };​

    我们对平时常用到的其他高开销函数调用也采用了同样的缓存机制。

    修复方案2:使用FastDom将读写操作集中归类

    实施修复方案1提升了PBS的性能,但这还远远不够。

    在进一步搜索后,我们发现了Wilson Page撰写的《防止“布局抖动”》(Preventing ‘layout thrashing’)一文。Wilson指出:

    当JavaScript频繁对DOM进行写入然后读取,多次引起文档重排时,就会发生布局抖动(重排)。

    显然,仅限制对特定触发重排的属性和函数的调用是不够的。当您连续对DOM执行多次“读”和“写”操作时,同样会触发浏览器重排。以下是直接摘自Wilson网站的典型场景:

    // 读
    var h1 = element1.clientHeight;
    
    // 写(使布局失效)
    element1.style.height = (h1 * 2) + 'px';
    
    // 读(触发重排)
    var h2 = element2.clientHeight;
    
    // 写(使布局失效)
    element2.style.height = (h2 * 2) + 'px';
    
    // 读(触发重排)
    var h3 = element3.clientHeight;
    
    // 写(使布局失效)
    element3.style.height = (h3 * 2) + 'px';
    
    // 帧结束时文档重排​

    上面的例子触发了3次重排,因为在写入后整个页面的尺寸都失效了。针对此问题的建议修复方法是重新调整代码顺序,把所有读取和写入操作分别集中归类到一起,这样整个过程就只会触发1次浏览器重排:

    // 读
    var h1 = element1.clientHeight;
    var h2 = element2.clientHeight;
    var h3 = element3.clientHeight;
    
    // 写(使布局失效)
    element1.style.height = (h1 * 2) + 'px';
    element2.style.height = (h2 * 2) + 'px';
    element3.style.height = (h3 * 2) + 'px';
    
    // 帧结束时文档重排​

    上面的代码片段让问题的解决看起来很简单。但在现实中,在PBS的整个生命周期中,读取和写入触发重排的操作发生在许多不同的地方和时间。重新组织成千上万行Javascript代码并不可行。

    幸运的是,Wilson在他的文章中也提供了解决方案。他创建了一个小巧的实用脚本来帮助将这些读写操作集中归类,名为FastDom。

    以下是Page Builder Sandwich中使用FastDom并结合了上述修复方案1的部分代码:

    // 将来自其他线程的读取操作集中在一起。
    fastdom.measure( function() {
    
    	// 使用我们缓存的客户端矩形。
    	var rect = window.pbsGetBoundingClientRect( elem );
    
    	// 将来自其他线程的写入操作集中在一起。
    	fastdom.mutate( function() {
    		elem.style.top = ( rect.top + window.pbsScrollY() ) + 'px';
    		elem.style.height = rect.height + 'px';
    		elem.style.left = rect.left + 'px';
    		elem.style.width = rect.width + 'px';
    	}.bind( this ) );
    }.bind( this ) );​

    FastDom的作用是将所有的 fastdom.measure 调用和所有的 fastdom.mutate 调用分组归类并异步执行,从而有效地将所有读取和写入集中在一起,减少浏览器中的重排。

    修复方案3:访问Style对象的开销很大

    在jsPerf的帮助下,我们还发现某些获取样式的函数比其他函数更快。

    在PBS中,我们通常需要获取元素特定样式的当前值。例如,我们通常这样获取上外边距(top margin):

    var styles = window.getComputedStyle( elem );
    var marginTop = styles.marginTop;​

    但是,我们发现这样做要快得多:

    var marginTop = elem.style.marginTop;​

    然而,elem.style.marginTop 和 getComputedStyle 大不相同。前者只提供元素的内联样式,不考虑任何样式表;而后者同时兼顾内联样式和样式表。

    更重要的是,即使缓存了 getComputedStyle 的结果,它仍然非常慢。事实证明,访问style对象本身就是一个缓慢的过程。

    幸运的是,PBS会将内联样式附加到元素上,并且由于内联样式(在大多数情况下)优先于样式表,因此在某些情况下仅获取内联样式值就足够了。所以如果我们将上述两种方法结合起来,就可以得到运行速度更快的代码:

    var marginTop = elem.style.marginTop;
    if ( ! marginTop ) {
    	var styles = window.getComputedStyle( elem );
    	marginTop = styles.marginTop;
    }​

    代码改进的效果

    上述3项修复耗费了大量的研究、测试和实际编码(甚至推迟了字体功能的发布),但最终一切都是值得的。

    回到我们最初在屏幕上移动鼠标2秒的测试。以下是之前糟糕/卡顿的时间线:

    这是性能改进后我们全新的时间线效果:

    正如您所见,图中的紫色部分减少了。浏览器执行的进程数量也有了显著差异。底部的矩形块也更窄了,这意味着进程运行速度比以前更快。

    如果对比新旧图表中高/宽紫色区域的占比,我们看到了高达200%的性能提升!我们在各个方面也都看到了性能的改善。效果相当不错!

    总结与收获

    坦率地说,在Ann提出之前,我们并未意识到PBS存在性能问题。主要是因为我们使用的是开发专用机器,性能瓶颈并不明显。回想起来,性能检测本应是最高优先级的事项之一。但至少现在,截至4.3版本,该问题已得到解决。?

    对于想要提升自身WordPress插件性能的开发者,特别是同样大量使用Javascript的朋友,以下是我从这次经历中总结的心得:

    1. 限制/缓存对触发重排的属性/函数的调用。可参考此指南:哪些操作会强制触发布局/重排:全面清单(What forces layout/reflow. The comprehensive list.)
    2. 将针对DOM样式的“读”与“写”集中归类。使用FastDom来替您完成这项工作。
    3. 使用Chrome的Timeline分析器,并确保重排(紫色区域)尽可能少。
  • 为什么我们从 EDD 切换到 Freemius

    为什么我们从 EDD 切换到 Freemius

    When Page Builder Sandwich was launched in 2016, we were using Easy Digital Downloads. In 2017, we moved to Freemius. Here’s why we switched:

    什么是 EDD,我们为什么选择它?

    Easy Digital Downloads (EDD) 是 WordPress 热门的自托管电子商务/WooCommerce 替代方案。开箱即用状态下,你无法直接使用 EDD 销售 WordPress 产品,但其 Software Licensing 扩展插件使其成为销售插件的理想选择。该扩展还负责许可证密钥的创建和验证。

    EDD 表现出色还在于它允许客户直接从网站购买我们的产品,同时还为他们提供专属的账户页面,供其登录并查看购买历史记录。

    Since it worked well, and since we’re a big fan of Pippin Williamson, this was Sandwich’s first option.

    与 Freemius 相比它是如何运作的,我们又是在何时进行切换的?

    2016 年,Freemius 的主开发者兼联合创始人 Vova Feldman 给我们发来了一封关于 Freemius 的概要邮件,解释说它不仅仅是一个电子商务解决方案—它还提供了分析与洞察解决方案, 营销自动化工具以及内置支持工具等其他功能,方便客户直接从 WordPress 仪表盘联系到你。

    最初,我们只使用了“Freemius Insights’ —Freemius 的功能之一—因为我们对这些数据分析感到好奇。它确实帮助我们了解了当时人们卸载我们插件的常见原因。

    它还通过对客户的快速调查,帮助我们做出更多数据驱动的决策。例如,如果用户打算卸载我们的插件,系统会弹出一个简短的反馈表单,询问他们卸载的原因。这些反馈帮助我们更好地了解了客户的需求。

    在此过程中,我们发现用户卸载是因为他们在激活后不知道下一步该做什么。我们只是添加了一个欢迎界面和教程视频,就降低了卸载率。非常简单。

    抛开分析功能不谈,Freemius 平台的构建让您可以随时使用它来更高效地销售您的 WordPress 产品!

    权衡利弊后,我们在 2017 年 1 月迁移到了 Freemius。原因如下:

    Freemius 允许客户直接在其 WordPress 仪表盘上购买您的产品

    Instead of being redirected to an external website, Freemius allows customers to purchase straight from their WordPress Dashboard. This made huge impact on sales of course! Generally, the fewer things the user has to do to purchase something, the more likely it is that they actually make the purchase.

    使用 EDD 时,对 Sandwich 感兴趣的人必须跳出页面搭建体验,前往外部网站购买许可证密钥。在最终完成购买之前,他们需要经历多次点击——以及经历更多干扰。

    相比之下,借助 Freemius,客户可以在试用 Sandwich 的同时直接在自己的 WordPress 仪表盘中购买——无需跳转到其他网站即可完成购买。

    这项便利使客户的购买流程顺畅和轻松了十倍,从而带来了销量的显著增长。

    开发者也在全力支持您的成功

    使用 Freemius 销售您的产品并非免费。每笔销售,他们都会抽取一小部分您的收入,用于支付和处理费用。这就是他们的商业模式。

    但这里需要注意的重要一点是,他们的商业模式是围绕着您的 WordPress 产品的成功而构建的。

    Vova 和他的团队非常乐于助人。他们向我们分享了关于如何创造更多收入、如何改进插件以及如何利用 Freemius 优势的实用技巧。他们在信息分享上的慷慨促进了 Sandwich 的成长。

    结论:如果您是希望实现变现的 WordPress 产品作者,Freemius 就是理想之选。

    Page Builder Sandwich 旨在通过页面搭建提升直观性和用户体验。Freemius 也做到了这一点:它有效优化了客户和卖家双方的使用体验。

    自 2017 年切换到 Freemius 以来,我们的客户满意度更高、卸载率更低,整体销量也更好。如果您正想对 WordPress 插件或主题进行变现,Freemius 绝对是不二之选。

    它的功能优于竞争对手。它帮助我们做出了更明智的改进决策。他们的团队提供了卓越的支持。如果您是 WordPress 产品作者,我们希望您也能体验到 Freemius 带给我们的积极成效。