【问题标题】:Replace words in all wordpress posts替换所有 wordpress 帖子中的单词
【发布时间】:2018-05-03 14:01:40
【问题描述】:

我正在使用插件从 wordpress 中的所有帖子中删除链接。 我想升级代码,这样它不仅会删除链接,还会替换选定的单词。 我自动导入内容,有时它包含“坏词”,我想我可以用更适合儿童的东西替换这些坏词。 但是我的php是noob级别的,当我看到这段代码时我真的很困惑。

我认为这应该是一个非常容易解决的问题,因为我应该能够只复制部分代码,并在复制中选择一个目标“坏”字和一个替换“好”字。但是我的技能已经碰壁了。

function remove_links_from_post($post){
    $post_content = stripslashes($post["post_content"]);
    if(!preg_match_all("/(<a.*>)(.*)(<\/a>)/ismU",$post_content,$outbound_links,PREG_SET_ORDER)){
        return $post;
    }

    foreach($outbound_links as $key => $value){
        preg_match("/href\s*=\s*[\'|\"]\s*(.*)\s*[\'|\"]/i",$value[1],$href);
        if((substr($href[1],0,7)!="http://" && substr($href[1],0,8)!="https://") || substr($href[1],0,strlen(get_bloginfo("url")))==get_bloginfo("url")){
            unset($outbound_links[$key]);
        }else{
            $post_content = str_replace($outbound_links[$key][0],$outbound_links[$key][2],$post_content);
        }
    }

    $post["post_content"] = addslashes($post_content);
    return $post;
}
add_filter("wp_insert_post_data", "remove_links_from_post");

?>

【问题讨论】:

  • 你喜欢插件还是只需要代码?
  • 代码就可以了。我不需要插件。
  • 所以你需要一个词过滤器吗?

标签: php wordpress


【解决方案1】:

查看此免费工具以在 Wordpress 数据库中搜索/替换: https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

由于数据存储为序列化字符串,因此使用起来比较麻烦。该实用程序可以在这些字符串中进行搜索并进行替换,而不会破坏序列化。

我经常使用它并取得了很好的成功。

【讨论】:

  • 我不想搜索数据库和替换单词,因为它们需要先在网站上创建,我不希望那样。所以解决方案不起作用
  • 我误解了你的用例。我以为你在做手动替换。
【解决方案2】:

您必须小心保持字符串数组的一致性。数据库中的简单搜索和替换会导致不可预测的结果。 只需看看“更好的搜索和替换”-Plugin:https://de.wordpress.org/plugins/better-search-replace/

【讨论】:

  • 我明白了,我已经试过你说的插件了。问题是我只能在帖子创建后使用它,然后就太晚了。所以解决方案不起作用。
猜你喜欢
  • 1970-01-01
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 1970-01-01
  • 2023-03-18
相关资源
最近更新 更多