bounty还有3天到期。此问题的答案有资格获得+50声望奖励。Alan希望引起更多关注这个问题。
我在一个项目中,使用WordPress默认的CSV导入/导出工具来管理在线商店的产品。由于它在某些领域(与插件的兼容性)有已知的限制,我不能仅仅依靠该工具来拥有一个只有CSV的产品基础。某些更改也需要直接在WP GUI中完成。
当我想通过添加换行符和段落来改进产品描述以使内容更具可读性时,问题就开始了:当我导入一个正确格式化的CSV时,我可以将它导出为完美的格式,直到我直接通过GUI修改产品中的某些内容。它甚至不一定需要改变描述。更改任何其他字段也会破坏我的下一个CSV导出:换行符(<br>
)和段落(<p>
)无论出于何种原因,都将替换为后跟“\n”的换行符。产品导出不再可用,并迫使我在使用之前使用Notepad++对任何导出进行预格式化,这超出了烦人的范围。
默认的导入-导出工具到目前为止真的那么糟糕吗?还是我错过了一些非常基本的东西来避免这个问题?有什么办法可以方便地管理产品的进出口吗?本项目使用的版本是Wordpress 6.2。
先谢谢你,
艾伦
1条答案
按热度按时间zfycwa2u1#
<br>
和段落<p>
标记,无论出于何种原因,被换行符后跟\n
所取代。产品出口不再可用 *原因是
class-wc-product-csv-exporter.php
中的protected function called "filter_description_field"
。这是woocommerce提供的导致这种行为的函数!
它同时被
description
和short_description
字段调用。p
标签:默认情况下,浏览器用一个空行分隔段落。
br
标签:The
br
HTML element produces a line break in text (carriage-return).因此,如果我将
p
标记和/或br
标记添加到short description
字段,它将是这样的:有些
csv
解析器不能按照你想要的方式处理\n
,而有些可以!例如,这是一个来自Microsoft Excel
的屏幕截图,在本例中,它没有进入新的单元格,并正确显示了数据:但是如果我打开与
Windows Notepad
相同的csv
文件,它将进入新的一行并扰乱数据的格式,这里有一个屏幕截图:幸运的是,Woocommerce为我们提供了一个名为
woocommerce_product_export_row_data
的过滤器钩子,可以让我们自动化这个过程。因此,您不必在导出之前手动操作description
和short_description
字段!我们可以使用
regular expressions
或string manipulation techniques
来修改Woocommerce添加的\n
作为默认行为!1-使用
str_replace
函数和woocommerce_product_export_row_data
过滤器钩子:2-使用
preg_replace
函数和woocommerce_product_export_row_data
过滤器钩子:以下是删除/替换换行符
\n
后的屏幕截图:注:
999
优先级,它允许在woocommerce exporter class
修改了数据之后、生成csv
文件之前运行函数。您可以随意更改优先级编号和/或正则表达式以满足您的需要。filter hook
,数据库中的数据不会改变!所以描述字段在你的woocommerce商店的管理面板上保持不变,这意味着它们仍然是“人类可读的”!这个答案已经过测试,效果很好!上面的片段将转到活动主题的
functions.php
文件。