php 标题去重复思想,WordPress网站发布文章时如何防止发布重复标题的文章?

事实上,所有插件后端代码都等同于将代码片段添加到functions.php中,functions.php代码片段可以生成插件,然后插件可以自然地集成到functions.php中。插件主要易于管理,但也增加了静态资源请求的数量。如果您知道如何处理这些请求,就不必使用插件来优化站点。WordPress网站发布文章时如何防止发布重复标题的文章?

e002325c46d93c84da577cf5c465b4c4.png

主要的修改地方是: js 转为 script 标签内容,等于删除一个请求,翻译也被保存,用中文代替。把下面的代码复制并粘贴到你的主题的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

*/

// 发表文章页面,前端抓取标题并使用AJAX发送请求

add_action( 'admin_print_footer_scripts', 'duplicate_titles_enqueue_scripts', 100 );

function duplicate_titles_enqueue_scripts() {

?>

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('

'+response+'

');

});

};

$('#title').change(function() {

var title = $('#title').val();

var id = $('#post_ID').val();

var post_type = $('#post_type').val();

checkTitleAjax(title, id,post_type);

});

});

}

// 接收前端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 "". _( '此标题已存在,请换一个标题!' , '' ) ." ";

} 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 ){

?>

}

}

// 禁用自动保存

add_action( 'wp_print_scripts', 'disable_autosave' ) ;

