从所有帖子中搜索并删除特定的快捷方式代码

时间:2016-04-29 作者:GµårÐïåñ

问题

有没有办法删除特定的短代码,比如[print_me] 从所有在一次拍摄中出现的帖子中。我的意思不是屏蔽它或过滤它,这样它在post_content. 我希望它消失。

迄今为止的尝试

到目前为止,我所做的是使用phpMyAdmin,我对所有post_content 出现在表格中wp_posts 它显示了我正在寻找的所有帖子,但太多了,无法单独处理。我对试图替换为的结果运行了查找/替换更新查询"" (没有)但是,虽然查询成功运行,所以它说,我没有看到短代码消失了,所以我不确定是否遗漏了什么。

以下是我用来查找它们的查询:

SELECT * FROM `wp_posts` WHERE `post_content` LIKE \'%[print_me]%\'
我有111张唱片。但使用相同的工具进行搜索和替换,我得到:

Your SQL query has been executed successfully

使现代化db1357924680.wp_posts 设置post_content = 更换(post_content, \'%[print\\u me]\',\'%%\'),其中post_content 例如“%[打印]%%”COLLATE utf8\\U bin

但当你检查时,它们都还在那里。因此,我希望有人知道一个更好或正确的方法来做到这一点,并愿意分享。如果我在正确的轨道上,那么我将感谢您的帮助,以找出为什么它没有按预期工作。TIA。

解析(感谢@TheDeadMedic)

使用对我原始SQL查询的更正(如下所示,并在原始答案中找到),它工作得完美无缺,我完成了我需要的,谢谢。

更新db1357924680。wp\\u posts SET post\\u content=替换(post\\u content,“[打印我]”,“”),其中post\\u内容类似“%[打印我]%”

历史(tl/rl)我已经使用了一段时间的插件,它可以在每一篇文章和页面上显示一些内容,或者你可以选择只在你觉得适合该内容的时候添加快捷代码。

然而,大约2年后,我放弃了它,转而选择了一个更全面的解决方案,该解决方案还提供了一些我想加入的其他功能。

我已经停用了插件,但现在面临的问题是那些短代码作为常规旧文本打印出来,这是我需要解决的问题。

一些环境/系统信息:PHP/Linux/WP_4.5.1/SQL_5.1.73/PMA_4.1.14.8

2 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

对于永久解决方案,您的SQL查询稍微有点不正确-您需要:

UPDATE db1357924680.wp_posts SET post_content = REPLACE( post_content, \'[print_me]\', \'\' ) WHERE post_content LIKE \'%[print_me]%\' 

MySQL replace example

SO网友:Frits

有一种更简单的方法可以做到这一点:

add_filter( \'the_content\', \'my_post_content_remove_shortcodes\', 0 );

function my_post_content_remove_shortcodes( $content ) {

    /* Create an array of all the shortcode tags. */
    $shortcode_tags = array(
        \'shortcode_1\',
        \'shortcode_2\',
        \'shortcode_3\'
    );

    /* Loop through the shortcodes and remove them. */
    foreach ( $shortcode_tags as $shortcode_tag )
        remove_shortcode( $shortcode_tag );

    /* Return the post content. */
    return $content;
}
您可以将其放入函数文件中。

资料来源:http://justintadlock.com/archives/2013/01/08/disallow-specific-shortcodes-in-post-content

--编辑--

您可以通过函数文件“删除”短代码的功能,而不是搜索MySQL条目来删除所有内容。

下面的代码将过滤您的所有内容,并删除您在标记为的位置指定的特定短代码shortcode_1

正如马克所说:这并不完全是你所要求的,但如果你努力寻找其他东西,它会给你类似的结果。

希望有帮助!

相关推荐

检测Pre_Get_Posts函数中的AJAX调用

在前端,我有一个带有AJAX “加载更多”按钮。存档页的循环按以下顺序排序date 和ASC. 我在pre_get_posts 作用内部pre_get_posts 我使用的函数defined(\'DOING_AJAX\') && DOING_AJAX 检测何时有AJAX调用并应用订单过滤器。此外,如果是自定义post类型归档页面“workshop”,我想添加到条件语句中。不幸的是,它不起作用。这个pre_get_posts 功能:add_action(\'pre_get_posts\',