首页 > 解决方案 > 需要使用 MySQL 从 WordPress 页面中删除带有可变内容的遗留简码

问题描述

我在 WP 站点中有许多页面(帖子),其中包含需要删除的遗留短代码,并且无法使用 WordPress 查找/替换插件完成我需要的操作 - 所以我转向 MySQL 查询。

要删除的短代码都遵循相同的模式:"[nivo... (variable content) .../nivo]

我需要删除整个 nivo 简码,并且只删除 nivo 简码,因为某些页面上存在其他简码。

我发现了一些非常接近我认为我需要的东西,并修改了这个特定应用程序的明显参数,如下所示......

UPDATE `post_content`
REPLACE(txt, SUBSTRING(txt, LOCATE('[nivo', txt), LENGTH(txt) - LOCATE('nivo]', REVERSE(txt)) - LOCATE('nivo]', txt) + 10), '')
WHERE  txt LIKE '%(%)%'

^^^在 SQL 查询窗口中被接受(没有停止符号),但在执行时返回 #1064 错误。

理想情况下,我想首先在特定的帖子 ID 上测试它,以确保它真的捕捉到了所有内容,但我不知道如何将其写入查询中。

我对 MySQL 知之甚少(我是一名设计师),但我已经准备好用于回滚的数据库备份以防万一。

帮助将不胜感激。

标签: mysqlwordpressshortcodefind-replace

解决方案


关键是您要使用允许您使用正则表达式(正则表达式)的插件或工具。我用过这个 PHP 工具,你只需把它放在你的 public_html 中,然后通过网络浏览器访问路径:https ://interconnectit.com/search-and-replace-for-wordpress-databases/

只需在 Php 工具中使用一点正则表达式,或者找到一个允许您使用正则表达式的查找和替换插件。它看起来像这样:

\[nivo.*?/nivo\]

\表示转义字符,因为括号在正则表达式中具有特殊含义。

.表示任何字符

*表示任意数量的字符

?表示 0 或更多

.*?在一起意味着什么或什么

供参考(可能是更好的答案): PHP - Remove Shortcodes and Content in between with Regex Pattern


推荐阅读