function disable_autosave(){

wp_deregister_script( 'autosave' ) ;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558522.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无法连接iphone软件更新服务器_苹果发布了iphone、ipad和mac的新软件更新

苹果已经发布了三种操作系统的软件更新:用于iphone和ipod的iOS、ipad的iPadOS和Macs的macOS。这些更新很小,主要集中在bug修复上,而不是添加新功能。这些更新标记为iOS 13.6.1、iPadOS 13.6.1和macOS 10.15.6补充更新。通常,iOS或…

win10升级助手_关闭win10系统更新

为什么要拒绝更新系统呢???1.系统更新占用太多时间2.不合时宜的提醒更新严重影响了工作3.对绝大多数人完全没有必要更新系统微软强奸式的要求更新不合清理。同学们的电脑系统大多数是win10家庭版,可以采用下面方案关闭自动更新&am…

matlab 生成信号文件,生成的代码如何存储内部信号、状态和参数数据

浏览模型示例打开模型示例 rtwdemo_roll。open_system(rtwdemo_roll)该模型包含不连接到根级别 Inport 或 Outport 模块的内部信号。某些信号具有名称,例如 phiCmd 信号。该模型还包含一些维护状态数据的模块。例如,在 BasicRollMode 子系统中&#xff0…

苹果平板怎么卸载软件_怎么很好的卸载流氓软件!

我相信在生活当中,很多人都会在不知情或者不注意的情况下,被迫下载很多自己不想要的软件,而且删除之后总是出现,挥之不去。接下来我将会给大家分享几个下载此类软件的方法:一、通过控制面板卸载点击小图标,…

python 循环语句结果存储_python条件语句和循环语句

一、条件语句Python 条件语句跟其他语言基本一致的,都是通过一条或多条语句的执行结果( True 或者 False )来决定执行的代码块。 Python 程序语言指定任何非 0 和非空(null)值为 True,0 或者 null为 False。…

使用c++查看linux服务器某个进程正在使用的内存_精选20个常用的Linux命令

今天总结几个非常常用的Linux命令,其中有几个在面试中很可能问相关命令的原理,比如后台运行命令。希望对大家有所帮助,最好自己去尝试在Linux操作系统中实践一下。1 查看目录以及权限在windows中,使用dir查看当前目录中文件。在Li…

台式电脑可以连wifi吗_不使用WIFI,手机也可以通过电脑的网络上网

让手机通过电脑上网的方式有很多种,最常见的就是 WIFI 了,而且简单直接。但是有时候台式机没有 WIFI ,或者电脑的 WIFI 设备已经连接到其他的网络了,这时候手机就不能通过电脑的 WIFI 连接到网络。那么还没有有办法连接到网络呢&a…

pgsql 前10条_未来3年,广州83条城中村、285个旧街区将迎来改造

文、图/羊城晚报全媒体记者 赵燕华 通讯员 穗建未来3年,广州83条城中村将实施改造,285个旧街区将迎来改造,推进176个旧厂房改造,将整治1.24亿平方米违建……9月25日,在广州市深化城市更新工作推进高质量发展政策培训暨…

c++能干什么_「CG原画插画教程」学画画到底能干什么?

原标题:「CG原画插画教程」学画画到底能干什么?艺学绘小编收集整理了学画画到底能干什么?学画画到底能干什么?相信很多学画画的朋友们都被问过这个问题,那些对学画画有偏见的人,总觉得我们在“不务正业”。…

怎样设置电脑壁纸_怎样设置电脑的资料定时备份到移动硬盘里

怎样设置电脑的资料定时备份到移动硬盘里 写回答...安装FreeFileSync即可,功能有:自动备份、单向备份、双向备份、更新指定文件夹、增量更新、定时备份等。你安装后,添加一个批处理任务来执行将电脑的资料定时备份到移动硬盘。选:…

appium自动化测试_Appium自动化测试入门教程No.1—— Appium介绍

(1)特点appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用。>>“移动原生应用”是指那些用iOS或者 Android SDK 写的应用(Application简称app)。>>“移动web应用”是指使用移动浏览器访问的应用…

linux 命令行看图片,骚操作:用终端打开图片

导读Linux 上有许多 GUI 图片浏览器。但我尚未听说或使用过任何在终端中显示图片的应用程序。幸运的是,我刚刚发现了一个可用于在终端中显示图像的名叫 FIM 的图像查看器。FIM 引起了我的注意,是因为与大多数 GUI 图片浏览器相比,它非常轻巧。…

linux 登入用户记录,linux记录所有用户登陆及执行过的命令脚本

第一个窗口[roothdss7-4 ~]# echo "historyUSERwhoamiUSER_IPwho -u am i 2>/dev/null| awk {print $NF}|sed -e s/[()]//gif [ "$USER_IP" "" ]; thenUSER_IPhostname ## 获取ip 并且存到变量中fiif [ ! -d /var/log/history ]; thenmkdir /var/…

线程被中断跟被阻塞有什么区别_宠物加盟店跟自营店有什么区别

宠物加盟店跟自营店有什么区别开宠物店是一个很有发展、很有市场前景的项目,特别是在这几年,已经迅猛发展。如果想加入宠物行业,利润、赚钱、前景都不用担心,只要有愿意做成的心,市场大环境不用担心。关于大家提出的宠…

不超过20位的小数正则_意甲身价最贵的20位球星,国米多达7人超过尤文,夺冠成硬任务...

根据《德转网》的最新统计,在本赛季意甲身价排名前20位的球星当中,国际米兰俱乐部拥有多达7人,比起意甲霸主尤文图斯还要多出2人。这7位国米球星分别是卢卡库(意甲球员身价第一,8000万欧元)、马丁内斯(意甲球员身价第四、4000万欧…

mcp证书有什么用_建造师的行情怎么样呢?建造师证书有什么用?

近年来,一二级建造师报名人数的逐年递增。从2004年至今,从当初几万人报考到现在的几百万人报考,这些都说明了大家都意识到了建造师证书的重要性。因为要用到证书的地方太多了,建筑企业升级资质要求建造师证书、企业年检要求建造师…

linux环境变量命名规范,Linux就该这么学 -- 重要的环境变量

变量是计算机系统用于保存可变值的数据类型。在Linux中,变量名一般都是大写,这是一种约定俗成的规范,我们可以直接通过变量名称来提取到对应的变量值。用户执行一条命令,Linux系统一般分为4个步骤第一步:判断用户是否以…

realtek audio console无法连接rpc服务_RPC服务在游戏中的简单运用

作者:二周目赤出处:https://www.cnblogs.com/cr1719/p/13866841.html我们最开始做的游戏框架,多数都是client—>server—>db的模式,但是随着玩家数量的增加,一个server进程就会扛不住,需要多个进程服务于多个玩家。但是给定…

union all会影响性能吗_哪些因素会影响悬臂式掘进机的性能?

悬臂式掘进机性能的好坏是决定快速掘进的关键,已有成果的基础上,对影响悬臂式掘进机性能的主要因素进行了综合分析。下面小编就具体说明一下:1.截割头、截齿的影响因素截齿是掘进机的关键部件,其材料和制造技术对悬臂式掘进机的性…

自制简单的小型Linux,自制小型Linux系统

<div id”content” contentScore”949″>自制小型Linux系统【详细步骤】1&#xff1a;找一个新的SCSI接口的Hard Disk 装载到Linux虚拟机上(/dev/sdb),加电。fdisk /dev/sdb 进行分区&#xff0c;格式化。2&#xff1a;建立2个挂载点,并分别挂载。3&#xff1a;构建MBR引…