WordPress开发中常用代码(必备)

news/2024/5/20 3:31:16/文章来源:https://blog.csdn.net/cnpinpai/article/details/127340894

        很多人在WordPress开发中常用代码,WordPress 相比其它网站程序,最突出的优势:主题模板多,插件多,相关技术文章多,只要你想到的功能,都可以通过插件或者代码实现。现在分享下WordPress常用代码,将代码放入执行文件(例如:functions.php)中就即可,便于大家查阅,不断更新中...

WordPress开发中常用代码(必备)
WordPress开发中常用代码(必备)

 

一、WordPress安全类

1. WordPress禁止自动更新

define("AUTOMATIC_UPDATER_DISABLED", true); // 禁用自动更新 wp-config.php add_filter("pre_site_transient_update_core", "fake_update_callback"); // 关闭核心提示  
add_filter("pre_site_transient_update_plugins", "fake_update_callback"); // 关闭插件提示  
add_filter("pre_site_transient_update_themes", "fake_update_callback"); // 关闭主题提示remove_action("admin_init", "_maybe_update_core");    // 禁止 WordPress 检查更新
remove_action("admin_init", "_maybe_update_plugins"); // 禁止 WordPress 更新插件
remove_action("admin_init", "_maybe_update_themes");  // 禁止 WordPress 更新主题function fake_update_callback(){return null;
}

2. URL防止危险代码

if (strpos($_SERVER["REQUEST_URI"], "eval(") || strpos($_SERVER["REQUEST_URI"], "base64") || strpos($_SERVER["REQUEST_URI"], "/**/")
) {@header("HTTP/1.1 414 Request-URI Too Long");@header("Status: 414 Request-URI Too Long");@header("Connection: Close");@exit;
}

3. 禁止多地同时登录

function pcl_user_has_concurrent_sessions()
{return (is_user_logged_in() && count(wp_get_all_sessions()) > 2);
}add_action("init", function () {// 除了管理员,其他人不允许多地同时登陆。if (!current_user_can("manage_options")) {if (!pcl_user_has_concurrent_sessions()) {return;}$newest = max(wp_list_pluck(wp_get_all_sessions(), "login"));$session = pcl_get_current_session();if ($session["login"] === $newest) {wp_destroy_other_sessions();} else {wp_destroy_current_session();}}
});

4. 禁用WordPress致命错误(WSOD)处理

define( "WP_DISABLE_FATAL_ERROR_HANDLER", true ); // wp-config.php
add_filter( "wp_fatal_error_handler_enabled", "__return_false" ); // functions.php

二、WordPress功能类

1. 允许上传其它的文件类型

add_filter("upload_mimes", function ($mimes) use ($string) {$arr = explode(",", $string);foreach ($arr as $k) {$kv = explode("=", trim($k));if (count($kv) == 2) $mimes[trim($kv[0])] = trim($kv[1]);}return $mimes;
}, 99);

2. 禁用xmlrpc

add_filter("xmlrpc_enabled", "__return_false");
add_filter("xmlrpc_methods", function ($methods) {unset($methods["pingback.ping"]);return $methods;
});

3. 禁用Feed

function wpjam_feed_disabled()
{wp_die("Feed已经关闭, 请访问网站<a href="" . get_bloginfo("url") . "">首页</a>!");
}add_action("do_feed", "wpjam_feed_disabled", 1);
add_action("do_feed_rdf", "wpjam_feed_disabled", 1);
add_action("do_feed_rss", "wpjam_feed_disabled", 1);
add_action("do_feed_rss2", "wpjam_feed_disabled", 1);
add_action("do_feed_atom", "wpjam_feed_disabled", 1);

4. 禁用Rest API

