我正在使用插件从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");
?>
答案 0 :(得分:0)
在Wordpress数据库中查看此免费工具进行搜索/替换: https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
由于数据存储为序列化字符串,因此使用起来比较困难。该实用程序可以在这些字符串中进行搜索,并在不中断序列化的情况下进行替换。
我经常使用它并取得了很好的成功。
答案 1 :(得分:0)
你必须小心保持字符串数组一致。在数据库中进行简单的搜索和替换会导致不可预测的结果。 只需看看&#34;更好的搜索和替换&#34; -Plugin:https://de.wordpress.org/plugins/better-search-replace/