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

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;
});//果你还是用使用第三方客户端来管理 WordPress 文章,那么可以只关闭 XML-RPC 的 pingback 端口
//禁用XML-RPC的pingback接口
add_filter( 'xmlrpc_methods', 'remove_xmlrpc_pingback_ping' );
function remove_xmlrpc_pingback_ping( $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;
});

5.禁用 WordPress 卡片嵌入式内链 Post Embed 功能

在当前主题的 functions.php 文件中添加如下代码来屏蔽 Post Embed 该功能:

remove_action('rest_api_init', 'wp_oembed_register_route');
remove_filter('rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4);remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10 );
remove_filter('oembed_response_data', 'get_oembed_response_data_rich', 10, 4);remove_action('wp_head', 'wp_oembed_add_discovery_links');
remove_action('wp_head', 'wp_oembed_add_host_js');

有一个叫 Disable Embeds 的插件是专门用来禁用文件嵌入功能的,在后台搜索安装启用,实现的效果和上面介绍的代码是一样的。

WordPress开发中常用代码(必备)相关推荐

  1. NC65在日常开发中常用的代码写法

    标题 NC65开发相关代码 版本 1.0.1 作者 walton 说明 收集NC在日常开发中常用的代码写法,示例展示 1.查询 1.1 通过BaseDAO查询结果集并转换 //通过BaseDAO进行查 ...

  2. jsp/html开发中常用的JS代码和页面特效代码

    1.jsp/html开发中常用的JS代码 1.后退 前进 <input type="button" value="后退" onClick="hi ...

  3. WordPress主题制作常用代码集合

    如何你是个wordpress主题设计者,可能会在制作wordpress主题时为了一些寻找合适的wordpress代码焦虑,这里搜集总结wordpress主题开发中常用的代码片段,希望为你工作中带来方便 ...

  4. 项目开发中常用JS表单取值方法

    项目开发中常用JS表单取值方法 一.常用表单基本取值方法(form1为表单名称,TextBox1为控件ID,以文本框为例,html控件与web服务器控件是一样的)         1.form1.Te ...

  5. java开发常用jar包_Java开发中常用jar包整理及使用

    本文整理了我自己在Java开发中常用的jar包以及常用的API记录. 一.common-lang3 简介:一个现在最为常用的jar包,封装了许多常用的工具包 依赖: org.apache.common ...

  6. VS开发中的代码编写小技巧——避免重复代码编写的几种方法

    原文:VS开发中的代码编写小技巧--避免重复代码编写的几种方法 上一篇文章中程序员的幸福生活--有你的日子,每天都是情人节,收到了大家的很多好评.鼓励和祝福,非常感动,真诚的谢谢大家.也希望每个朋友都 ...

  7. php开发中常用函数总结,PHP开发中常用函数总结

    PHP开发中常用函数总结 发布于 2014-10-31 08:34:03 | 48 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Preproc ...

  8. IDEA开发中常用快捷键

    IDEA开发中常用快捷键 Alt + Enter        引入类 Ctrl + O       查看我们继承的类或者接口中的方法,以及我们要实现的方法 Ctrl + Alt + b     查看 ...

  9. wordpress页面里可不可以写php,WordPress开发中如何在html中包含php

    WordPress开发中如何在html中包含php 王超 2021-02-18 主题开发 69 次 欢迎阅读这篇关于如何在HTML中使用PHP的文章!在这里,我们试图在一个特定的.PHP文件的层次上具 ...

最新文章

  1. 大成郡亮相乐居春季房展精装户型16500元
  2. python timer使用-python下timer定时器常用的两种实现方法
  3. kotlin 查找id_Kotlin程序在矩阵中查找偶数和奇数的频率
  4. 【Git】Git解决文件本地更改的合并覆盖错误
  5. 强烈建议大家把 CBCentralManager.h 里面的代理方法全部看一遍(就是翻译一遍,别偷懒)。@file CBCentralManager.h...
  6. MSSQL-Server On Docker
  7. Apache 优化配置10条建议
  8. AI人才供不应求:应届生年薪可达50万 没出校门已被抢光
  9. ERP系统与精益生产
  10. Linux解决Device eth0 does not seem to be present,delaying initialization问题
  11. c语言 虚拟示波器软件下载,虚拟示波器软件(示波器工具)V3.1 官方版
  12. 美团点评 2019校园招聘 后台开发方向职位编程题-2018.09.06
  13. java实现网站统计功能_网站访问量统计功能的实现
  14. 安卓微信分享图标不显示的问题
  15. mysql 黑名单_51ak带你看MYSQL5.7源码4:实现SQL黑名单功能
  16. 华为U8150(IDEOS)手机USB驱动安装
  17. 【公告】博客新皮肤上线啦
  18. Visual C++不小心卸载,很多软件不能用了怎么办
  19. 面向开放词汇的目标检测ECCV2022
  20. 无法连接至服务器用户sa 18456,用户'sa'登录失败(错误18456)解决方案图解

热门文章

  1. 辉煌优配|消费股引领A股盘中V形反转
  2. 关于数学的一些资料整理
  3. idea output中文乱码解决办法
  4. 在互联网时代,我们为什么还要读书
  5. windows2008服务器未响应,Windows Server 2012系统卡死无反应
  6. 区块链会议_重构世界·2018区块链新经济杭州峰会_20181119
  7. 《VR入门系列教程》之16---第一个OculusVR应用
  8. LinuxGUI自动化测试框架搭建(十五)-截图功能screenShort.py封装和调用
  9. Python术语 中英对照表
  10. assetbundle能不能删除_关于AssetBundle的卸载