add_filter("json_enabled", "__return_false");
add_filter("json_jsonp_enabled", "__return_false");
add_filter("rest_enabled", "__return_false");
add_filter("rest_jsonp_enabled", "__return_false");
remove_action("init", "rest_api_init");
remove_action("rest_api_init", "rest_api_default_filters", 10);
remove_action("parse_request", "rest_api_loaded");
remove_action("wp_head", "rest_output_link_wp_head", 10);
remove_action("template_redirect", "rest_output_link_header", 11);
remove_action("auth_cookie_malformed", "rest_cookie_collect_status");
remove_action("auth_cookie_expired", "rest_cookie_collect_status");
remove_action("auth_cookie_bad_username", "rest_cookie_collect_status");
remove_action("auth_cookie_bad_hash", "rest_cookie_collect_status");
remove_action("auth_cookie_valid", "rest_cookie_collect_status");add_filter("rest_authentication_errors", function () {return new WP_Error("rest_disabled", __("The REST API on this site has been disabled."), ["status" => rest_authorization_required_code()]);
});

5. 账号注销后重定向

//账号登出后,重定向到登录页面
function redirect_custom_login_page() {wp_redirect(site_url() . "/sign-in");exit();
}
add_action("wp_logout", "redirect_custom_login_page");

三、WordPress优化加速类

1. Wordpress头像使用v2ex CDN加速

// 替换Gravatar为v2ex CDN 头像源
function mytheme_get_avatar( $avatar ) {$avatar = preg_replace("/https:\/\/(secure|\d).gravatar.com\/avatar\//","https://cdn.v2ex.com/gravatar/",$avatar);return $avatar;
}
add_filter("get_avatar", "mytheme_get_avatar");

2. 移除wp_head不常用代码

remove_action("wp_head", "wp_generator");
foreach (["rss2_head", "commentsrss2_head", "rss_head", "rdf_header", "atom_head", "comments_atom_head", "opml_head", "app_head"] as $action) {remove_action($action, "the_generator");  //删除 head 中的 WP 版本号
}
remove_action("wp_head", "rsd_link");                        //删除 head 中的 RSD LINK
remove_action("wp_head", "wlwmanifest_link");                //删除 head 中的 Windows Live Writer 的适配器?remove_action("wp_head", "feed_links_extra", 3);            //删除 head 中的 Feed 相关的linkremove_action("wp_head", "index_rel_link");                //删除 head 中首页,上级,开始,相连的日志链接
remove_action("wp_head", "parent_post_rel_link", 10);
remove_action("wp_head", "start_post_rel_link", 10);
remove_action("wp_head", "adjacent_posts_rel_link_wp_head", 10);remove_action("wp_head", "wp_shortlink_wp_head", 10, 0);    //删除 head 中的 shortlink
remove_action("wp_head", "rest_output_link_wp_head", 10);    // 删除头部输出 WP RSET API 地址remove_action("template_redirect", "wp_shortlink_header", 11);        //禁止短链接 Header 标签。
remove_action("template_redirect", "rest_output_link_header", 11);    // 禁止输出 Header Link 标签。

四、WordPress美化类

1. 隐藏后台菜单

$list = ["upload.php"]; // 隐藏媒体库
add_action("admin_menu", function () use ($list) {foreach ($list as $v) {remove_menu_page($v);}global $menu;foreach ($menu as $v) {if ($v[4] == "wp-menu-separator") {unset($menu[4]);}}
});

2. 设置后台右下角文本

add_filter("admin_footer_text", function () {return "创建者XXX";
});

3. 移除Wordpress默认登录页logo

add_filter("login_title", function ($a) {return str_replace("WordPress", home_url(), $a);
});
add_action("login_head", function () {echo "<style type="text/css">#login {width: 392px;}#login h1 a {display: none !important;}#backtoblog,#nav {display: none}.login {background: #21607d;}input[type=text],input[type=password] {border-color: #c3e3ff;}.login form .input, .login input[type=password], .login input[type=text] {border-radius: 0;}</style>";
});

4. 屏蔽后台隐私

remove_action("user_request_action_confirmed", "_wp_privacy_account_request_confirmed");
remove_action("user_request_action_confirmed", "_wp_privacy_send_request_confirmation_notification", 12); // After request marked as completed.
remove_action("wp_privacy_personal_data_exporters", "wp_register_comment_personal_data_exporter");
remove_action("wp_privacy_personal_data_exporters", "wp_register_media_personal_data_exporter");
remove_action("wp_privacy_personal_data_exporters", "wp_register_user_personal_data_exporter", 1);
remove_action("wp_privacy_personal_data_erasers", "wp_register_comment_personal_data_eraser");
remove_action("init", "wp_schedule_delete_old_privacy_export_files");
remove_action("wp_privacy_delete_old_export_files", "wp_privacy_delete_old_export_files");add_filter("schedule_event", function ($event) {if ($event && in_array($event->hook, ["wp_privacy_delete_old_export_files"])) {return false;}return $event;
});

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

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

