【问题标题】:How to Bulk Update post titles wordpress through mySQL如何通过 mySQL 批量更新帖子标题 wordpress
【发布时间】:2013-02-24 00:52:01
【问题描述】:

我所有的帖子标题前面都有一个静态词。我的帖子标题中有超过 9000 篇已发布的帖子,其中包含两个不同的静态词。我正在尝试从我的所有帖子中删除这个词。

本质上,我正在寻找一种方法来删除那个不变的词。我尝试通过 wordpress 使用导出并以这种方式编辑帖子标题,但文件为 100mb + 并且根本无法打开。

我查看了 SQL/phpmyadmin,但我不太精通 SQL 查询,不想弄乱我的数据库。

“常量”始终是标题的第一个单词。我能做什么 改为让 mysql 检测第一个空格并删除所有内容 在它之前以及包括空间。本质上,删除 第一个字。基本上我有不止一个常数,所以它会是 如果我能在字符串中找到第一个空格然后 删除它和它之前的所有东西。我假设我们会使用 sub_string 什么的。

这是标题结构

这里还有其他的东西

因此,如果有一个搜索查询找到“常量”和一个空格并将其替换为“无”,那么我可以将其完全删除。如果它可以是搜索和替换查询,那就太好了,这样我以后可以使用它。

关于数据库/表/列的信息

表被调用:wp_posts,当它的值为post并且标题在post_title列中时,它需要限制为表post_type的值

任何帮助将不胜感激。

【问题讨论】:

    标签: mysql wordpress phpmyadmin


    【解决方案1】:

    MySQL 并不完全符合您的要求——是的,有一个 REPLACE() 字符串函数,但您不能将其限制为单个替换。因此,您可能会无意中替换其他可能出现在标题字符串中的该常量。

    恕我直言,最简单的方法是找到所有以您的常量开头的标题,然后替换第一个(即在字符串的开头):

    UPDATE wp_posts
    SET post_title = 
    MID( post_title, LENGTH('Constant ')+1 )
    WHERE post_title LIKE 'Constant %'
    AND post_type = 'post';
    

    您需要+1,因为 MySQL 字符串偏移量从 1 开始,而不是 0。

    就个人而言,我总是更喜欢先运行等效的 SELECT,只是为了确定(MyISAM 很多年没有BEGIN WORK):

    SELECT post_title,
    MID( post_title, LENGTH('Constant ')+1 ) AS replacedTitle 
    FROM wp_posts
    WHERE post_title LIKE 'Constant %'
    AND post_type = 'post';
    

    或者,如果您确定始终要删除第一个单词(即直到并包括第一个空格),那么以下语句应该有效:

    UPDATE wp_posts
    SET post_title = 
    MID( post_title, POSITION( ' ' IN post_title )+1 )
    WHERE post_type = 'post';
    

    由于POSITION() 将在没有找到空格的情况下返回零,因此该语句在一般情况下将是无操作(即非破坏性)。

    【讨论】:

    • 我假设我会用 wordpress 等价物替换“帖子”和“标题”?
    • 我将如何将其限制在 post_type 等于 "post" 的地方 SELECT post_title, MID( post_title, LENGTH('Constant ')+1 ) AS 替换Title FROM wp_posts WHERE post_title LIKE 'Constant % ';`
    • “常量”始终是标题的第一个单词。我该怎么做才能让 mysql 检测第一个空格并删除它之前的所有内容以及包括空格。本质上,删除第一个单词。基本上我有不止一个常数,所以如果我能找到字符串中的第一个空格然后删除它以及它之前的所有内容会更好。我假设我们会使用 sub_string 或其他东西。
    • 再一次,我要小心一个包罗万象的 UPDATE 语句;但从语法上讲,您可以使用POSITION() 来实现这一点——我已经相应地更新了上面的答案。
    • 完美解决。再次感谢:)
    【解决方案2】:

    Search RegEx 是一个很棒的插件,可以使用 grep 或纯文本搜索和替换所有帖子和页面内容、帖子标题、帖子元等。不搜索自定义帖子类型。

    在进行任何更改之前备份您的数据库,无论是使用此插件还是直接在数据库中查询。

    文档:http://urbangiraffe.com/plugins/search-regex/

    【讨论】:

    • 这可能是一个很好的解决方案,但是在安装插件并在“帖子标题”字段中搜索一个简单的单词后没有结果。测试了其他几个词也没有任何成功。 :(
    • 查看您的标记并在数据库中使用 phpmyadmin 搜索单词并找出单词的真正位置;在标题或内容中。
    猜你喜欢
    • 1970-01-01
    • 2023-01-20
    • 2022-07-20
    • 1970-01-01
    • 2016-12-15
    • 2022-09-23
    • 1970-01-01
    • 2010-12-16
    • 2017-02-07
    相关资源
    最近更新 更多