返回介绍

WooCommerce 商店页插入 shortcode 问题

发布于 2022-01-02 19:03:58 字数 1046 浏览 822 评论 0 收藏 0

WooCommerce的Shop页面虽然有固定格式,依然可以在编辑器中输入内容,输入shortcode时会强制执行wpautop,导致shortcode输出带上很多p和br标签,其自带shortcode亦无法幸免,使用WC 2.2.4时发现了这个问题。

问题描述

例如在商店页面使用featured_products shortcode,产生的结果如下图所示,箭头所指的位置是强制将换行符转换成p导致的副作用,空的a标签。

extra-p-tags

尽管这不会百分之百导致样式问题,但能避免还是避免之。

原因

woocommerce的店铺页面最开始会输出一段描述性文字,相当于文章的内容。一般输出内容使用the_content()函数,而woocommerce却直接硬编码了wpautop,于是shortcode里只要有换行就会被影响,一般的remove_filter方法无法解决。

wc-wpautp

解决

既然wpautop无法跳过,那只能把shortcode中会让wpautop起作用的因素去掉,即删除换行符。

通常shortcode结尾会返回一段字符串

...
return $output;

在返回前先删除换行符和多余空格,就能避免这个问题

...
return str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $output);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文