Php 用post_title MYSQL中的单词替换post_内容中的[keyword]
我今天有点暴跳如雷,因为我已经尝试了好几个星期让我的网站完全正常运行 我有大约500篇标题为“XXXXX最佳酒店交易”的帖子,我在表中的每个帖子内容行中都有一个模板 模板中有[keyword]之类的词,我想用标题中的“XXX”替换“[keyword]” 这可能吗 例如: “post_title=伦敦最佳酒店交易” post_content=我们在[关键字]中有最优惠的酒店交易。“ 我想用London替换[关键字]。“在post_内容中 我也有一些我想受影响的某些帖子的搜索条件,它们如下:Php 用post_title MYSQL中的单词替换post_内容中的[keyword],php,mysql,sql,wordpress,Php,Mysql,Sql,Wordpress,我今天有点暴跳如雷,因为我已经尝试了好几个星期让我的网站完全正常运行 我有大约500篇标题为“XXXXX最佳酒店交易”的帖子,我在表中的每个帖子内容行中都有一个模板 模板中有[keyword]之类的词,我想用标题中的“XXX”替换“[keyword]” 这可能吗 例如: “post_title=伦敦最佳酒店交易” post_content=我们在[关键字]中有最优惠的酒店交易。“ 我想用London替换[关键字]。“在post_内容中 我也有一些我想受影响的某些帖子的搜索条件,它们如下: SEL
SELECT *
从wp\u帖子
其中post_title
如“全球最佳酒店交易%”
和post_状态
类似“草稿”
有什么建议吗?- 首先,您需要使用“/best hotel deals in(+.+?)$/i”等模式从post_title中提取title关键字,如果title关键字位于行末,则使用$
- 然后,使用php将[keyword]替换为第一步中找到的关键字
至于您的搜索条件问题,我不理解您的问题,请详细说明。您可以在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的众多插件之一,而不是直接在数据库中进行大量操作。方钉、圆孔等等。我最后用了这个:
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'`
像做梦一样工作
谢谢大家 @acgressionexp,我对sql完全是个业余爱好者,所以我不知道如何使用php正则表达式,但是,如果有帮助的话,我在CSV上有一个单独列出所有关键字的列表。真的需要一些帮助,有什么方法可以做到这一点吗?或者有人知道任何插件吗?嗨,jokeeffe,我仅有的关键词是[keyword],我只是有很多次。或者你的意思是,如果在“最佳酒店交易”之后有两个关键词,例如“北伦敦”,它可能会变得混乱?当你提到你在CSV文件中有一个关键词列表时,这让我觉得你在寻找替换多个关键词的方法。上述技术将适用于类似“北伦敦”的情况。我认为您可能会遇到问题的地方是,如果您想在[Location]中进行类似“Best[DealType]in[Location]”这样的替换--编写这样的通用模板机制可能不是您希望在SQL中执行的操作。我使用了上面的查询,我必须更改“[Keyword]”中的大写字母以正确应用它,但它只影响了1个“[关键字]”,我有6个“[关键字]”要在内容中替换。