相关文章

组合关系比依赖关系耦合性更强

首先说明&#xff0c;在这里我把“关联”、“组合”、“聚合”关系都统一当做“组合”关系来说的&#xff0c;但实际上聚合&#xff08;has-a&#xff09;是关联的一种&#xff0c;组合&#xff08;cntains-a&#xff09;也是关联的一种。如果想要知道三者之间的区别&#xff0…

实验二.常用网络命令

常用网络命令一、实验目的与要求学习常用网络命令的使用方法熟悉主机的基本网络配置 二、预习与准备网络常用命令及基本用法。主机的基本网络配置信息。 三、 实验内容 1.Ping命令 2.ipconfig命令 3.arp命令&#xff08;地址转换协议&#xff09; 4.traceroute命令 5.route命令…

花咲の姫君(異時層ツキハ) / 花咲(异时层妖刀)

目录基本资料面板值&#xff08;无天冥加成&#xff09;天冥奖励战斗宣言&#xff08;VC&#xff09;被动效果Another Sense技能珠子回到人物索引 基本资料 NS(5★)卡池 (Ver 2.13.50)ミヤビノカミの典録 天冥属性武器防具属性耐性异常耐性NS天火枪护腕风30%10%个性枪、东方、…

目标检测SSD学习笔记

目标检测SSD学习笔记 SSD: Single Shot MultiBox Detector Abstract. 我们提出了一种使用单一深度神经网络来检测图像中的对象的方法。我们的方法&#xff0c;命名为SSD&#xff0c;将边界框的输出空间离散化为一组默认框&#xff0c;每个特征地图位置具有不同的纵横比和比例…

BasicSR入门教程

BasicSR入门教程 1.安装环境 由于安装好的其他环境已经有了pytorch&#xff0c;那么新建环境时直接拷贝该环境就好 //复制环境 conda create --name my-basicsr --clone mmediting克隆项目 git clone https://github.com/XPixelGroup/BasicSR.git安装依赖包 cd BasicSR pi…

MyBatis--缓存

MyBatis的缓存 MyBatis的一级缓存 一级缓存是SqlSession级别的&#xff0c;通过 同一个SqlSession 查询的数据会被缓存&#xff0c;下次查询相同的数据&#xff0c;就会从缓存中直接获取&#xff0c;不会从数据库重新访问 import com.bijing.mybatis.mapper.CacheMapper; im…

二手商品交易网站

摘 要 本论文主要论述了如何使用JAVA语言开发一个二手商品交易网站&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述二手商品交易网站的当前背景以及系统开发的目…

大话西游服务端开服架设服务器搭建教程

大话西游服务端开服架设服务器搭建教程 大话西游一款回合制角色扮演手游&#xff0c;游戏内包含人族、仙族、魔族、鬼族四大种族&#xff0c;每个种族各有4个角色可供玩家选择。相信很多玩这款游戏的玩家也有不少想知道自己怎么可以开一个sf&#xff0c;自己当服主&#xff0c…

教学设计题-教学目标

&#xff08;1)知识与技能目标 基础知识与基本技能 了解/理解&#xff08;概念&#xff0c;性质&#xff09; 掌握&#xff08;方法&#xff0c;过程&#xff09; 运用/会&#xff08;----&#xff09;剞劂问题 &#xff08;2&#xff09;过程与方法目标 通过&#xff08;观察…

Linux篇【2】:shell命令初步认识,Linux权限(上)

目录 1、shell命令以及运行原理 2、Linux权限的概念 3、Linux权限管理 3.1、文件访问者的分类(人) 3.2、文件类型和文件权限属性(事物属性) 1、shell命令以及运行原理 Linux严格意义上说的是一个操作系统&#xff0c;我们称之为" 核心(kernel) " &#xff0c;但…

