用代码实现WordPress防止发表重复标题的文章

其实所有插件后端代码都等同于加入到 functions.php 的代码片段,functions.php 里的代码片段可以做成插件,那么反过来插件自然也可以集成到 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: http://www.wallfa.com
* Reviser URI: http://www.inlojv.com
*/
// 发表文章页面,前端抓取标题并使用AJAX发送请求
add_action( 'admin_print_footer_scripts', 'duplicate_titles_enqueue_scripts', 100 );
function duplicate_titles_enqueue_scripts() {
?>
<script>
jQuery(function($){
function checkTitleAjax(title, id,post_type) {
var data = {
action: 'title_checks',
post_title: title,
post_type: post_type,
post_id: id
};
$.post(ajaxurl, data, function(response) {
$('#message').remove();
$('#poststuff').prepend('<div id=\"message\" class=\"updated below-h2 fade \"><p>'+response+'</p></div>');
});
};
$('#title').change(function() {
var title = $('#title').val();
var id = $('#post_ID').val();
var post_type = $('#post_type').val();
checkTitleAjax(title, id,post_type);
});

});
</script>
<?php
}

// 接收前端ajax参数
add_action('wp_ajax_title_checks', 'duplicate_title_checks_callback');
function duplicate_title_checks_callback(){
global $wpdb;
$title = $_POST['post_title'];
$post_id = $_POST['post_id'];
$titles = "SELECT post_title FROM $wpdb->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 "<span style='color:red'>". _( '此标题已存在,请换一个标题!' , '' ) ." </span>";
} else {
echo '<span style="color:green">'._('恭喜,此标题未与其他文章标题重复!' , '').'</span>';
}
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 ){
?>
<div class="updated">
<p style='color:red' ><?php _e('貌似已经存在相同标题的文章,若您使用了文章别名作为固定链接,则可以通过修改本文的固定链接来使标题不再重复!' , '') ?></p>
</div>
<?php
}
}
// 禁用自动保存
add_action( 'wp_print_scripts', 'disable_autosave' ) ;
function disable_autosave(){
wp_deregister_script( 'autosave' ) ;
}

关于用代码实现WordPress防止发表重复标题的文章的相关内容;如有侵权,请联系老文删除。

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
老文的头像老文
上一篇 2022年11月27日 下午6:51
下一篇 2022年12月18日 下午2:01

相关推荐

  • 宝塔挂载磁盘教程

    本文中的磁盘/dev/sdb为笔者测试服务器上的命名,在您的服务器中可能是/dev/xdb、/dev/vdb、/dev/xvdb等等请根据实际情况进行修改 1、创建挂载目录(www为宝塔默认安装目录) mkdir -p /www 2、确认是否没有分区的磁盘,如下图,没有分区的磁盘是/dev/sdb,在您的服务器中可能是/dev/vdb,请注意按照实际名称修改…

    2023年2月5日 建站知识
    594
  • WordPress怎么自动发布文章

    WordPress具有定期发布文章的功能。在发布界面中,有一个按钮用于立即发布和编辑文章。单击此处可编辑发布文章的时间。 因此,我们可以设置在特定时间发布文章的时间: 为什么我们需要定期发表文章?定期发表文章有哪些优点和缺点?为什么我们需要使用WordPress的定时发帖功能?对于搜索引擎和用户体验来说,在固定时间发布文章是一种非常好的体验。 因为如果我们网…

    2023年1月4日
    159
  • 自动将文章中的链接转为超链接

    最近在做一个论坛系统,使用了一下代码作为正文展示: 代码语言:javascript 复制 <div class=”article-content”> <?php echo $article[‘content’]; ?> </div> 这里用到的样式是“article-content”所以我直接在JS中对这个元素进行处理即可…

    2024年7月31日
    181
  • 推荐好用的WordPress缓存插件

    WordPress程序做的网站,如果没有使用WordPress缓存插件,加上网站数据量大,访客多的话,会造成服务器超载,网站顿卡的现象,老文这里推荐一个好用,而且功能比较齐全的WordPress缓存插件——WP-Optimize插件。 WP-Optimize插件介绍: WP-Optimize插件是一款功能齐全的WordPress缓存插件,可以缓存图片,静态文…

    2021年12月19日
    577
  • 加快WordPress网站的图片加载速度的方法

    图像对于吸引和保持读者的兴趣非常重要。但是,它们也是网络上加载速度最慢的元素之一。加载缓慢可能会导致访问者放弃您的网站,因此解决图片加载慢的问题尤为重要! 如果您想要一个更轻、更快的网站,那么图像优化是一个不错的起点。通过优化,您可以继续以美观、高质量的视觉效果吸引观众的注意力,而不会显着增加页面加载时间。 1.选择正确的文件格式在开始优化图像之前,重要的是…

    2021年8月12日
    382