MySql / Wordpress从某些链接剥离文件扩展名

时间:2013-09-20 18:00:06

标签: mysql wordpress

一点背景。我已成功将超过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添加到我的永久链接结构中,但我无法将其应用于自定义帖子类型,仅适用于帖子和页面。此外,这感觉太像一个绑带。不过,我可以说服不然。

提前感谢您对此事的任何帮助。

1 个答案:

答案 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>';