将post_content中的[keyword]替换为post_title MYSQL中的单词

时间:2013-11-01 23:51:27

标签: php mysql sql wordpress

我今天有点横冲直撞,因为我一直试图让我的网站完全正常工作几周。

我有500个帖子左右标题为“XXXXX中的最佳酒店优惠”,我在表格的每个post_content行中都有一个模板。

模板内部是[关键字]等字词,我想从标题中将“[keyword]”替换为“XXX”。

这可能吗?

所以,例如:

“post_title =伦敦最佳酒店优惠”

post_content =我们在[keyword]“

中提供最优惠的酒店优惠

我想用伦敦替换[关键字]。“在post_content中。

对于我想要受影响的特定帖子,我也有一些搜索条件,它们如下:

SELECT *

FROM wp_postspost_title LIKE'最佳酒店优惠'%' 和post_status LIKE'草稿'

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

  • 首先,您需要使用php regex从post_title中提取title标题,其中的模式类似于“ /最佳酒店优惠(。+?)$ / i ”使用$如果title关键字到达行尾。

  • 然后,您使用php str_replace将[keyword]替换为您在第一步中找到的关键字

至于您的搜索条件问题,我不明白您的问题,请详细说明。

答案 1 :(得分:0)

您可以在SQL中对单个关键字进行更新,如下所示:

update
    wp_posts
set
    post_content = 
        concat(
            substr(post_content, 1, instr(post_content, '[Keyword]') - 1),
            substr(post_title, instr(post_title, 'Best hotel deals in ') + 20),
            substr(post_content, instr(post_content, '[Keyword]') + 9)
        )
where
    post_title like 'best hotel deals in%' and
    post_status = 'draft' and
    post_content like '%\\[keyword\\]%'

但是,请注意,如果您要处理多个关键字,那么匆忙会变得混乱。使用WordPress的内置模板工具或许多可用的WordPress插件之一,而不是直接在数据库中进行大量操作,你会好得多。方形钉,圆孔,以及所有这些。

答案 2 :(得分:0)

我最终使用了这个:

    update wp_posts
set post_content = REPLACE(post_content,'[keyword]',trim(SUBSTR(post_title, 21))) 
where post_title like 'best hotel deals in%' and post_status = 'draft'`

像梦一样工作。

谢谢大家!