Jenkins配置用户权限

前几篇讲了一下有关Jenkins的一系列的操作&#xff1a; 在linux上搭建jenkins&#xff0c;并进行所需的配置 Jenkins安装插件一直失败&#xff0c;报错SunCertPathBuilderException的解决方案 jenkins配置拉取git远程仓库的代码并进行自动化构建部署 怎么修改Jenkins的默认…

力扣周赛314-矩阵中和能被 K 整除的路径(动态规划)

解题思路&#xff1a;方案数问题动态规划问题。由于只能往下或右走&#xff0c;递归思考&#xff0c;每一点a[i][j]的方案数必由其上方a[i-1][j]或左侧a[i][j-1]得到。问题关键点在于统计的是能被K整除的路径数目&#xff0c;看一下示例1&#xff0c;如果走到&#xff08;3,3&a…

Kafka由浅入深(二)—— 生产者工作原理

1、生产者的流程架构 生产者主体逻辑整个生产者客户端由两个线程协调运行&#xff0c;这两个线程分别为主线程和Sender 线程&#xff08;发送线程&#xff09;。 1.1 主线程&#xff1a; 在主线程中由KafkaProducer 创建消息&#xff0c;然后通过可能的拦截器、序列化器和分区…

带你吃透Servlet核心编程下篇(完整图文教程)

本文被 系统学习JavaWeb 收录点击订阅专栏 文章目录1 Http协议1.1 什么是 HTTP 协议1.2 GET请求与POST请求1.3 响应的HTTP协议格式1.4 MIME数据类型2 HttpServletRequest类2.1 HttpServletRequest说明及常用方法2.2 HttpServletRequest类演示2.3 获取请求表单中的参数值&#x…

车车基础知识扫盲

排量 排量是指发动机气缸工作容积之和。所谓工作容积就是活塞在一个冲程内经过的区域的体积。气缸的总容积减去活塞的工作容积&#xff0c;剩下的就是压缩容积&#xff0c;压缩容积是用来燃烧的。 排量的单位是升(L)&#xff0c;常见的排量的标识有三种&#xff0c;T&#xff…

SpringMvc模块

SpingMVC 模块 简介 Spring MVC是一种基于MVC架构模式的轻量级Web框架。 SpringMVC处理过程 Spring MVC的处理过程&#xff1a; DispatcherServlet 接收用户的请求找到用于处理request的 handler 和Interceptors&#xff0c;构造成 HandlerExecutionChain执行链找到 handle…

宏任务与微任务

原文:做一些动图,学习一下EventLoop (https://juejin.cn/post/6969028296893792286)一、任务队列JavaScript 是单线程执行的语言, 在同一时间只能干一件事情。如果前面的任务很耗时后面的任务就会一直等待,为了解决这个问题,js中出现了同步任务和异步任务 1.1 同步任务在主…

Linux服务器部署Mysql5.7全过程记录

1、先下载安装包文件 mysql-5.7.27-linux-glibc2.12-x86_64.tar Mysql5.7.27 Linux安装包 链接&#xff1a;https://pan.baidu.com/s/1p4KmDp5O2bGJLXUHOHMQFQ 提取码&#xff1a;4692 2、解压 cd /usr/local 切换到安装包所在目录 tar -zxvf mysql-5.7.30-l…

【数据获取】可以公开获取到的百度迁徙数据

百度迁徙数据是一种较为常用的互联网数据&#xff0c;在之前的文章里小编已经讲了百度迁徙数据是什么、怎么获取、该如何处理、怎么用它做和弦图这些内容。但是其中数据的获取部分一直没有详细讲解&#xff0c;那么该如何获取它呢&#xff1f; 今天&#xff0c;就告诉大家一个…

教学设计题-教学过程

空间中直线与平面之间的位置关系 生活中的三种位置关系的实例 直线在平面内&#xff1a;开门关门时&#xff0c;门轴所在的直线在门所在平面内 直线与平面相交&#xff1a;操场上&#xff0c;升旗的旗杆所在直线与地面所在平面相交 直线与平面平行&#xff1a;黑板的一条边所在…