一点背景。我已成功将超过50,000个帖子导入wordpress。很多帖子都有引用其他页面的链接。修复链接可能只是在MySQL中进行简单的搜索和替换,但是,存在的链接引用pagetitle.htm,并且由于它们应该引用的帖子没有.htm扩展名,因此结果为404。
编辑我搞砸了。以下更正。
旧请求:我想将.htm添加到数据库中的所有链接;即将.htm添加到以www.example.com/xxxxxx开头的所有链接(xxx不一致)。 在MySQL中,如何选择具有一致字符串开头的所有链接并附加.htm,但是在结束标记之前?
即
change all <a href="website.com/#####">#####</a> *to* <a href="website.com/#####.htm">#####</a>
更正: 使用mysql,我想在链接以某个域开头时删除所有出现的.htm。
我也尝试将.htm添加到我的永久链接结构中,但我无法将其应用于自定义帖子类型,仅适用于帖子和页面。此外,这感觉太像一个绑带。不过,我可以说服不然。
提前感谢您对此事的任何帮助。
答案 0 :(得分:0)
我不确定这会在所有情况下都有效,但这是一个想法:
已编辑** 这应该可以解决问题。不漂亮,但我认为它应该工作。它会在第二个“标记之前查看所有内容。如果缺少它,则将其替换为.htm。
UPDATE your_table
SET post_content = REPLACE(post_content,
SUBSTRING_INDEX(post_content, '"', 2),
LEFT(SUBSTRING_INDEX(post_content, '"', 2), LENGTH(SUBSTRING_INDEX(post_content, '"', 2)) - 4)
)
WHERE RIGHT(SUBSTRING_INDEX(post_content, '"', 2),4) = '.htm';
ORIGINAL **
UPDATE your_table
SET link_field = REPLACE(link_field, '"></a>', '.htm"></a>')
WHERE RIGHT(link_field, 10) <> '.htm"></a>';