我们使用WooCommerce和一个名为Product Documents的WooCommerce插件(https://woocommerce.com/products/product-documents/) 将PDF媒体文件与在线商店中的产品关联。
然后,我们的客户端使用名为Enable Media Replace的插件(https://wordpress.org/plugins/enable-media-replace/) 在发布新版本的PDF时交换媒体文件。我们希望所有的产品文档链接也得到更新。
如果我们允许插件重命名新的文件以匹配旧的文件名,那么这很好。但是,如果我们要求插件更改旧链接以匹配新文件名,那么它只在产品内容本身中起作用,而不在产品文档的链接中起作用。事实上,它完全清除了产品文档链接数据。
我们花了一些时间才找出罪魁祸首,但我们终于找到了,我不知道该向何处寻求帮助,也不知道如何在自己身上编写代码。
产品文档插件允许我们将任意数量的文档链接到WooCommerce插件,并将信息与文档(如本文后面的示例)一起存储在元记录中。该插件使用WP标准序列化方法将文档数据序列化为以下内容(单个文档):
{s:5:"label";s:19:"WAW-2322 Spec Sheet";s:13:"file_location";s:75:"https://dc2willoughbyc.wpengine.com/wp-content/uploads/2018/01/WAW-2322.pdf";}
“启用媒体替换”插件,当我们要求它将一个媒体文件替换为另一个媒体文件(使用不同的名称)时,确实会更改文件名(在上面的示例中,从WAW-2322.pdf改为ABCD.pdf就是一个例子)。但是,它不会更新表示后续字符串长度的序列化对象的“s:75”部分。由于文件的长度已更改(减少了4个字符),WP无法再将字符串反序列化为对象,我们的数据是list。
我们的要求是“启用媒体替换”考虑WPMeta字段中的对象序列化,不仅更新文件名,还更新序列化对象中的字符串长度。其他搜索/替换插件(如“更好的搜索和替换”https://wordpress.org/plugins/search-and-replace/) 适当注意这个替换,但“启用媒体替换”的UI对我们的客户来说更好用(而且危险性也小得多!)
我们将非常感谢您对此问题的反馈和帮助。
下面是完整的示例数据。插件将替换文件名,但不会相应地更改文件名的字符串长度。
a:1:{i:0;a:3:{s:4:"name";s:0:"";s:7:"default";b:1;s:9:"documents";a:7:{i:0;a:2:{s:5:"label";s:19:"WAW-2322 Spec Sheet";s:13:"file_location";s:75:"https://dc2willoughbyc.wpengine.com/wp-content/uploads/2018/01/WAW-2322.pdf";}i:1;a:2:{s:5:"label";s:32:"WORD formatted CSI specification";s:13:"file_location";s:99:"https://dc2willoughbyc.wpengine.com/wp-content/uploads/2017/09/224233_Willoughby_Washfountains.docx";}i:2;a:2:{s:5:"label";s:16:"AutoCAD DWG file";s:13:"file_location";s:75:"https://dc2willoughbyc.wpengine.com/wp-content/uploads/2017/09/Aquasurf.dwg";}i:3;a:2:{s:5:"label";s:16:"DXF drawing file";s:13:"file_location";s:83:"https://dc2willoughbyc.wpengine.com/wp-content/uploads/2018/01/DWG_DXF/Aquasurf.dxf";}i:4;a:2:{s:5:"label";s:37:"Install and maintenance documentation";s:13:"file_location";s:86:"https://dc2willoughbyc.wpengine.com/wp-content/uploads/2018/01/WAW-2322-Series-IOM.pdf";}i:5;a:2:{s:5:"label";s:22:"AquaSurf® color chart";s:13:"file_location";s:88:"https://dc2willoughbyc.wpengine.com/wp-content/uploads/2017/05/Aqua-Surf-Color-Table.pdf";}i:6;a:2:{s:5:"label";s:11:"REVIT files";s:13:"file_location";s:114:"https://dc2willoughbyc.wpengine.com/wp-content/uploads/2018/01/AquaWave-Lavatory-2_Station-Willoughby-WAW-2322.rfa";}}}}