从所有WordPress帖子中删除快捷代码

时间:2019-02-25 作者:nshunz

我在一个旧网站上更改了wordpress主题,并删除了所有不必要的插件。

除了早期作者使用的一个短代码出现在每篇帖子上之外,一切都进行得很顺利。

例如

Lorem ipsum dolor sit amet,concetetur adipiscing elit。Aenean eu同侧假关节,内径矢状径。Nam cursus ipsum quis dictum iaculis。

[垫片高度=“10px”]

奎斯克·佩伦茨克·里索斯·里索斯(Quisque pellentesque risus risus),康瓦尔(convallis Concertetur odio malesuada non)。维瓦摩斯·奎斯·奎斯·奎斯·奎斯特·迪亚姆(Vivamus quis consequat diam)。Nullam ac molestie purus。Vivamus id diam molestie,pulvinar urna eu,luctus purus。在直径方向上,坐在拱门上。整数blandit aliquam端口标题。

[垫片高度=“5px”]

在连续的一段时间里,我们的效率是三倍的。

有没有一种方法可以使用phpmyadmin上的数据库删除此项。当我搜索这个词时,它会出现在很多地方,但我知道的不多。

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

我喜欢使用这个工具,Search and Replace for WordPress Databases. 它基本上是为WordPress使用而编写的PHP脚本(但当然可以用于任何数据库)。当放置在WordPress项目中时,它会使用来自的数据自动检测并加载数据库wp-config.php 文件

它使您能够基于regex进行数据库查询,并进行“干运行”——您将看到将要更改的数据的预览,但不会进行真正的更改。此外,它还支持序列化,这意味着,如果要替换的变量位于序列化对象内,则可以安全地替换它,而不会破坏序列化。

安装很简单,只需将文件夹放到WP根目录中,然后在浏览器中导航到主PHP文件。记得在事后将其移除。

我想您也会喜欢它,但请记住在任何实时运行之前备份并仔细检查。

SO网友:Chinmoy Kumar Paul

当您将通过SQL更新内容时,网站可能会被破坏。我给出了一个简单的代码,它将隐藏[spacer height=”5px”] 在前端。

打开功能。php文件,并在文件末尾添加此代码。

add_shortcode( \'spacer\',\'wse2019_remove_spacer\' );
function wse2019_remove_spacer( $atts ) {
    return \'\';
}
它会自动删除(基本上是隐藏)所有现有帖子/页面中的短代码。

SO网友:Tanmay Patel

如果您知道要删除哪个特定的短代码,并且希望将其从数据库中永久删除,只需使用以下命令执行SQL查询即可:

UPDATE wp_post SET post_content = REPLACE(post_content, \'[shortcodename]\', \'\' );
将“shortcodename”替换为要删除的短代码。

Note: This is not a foolproof method because different shortcodes can come with different attributes and value, making it hard to form a catch-all SQL query.

SO网友:Nour Edin Al-Habal

我能想到的最简单的解决方法是定义短代码并输出一个空字符串。将此代码添加到函数。当前主题或自定义插件中的php:

function wpse329827_ignore_spacer( $atts ) {
    return "";
}
add_shortcode( \'spacer\', \'wpse329827_ignore_spacer\' );
如果您想完全删除这个短代码,那么有一些插件可以为您进行搜索和替换查询thisthis.

如果您对服务器具有shell访问权限,则可以使用wp search-replace 使用命令--regex 选项

请注意,在执行任何替换操作之前,应先进行数据库备份。

SO网友:KBU nulleins

通过这个小代码段,您可以删除all shortcodes 来自db:

在wordpress根目录中创建一个新文件,将下面的代码添加到文件中,调用创建的文件一次IMPORTANT:
这将直接从数据库中删除所有短代码-因此,请在执行文件之前进行备份!

<?php
require_once(\'wp-load.php\');

global $wpdb;
$allPosts = $wpdb->get_results("SELECT * FROM `wp_posts`");
foreach($allPosts as $post){
  $content = RemoveShortcodes(\'[\', \']\', $post->post_content);
  $wpdb->update(
    \'wp_posts\',array(\'post_content\' => $content),array( \'ID\' => $post->ID )
  );
}

function RemoveShortcodes($beginning, $end, $string) {
  $beginningPos = strpos($string, $beginning);
  $endPos = strpos($string, $end);
  if ($beginningPos === false || $endPos === false) {return $string;}
  $textToDelete = substr($string, $beginningPos, ($endPos + strlen($end)) - $beginningPos);
  return RemoveShortcodes($beginning, $end, str_replace($textToDelete, \'\', $string));
}
?>

相关推荐

Group posts by custom field

我正在尝试使用显示所有子页面的列表wp_query 到目前为止,我已经创建了一个函数来检索当前页面的所有子页面,但是我需要按照自定义字段将这些页面排序为两个列表。调用自定义字段type 它是一个具有以下值的选择字段:product 和about 我需要根据字段值将页面列表分为两组,但我似乎无法按自定义字段对其进行分组。我需要输出为:Product - Page 1 - Page 2 - Page 3 About - Page 1 - Page 2&