为了防止重复标题的文章被发布,这里给大家分享一篇关于 WordPress 的教程,这篇教程主要通过编写代码来实现禁止用户发布重复标题的文章。
一、
1、首先,我们需要在 WordPress 的 functions.php 文件中添加以下代码:
function prevent_duplicate_titles( $post_title, $post ) {
global $wpdb;
if ( $post->post_type == 'post' ) { // 检查是否为文章类型
$query = "SELECT COUNT(*) FROM $wpdb->posts WHERE post_title = %s AND post_type = 'post' AND ID != %d";
$count = $wpdb->get_var( $wpdb->prepare( $query, $post_title, $post->ID ) ); // 检查是否存在同名文章
if ( $count > 0 ) {
// 存在同名文章则阻止保存
wp_die( '重复的标题!请重新输入标题。' );
}
}
return $post_title;
}
add_filter( 'wp_insert_post_data', 'prevent_duplicate_titles', 10, 2 );
这段代码将在文章保存时检查数据库中是否已经存在同名的文章,如果存在,则会弹出一个错误提示并阻止文章保存。同时,需要注意的是,这段代码只对文章类型的内容进行检查,如果想要对其他类型的内容进行检查,需要相应地修改代码。
二、
1、将下面代码复制粘贴到你主题的functions.php文件里面
/**
* 发表文章时禁止与已存在的标题相重复
* Modify from Plugin: Duplicate Title Validate
* Description: this plugin help , not allow publish Duplicate Title .
* Author: hasan movahed
* Reviser: INLOJV
* Version: 1.0
* Author URI: wallfa .com
* Reviser URI: inlojv .com
*/
// 发表文章页面,前端抓取标题并使用AJAX发送请求
add_action( 'admin_print_footer_scripts', 'duplicate_titles_enqueue_scripts', 100 );
function duplicate_titles_enqueue_scripts() {
?>
posts WHERE post_status = 'publish' AND post_type = 'post'
AND post_title = '{$title}' AND ID != {$post_id} ";
$results = $wpdb->get_results($titles);
if($results) {
echo "". _( '此标题已存在,请换一个标题!' , '' ) ." ";
} else {
echo ''._('恭喜,此标题未与其他文章标题重复!' , '').'';
}
die();
}
// 检测后端标题并且避免同名文章更新草稿
add_action( 'publish_post','duplicate_titles_wallfa_bc' ) ;
function duplicate_titles_wallfa_bc( $post ){
global $wpdb ;
$title = $_POST['post_title'] ;
$post_id = $post ;
$wtitles = "SELECT post_title FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post'
AND post_title = '{$title}' AND ID != {$post_id} " ;
$wresults = $wpdb->get_results( $wtitles ) ;
if ( $wresults ){
$wpdb->update( $wpdb->posts, array( 'post_status' =>
'draft' ), array( 'ID' => $post ) ) ;
$arr_params = array( 'message' => '10', 'wallfaerror' => '1' ) ;
$location = add_query_arg( $arr_params , get_edit_post_link( $post , 'url' ) ) ;
wp_redirect( $location ) ;
exit ;
}
}
/// 文章提交更新后的提示
add_action( 'admin_notices', 'not_published_error_notice' );
function not_published_error_notice() {
if(isset($_GET['wallfaerror']) == 1 ){
?>