共计 944 个字符,预计需要花费 3 分钟才能阅读完成。
的功能,你可以编写一个函数,该函数接受两篇文章的 ID 作为参数,并使用上述方法计算它们的相似度。别人不多说,我们只需要把这面的代码放到 function.php 中即可:
// 检测是否有重复文章
function check_duplicate_post($post_id) {
$post = get_post($post_id);
$title = $post->post_title;
$content = $post->post_content;
$args = array(
‘post_type’ => ‘post’, // 确定文章类型
‘post_status’ => ‘publish’, // 仅检查已发布的文章
‘s’ => $title, // 匹配标题
‘posts_per_page’ => -1. // 获取所有匹配文章
);
$query = new WP_Query($args); // 查询并获取符合条件的文章
if ($query->have_posts()) {
while ($query->have_posts()){
$query->the_post();
$post_content = get_post_field(‘post_content’, $query->post->ID);
// 计算相似度
similar_text($content, $post_content, $percent);
if ($percent > 80) {// 如果相似度大于 80. 阻止保存新文章
wp_die(‘ 您将发布的文章与 ID 为 ‘ . $query->post->ID . ‘ 的文章相似度达到 ‘ . $percent . ‘%,请勿发布重复文章。’);
}
}
wp_reset_postdata();
}
}
add_action(‘save_post’, ‘check_duplicate_post’,10.1);
注意事项:
为什么有的网友说填写该代码后,文章还是可以发布出去,这个问题很可能是因为您的文章已经被保存在草稿或预览模式下,但没有正式发布。如果文章处于草稿或预览状态,则代码不会找到匹配的文章,并且不会阻止保存新文章。
因此最好的方法是将文章发布为公开状态而不是草稿或预览模式,如果文章相似直接发布就会马上停止。
同时,如果您使用了缓存插件或服务器缓存,您可能需要清除缓存才能看到修改后产生的效果。