SublimeText常用插件

Sublime添加Eclipse快捷键汇总

Preferences -> Key bindings – User

*注意:是 Key bindings – User

如果部分失效请检查是否与其它软件快捷键冲突,如ctrl+shift+f和输入法快捷键!

[
{ “keys”: [“shift+enter”], “command”: “run_macro_file”, “args”: {“file”: “Packages/Default/Add Line.sublime-macro”} },
{ “keys”: [“alt+/”], “command”: “auto_complete” },//自动提示
{ “keys”: [“alt+up”], “command”: “swap_line_up” },//整行上移
{ “keys”: [“alt+down”], “command”: “swap_line_down” },//整行下移
{ “keys”: [“alt+left”], “command”: “jump_back” },//跳转到上一个编辑处
{ “keys”: [“alt+right”], “command”: “jump_forward” },
{ “keys”: [“ctrl+alt+j”], “command”: “join_lines” },
{ “keys”: [“ctrl+d”], “command”: “run_macro_file”, “args”: {“file”: “Packages/Default/Delete Line.sublime-macro”} },//整行删除
{ “keys”: [“ctrl+h”], “command”: “show_panel”, “args”: {“panel”: //搜索全文
“find_in_files”} },
{ “keys”: [“ctrl+l”], “command”: “show_overlay”, “args”: {“overlay”: “goto”, “text”: “:”} },
{ “keys”: [“ctrl+o”], “command”: “show_overlay”, “args”: {“overlay”: //跳转到当前的某个方法
“goto”, “text”: “@”} },
{ “keys”: [“ctrl+up”], “command”: “goto_definition” },//跳转到定义,比如在某个函数上按此键,则跳转到它的定义。
{ “keys”: [“ctrl+down”], “command”: “find_under_prev” },//选中光标所在的变量或者函数,非常有用
{ “keys”: [“ctrl+alt+down”], “command”: “duplicate_line” },//向下复制整行
{“keys”: [“ctrl+shift+f”], “command”: “reindent” , “args”:{“single_line”: //格式化代码,当然也可以利用html+css+js prettify插件来格式化
false}},
{ “keys”: [“ctrl+shift+r”], “command”: “show_overlay”, “args”: {“overlay”: “goto”, “show_files”: true} },
{ “keys”: [“ctrl+shift+s”], “command”: “save_all” },
{ “keys”: [“ctrl+shift+f4”], “command”: “close_all” },
{ “keys”: [“ctrl+shift+y”], “command”: “lower_case” },
{ “keys”: [“ctrl+shift+x”], “command”: “upper_case” }
]

安装Sublime Packages Control

Sublime3

import urllib.request,os,hashlib; h = ‘6f4c264a24d933ce70df5dedcf1dcaee’ + ‘ebe013ee18cced0ef93d5f746d80ef60’; pf = ‘Package Control.sublime-package’; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( ‘http://packagecontrol.io/’ + pf.replace(‘ ‘, ‘%20’)).read(); dh = hashlib.sha256(by).hexdigest(); print(‘Error validating download (got %s instead of %s), please try manual install’ % (dh, h)) if dh != h else open(os.path.join( ipp, pf), ‘wb’ ).write(by)

Sublime2

import urllib2,os,hashlib; h = ‘6f4c264a24d933ce70df5dedcf1dcaee’ + ‘ebe013ee18cced0ef93d5f746d80ef60’; pf = ‘Package Control.sublime-package’; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp) else None; urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler()) ); by = urllib2.urlopen( ‘http://packagecontrol.io/’ + pf.replace(‘ ‘, ‘%20’)).read(); dh = hashlib.sha256(by).hexdigest(); open( os.path.join( ipp, pf), ‘wb’ ).write(by) if dh == h else None; print(‘Error validating download (got %s instead of %s), please try manual install’ % (dh, h) if dh != h else ‘Please restart Sublime Text to finish installation’)

安装SublimeLinter

打开 SublimeLinter 的配置文件,Preferences->Package Settings->SublimeLinter->Settings – User,进行如下配置

1. 运行模式

“sublimelinter”“save-only”,

SublimeLinter 的运行模式,总共有四种,含义分别如下:
true – 在用户输入时在后台进行即时校验;
false – 只有在初始化的时候才进行校验;
“load-save” – 当文件加载和保存的时候进行校验;
“save-only” – 当文件被保存的时候进行校验;
推荐设置为 “save-only”,这样只在编写完代码,保存的时候才校验,Sublime Text 运行会更加流畅。

校验引擎
“sublimelinter_executable_map”:
{
“php”“C:\\xampp\\php\\php.exe”  // windows下要使用\\
}

完整配置:

{
“user”: {
“debug”: false,
“delay”: 0.25,
“error_color”: “D02000”,
“gutter_theme”: “Packages/SublimeLinter/gutter-themes/Default/Default.gutter-theme”,
“gutter_theme_excludes”: [],
“lint_mode”: “background”,
“linters”: {
“php”: {
“@disable”: false,
“args”: [],
“excludes”: []
},
“phpcs”: {
“@disable”: false,
“args”: [],
“excludes”: [],
“standard”: “PSR2”
}
},
“mark_style”: “outline”,
“no_column_highlights_line”: false,
“passive_warnings”: false,
“paths”: {
“linux”: [],
“osx”: [],
“windows”: [
“D:\\phpStudy\\php\\php-5.6.27-nts”
]
},
“python_paths”: {
“linux”: [],
“osx”: [],
“windows”: []
},
“rc_search_limit”: 3,
“shell_timeout”: 10,
“show_errors_on_save”: false,
“show_marks_in_minimap”: true,
“sublimelinter”: “true”,
“sublimelinter_executable_map”: {
“php”: “D:\\phpStudy\\php\\php-5.6.27-nts\\php.exe”
},
“syntax_map”: {
“html (django)”: “html”,
“html (rails)”: “html”,
“html 5”: “html”,
“javascript (babel)”: “javascript”,
“magicpython”: “python”,
“php”: “html”,
“python django”: “python”,
“pythonimproved”: “python”
},
“tooltip_fontsize”: “1rem”,
“tooltip_theme”: “Packages/SublimeLinter/tooltip-themes/Default/Default.tooltip-theme”,
“tooltip_theme_excludes”: [],
“tooltips”: false,
“warning_color”: “DDB700”,
“wrap_find”: true
}
}

保存后你就能看到它在工作了。

安装ctags

打开菜单在Preferences菜单中打开Package settings->ctags->settings-user和settings-default

把default中的配置全部复制到user中,然后改一下command配置项,为ctags的可执行文件路径

喜欢用快捷键操作,控制函数的跳转:快捷键配置:

[
{
“command”: “navigate_to_definition”,
“keys”: [“ctrl+t”]
},
{
“command”: “jump_back”,
“keys”: [“alt+,”]
},
]

安装其他插件

1、ConvertToUTF8  支持UTF-8编码的插件

2、Bracket Highlighter  用于匹配括号,引号和html标签。对于很长的代码很有用。安装好之后,不需要设置插件会自动生效

3、DocBlockr  DocBlockr可以自动生成PHPDoc风格的注释。它支持的语言有Javascript, PHP, ActionScript, CoffeeScript, Java, Objective C, C, C++

4、Emmet(Zen Coding)  快速生成HTML代码段的插件,强大到无与伦比,不知道的请自行google

5、SideBar Enhancements  这个插件改进了侧边栏,增加了许多功能

6、Themr  主题管理,切换主题的时候,不用自己修改配置文件了,用这个可以方便的切换主题

7、SublimeTmpl,新建文件可选类型。编辑模版在:SublimeTmpl\templates”文件夹修改

8、phpcs    php语法提示

9、alignment      自动对齐

10、IMESupport       输入法跟踪问题

11、Git      版本控制(GitSavvy、SublimeGit同类竞品)

12、GitGutter    实时显示当前工作区的文件修改

13、Sublimerge    各种比较,套用官方的话和图如下

14、Compare Side-By-Side     Sublime版本的Beyond Compare

15、PlainTasks      todo列表

 

运行PHP文件

一、将PHP安装目录放如环境变量PATH

二、添加PHP的build system

1)进入如下菜单:

2)弹出内容如下:

{
    "cmd": ["make"]
}

修改为:

{ 
    "cmd": ["php", "$file"],
    "file_regex": "php$", 
    "selector": "source.php" }

3)保存在默认的目录下即可,注意修改文件名为 php.sublime-build 。

执行快捷键为Ctrl+B。

 

 

jquery重写$.ajax

(function($){
//首先备份下jquery的ajax方法
var_ajax=$.ajax;

//重写jquery的ajax方法
$.ajax=function(opt){
//备份opt中error和success方法
var fn = {
error:function(XMLHttpRequest, textStatus, errorThrown){},
success:function(data, textStatus){}
}
if(opt.error){
fn.error=opt.error;
}
if(opt.success){
fn.success=opt.success;
}

//扩展增强处理
var_opt = $.extend(opt,{
error:function(XMLHttpRequest, textStatus, errorThrown){
//错误方法增强处理
fn.error(XMLHttpRequest, textStatus, errorThrown);
},
success:function(data, textStatus){
//成功回调方法增强处理
fn.success(data, textStatus);
},
beforeSend:function(XHR){
//提交前回调方法
$(‘body’).append(“<div id=’ajaxInfo’ style=”>正在加载,请稍后…</div>”);
},
complete:function(XHR, TS){
//请求完成后回调函数 (请求成功或失败之后均调用)。
$(“#ajaxInfo”).remove();;
}
});
return _ajax(_opt);
};
})(jQuery);

Yaf框架cli模式运行

为了更好的与web区分(配置文件,argc、argv判断等等).重新创建一个入口文件是比较好的做法。

$app = new YafApplication(APP_PATH . "/conf/application.ini");
$app->getDispatcher()->dispatch(new YafRequestSimple());

这样入口文件就完成了。接下来,你需要学会yaf命令行的调用方法。来一个示例:

php cli.php request_uri="/daemon/start"

Yaf_Request_Simple的构造函数可以不接受任何参数, 在这种情况下, Yaf_Request_Simple会在命令行参数中, 寻找一个字符串参数, 如果找到, 则会把请求的request_uri置为这个字符串。
request_uri=”/daemon/start” 中的路径便是Controller的路由路径。在例子里指向/Controller/Daemon.php 中的 startAction()。

还有一种方法,通过Yaf_Application::execute(..)去实现。先看一下这个函数的定义:

public void Yaf_Application::execute ( callable $entry , string $... )
This method is typically used to run Yaf_Application in a crontab work. Make the crontab work can also use the autoloader and Bootstrap mechanism.

第一参数需要定义一个回调函数,也可以是一个类中的某个函数。示例:

$application->execute("main", $argc, $argv);
或
$application->execute(array("Class","Method"), $argc, $argv);

后面的参数为一个可变列表,值为你希望传入的参数。综上所述,我们的另外一种入口文件可以写成:

$app = new YafApplication(APP_PATH . "/conf/application.ini");
$app->execute('callback', $avg1, $avg2 , ...);

如果需要通过bootstrap去初始化。只需要和web一样改为:

$app->bootstrap()->execute('callback', $avg1, $avg2 , ...);

最优美的解决办法

// parse cli
if ($request->isCli ()) {
    global $argc, $argv;
    if ($argc > 1) {
        $module = '';
        $uri = $argv [1];
        if (preg_match ( '/^[^?]*%/i', $uri )) {
            list ( $module, $uri ) = explode ( '%', $uri, 2 );
        }
        $module = strtolower ( $module );
        $modules = Yaf_Application::app ()->getModules ();
        if (in_array ( ucfirst ( $module ), $modules )) {
            $request->setModuleName ( $module );
        }
        if (false === strpos ( $uri, '?' )) {
            $args = array ();
        } else {
            list ( $uri, $args ) = explode ( '?', $uri, 2 );
            parse_str ( $args, $args );
        }
        foreach ( $args as $k => $v ) {
            $request->setParam ( $k, $v );
        }
        $request->setRequestUri ( $uri );
        if ($request->isRouted () && ! empty ( $uri )) {
            if (false !== strpos ( $uri, '/' )) {
                list ( $controller, $action ) = explode ( '/', $uri );
                $request->setActionName ( $action );
            } else {
                $controller = $uri;
            }
            $request->setControllerName ( ucfirst ( strtolower ( $controller ) ) );
        }
    }
}

如果在插件中实现,routerStartup只需要$request->setRequestUri ( $uri ),如果是dispatchLoopStartup需要单独setControllerName和setActionName。

PHP安全相关函数,过滤非法字符标签,防止sql注入

/***安全相关函数***/
/**
 * 安全过滤类-全局变量过滤
 * 在Controller初始化的时候已经运行过该变量,对全局变量进行处理
 * 使用方法:filter()
 * @return
 */
function filter() {
    if (is_array($_SERVER)) {
        foreach ($_SERVER as $k => $v) {
            if (isset($_SERVER[$k])) {
                $_SERVER[$k] = str_replace(array('<','>','"',"'",'%3C','%3E','%22','%27','%3c','%3e'), '', $v);
            }
        }
    }
    unset($_ENV, $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS, $HTTP_SERVER_VARS, $HTTP_ENV_VARS);
    filter_slashes($_GET);
    filter_slashes($_POST);
    filter_slashes($_COOKIE);
    filter_slashes($_FILES);
    filter_slashes($_REQUEST);
}

/**
 * 安全过滤类-加反斜杠,放置SQL注入
 * 使用方法:filter_slashes(&$value)
 * @param  string $value 需要过滤的值
 * @return string
 */
function filter_slashes(&$value) {
    if (get_magic_quotes_gpc()) return false; //开启魔术变量
    $value = (array) $value;
    foreach ($value as $key => $val) {
        if (is_array($val)) {
            filter_slashes($value[$key]);
        } else {
            $value[$key] = addslashes($val);
        }
    }
}

/**
 * 安全过滤类-通用数据过滤
 * 使用方法:filter_escape($value)
 * @param string $value 需要过滤的变量
 * @return string|array
 */
function filter_escape($value) {
    if (is_array($value)) {
        foreach ($value as $k => $v) {
            $value[$k] = filter_str($v);
        }
    } else {
        $value = filter_str($value);
    }
    return $value;
}

/**
 * 安全过滤类-字符串过滤 过滤特殊有危害字符
 * 使用方法:filter_str($value)
 * @param  string $value 需要过滤的值
 * @return string
 */
function filter_str($value) {
    $value = str_replace(array("\0","%00","\r"), '', $value);
    $value = preg_replace(array('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/','/&(?!(#[0-9]+|[a-z]+);)/is'), array('', '&amp;'), $value);
    $value = str_replace(array("%3C",'<'), '&lt;', $value);
    $value = str_replace(array("%3E",'>'), '&gt;', $value);
    $value = str_replace(array('"',"'","\t",'  '), array('&quot;','&#39;','    ','&nbsp;&nbsp;'), $value);
    return $value;
}

/**
 * 安全过滤类-过滤javascript,css,iframes,object等不安全参数 过滤级别高
 * 使用方法:filter_script($value)
 * @param  string $value 需要过滤的值
 * @return string
 */
function filter_script($value) {
    if (is_array($value)) {
        foreach ($value as $k => $v) {
            $value[$k] = filter_script($v);
        }
        return $value;
    } else {
        $parten = array(
            "/(javascript:)?on(click|load|key|mouse|error|abort|move|unload|change|dblclick|move|reset|resize|submit)/i",
            "/<script(.*?)>(.*?)<\/script>/si",
            "/<iframe(.*?)>(.*?)<\/iframe>/si",
            "/<object.+<\/object>/isU"
        );
        $replace = array("\\2", "", "", "");
        $value = preg_replace($parten, $replace, $value, -1, $count);
        if ($count > 0) {
            $value = filter_script($value);
        }
        return $value;
    }
}

/**
 * 安全过滤类-过滤HTML标签
 * 使用方法:filter_html($value)
 * @param  string $value 需要过滤的值
 * @return string
 */
function filter_html($value) {
    if (function_exists('htmlspecialchars')) return htmlspecialchars($value);
    return str_replace(array("&", '"', "'", "<", ">"), array("&amp;", "&quot;", "&#039;", "&lt;", "&gt;"), $value);
}

/**
 * 安全过滤类-对进入的数据加下划线 防止SQL注入
 * 使用方法:filter_sql($value)
 * @param  string $value 需要过滤的值
 * @return string
 */
function filter_sql($value) {
    $sql = array("select", 'insert', "update", "delete", "\'", "\/\*",
        "\.\.\/", "\.\/", "union", "into", "load_file", "outfile");
    $sql_re = array("","","","","","","","","","","","");
    return str_replace($sql, $sql_re, $value);
}

/**
 * 私有路径安全转化
 * 使用方法:filter_dir($fileName)
 * @param string $fileName
 * @return string
 */
function filter_dir($fileName) {
    $tmpname = strtolower($fileName);
    $temp = array('://',"\0", "..");
    if (str_replace($temp, '', $tmpname) !== $tmpname) {
        return false;
    }
    return $fileName;
}

/**
 * 过滤目录
 * 使用方法:filter_path($path)
 * @param string $path
 * @return array
 */
function filter_path($path) {
    $path = str_replace(array("'",'#','=','`','$','%','&',';'), '', $path);
    return rtrim(preg_replace('/(\/){2,}|(\\\){1,}/', '/', $path), '/');
}

/**
 * 过滤PHP标签
 * 使用方法:filter_phptag($string)
 * @param string $string
 * @return string
 */
function filter_phptag($string) {
    return str_replace(array('<?', '?>'), array('&lt;?', '?&gt;'), $string);
}

/**
 * 安全过滤类-返回函数
 * 使用方法:str_out($value)
 * @param  string $value 需要过滤的值
 * @return string
 */
function str_out($value) {
    $badstr = array("&", '"', "'", "<", ">", "%3C", "%3E");
    $newstr = array("&amp;", "&quot;", "&#039;", "&lt;", "&gt;", "&lt;", "&gt;");
    $value  = str_replace($newstr, $badstr, $value);
    return stripslashes($value); //下划线
}

Yii2 添加通用信息提示页面

首先定义信息提示view,/tip/index.php

<?php
$this->title = ‘提示信息’;
?>
<style>
.contentWrapper{ text-align: center; min-height: 300px; line-height: 30px;}
</style>
<div class=”contentWrapper”>
<div class=”faultTolerant notFund”>
<h4 class=”title”>提示</h4>
<p class=”content”><?=$message?></p>
<p class=”operation”><span class=”countDown”><span id=”sec”></span>秒后</span><a class=”linkHome” href=”<?=$url?>”>立即返回</a></p>
</div>
</div>
<?php $this->beginBlock(‘tipJs’) ?>
var secs = <?=$sec?>; //倒计时的秒数
var URL;
function Load(url) {
URL = url;
for (var i = secs; i >= 0; i–) {
window.setTimeout(‘doUpdate(‘ + i + ‘)’, (secs – i) * 1000);
}
}

function doUpdate(num) {
document.getElementById(“sec”).innerHTML = num ;
if (num == 0) {
window.location = URL;
}
}
$(function () {
Load(‘<?=$url?>’);
})

<?php $this->endBlock();
$this->registerJs($this->blocks[‘tipJs’], \yii\web\View::POS_END);
?>

两种方式实现此功能

第一种:采用Helper方式,如:
namespace common\helpers;

use Yii;

class TipHelper
{
/**
* 信息提示
* @param $message //提示内容
* @param string $url //跳转url,默认跳转至首页
* @param int $sec //多少秒跳转
* @return string
*/
static public function show($message, $url=”, $sec = 3)
{
$url = $url ? $url : Yii::$app->request->hostInfo;
return Yii::$app->controller->renderContent(Yii::$app->controller->renderPartial(‘/tip/index’,[‘message’=>$message, ‘url’ => $url, ‘sec’ => $sec]));
}

}

使用方法:
在控制器中调用
return common\helpers\TipHelper::show(‘提示信息内容’);

第二种:在BaseCotroller中定义通用方法
protected function tipShow($message, $url=”, $sec = 3)
{
return $this->renderContent($this->renderPartial(‘/tip/index’,[‘message’=>$message, ‘url’ => $url, ‘sec’ => $sec]));
}
在控制器中调用
return $this->tipShow(‘提示信息内容’);

 

wordpress优化,修改12处外加两个插件,让你的wordpress飞速奔跑!

  1. WordPress关闭自动更新检测
    在主题目录下的functions.php最后加入以下代码

    add_filter(‘pre_site_transient_update_core’, create_function(‘$a’, “return null;”)); // 关闭核心提示

    add_filter(‘pre_site_transient_update_plugins’, create_function(‘$a’, “return null;”)); // 关闭插件提示

    add_filter(‘pre_site_transient_update_themes’, create_function(‘$a’, “return null;”)); // 关闭主题提示

    remove_action(‘admin_init’, ‘_maybe_update_core’); // 禁止 WordPress 检查更新

    remove_action(‘admin_init’, ‘_maybe_update_plugins’); // 禁止 WordPress 更新插件

    remove_action(‘admin_init’, ‘_maybe_update_themes’); // 禁止 WordPress 更新主题

  2. 关闭自动更新
    在WordPress 根目录下的 wp-config.php 中define(‘WP_DEBUG’, false);行下添加代码

    define( ‘AUTOMATIC_UPDATER_DISABLED’, true );

  3. 关闭自动保存
    在WordPress 根目录下的 wp-config.php 中define(‘WP_DEBUG’, false);行下添加代码

    define(‘AUTOSAVE_INTERVAL’, 36000); // 10小时,设置为false会出现问题

    在主题目录下的functions.php最后加入以下代码

    wp_deregister_script(‘autosave’); //移除移动保存函数

  4. 取消自动修订版
    在WordPress 根目录下的 wp-config.php 中define(‘WP_DEBUG’, false);行下添加代码

    define(‘WP_POST_REVISIONS’,false);

    在主题目录下的functions.php最后加入以下代码

    remove_action(‘post_updated’,’wp_save_post_revision’ );

  5. 去除WORDPRESS自带的 Emoji
    在主题目录下的functions.php最后加入以下代码

    remove_action( ‘admin_print_scripts’ , ‘print_emoji_detection_script’);
    remove_action( ‘admin_print_styles’ , ‘print_emoji_styles’);
    remove_action( ‘wp_head’ , ‘print_emoji_detection_script’, 7);
    remove_action( ‘wp_print_styles’ , ‘print_emoji_styles’);
    remove_filter( ‘the_content_feed’ , ‘wp_staticize_emoji’);
    remove_filter( ‘comment_text_rss’ , ‘wp_staticize_emoji’);
    remove_filter( ‘wp_mail’ , ‘wp_staticize_emoji_for_email’);
    add_filter( ’emoji_svg_url’, create_function( ”, ‘return false;’ ) );//禁用emoji预解析

  6. 去除 XMLRPC, WLW, Generator, Feeds 和 ShortLink
    在主题目录下的functions.php最后加入以下代码

    remove_action(‘wp_head’, ‘rsd_link’); //removes EditURI/RSD (Really Simple Discovery) link.
    remove_action(‘wp_head’, ‘wlwmanifest_link’); //removes wlwmanifest (Windows Live Writer) link.
    remove_action(‘wp_head’, ‘wp_generator’); //removes meta name generator.
    remove_action(‘wp_head’, ‘wp_shortlink_wp_head’); //removes shortlink.
    remove_action( ‘wp_head’, ‘feed_links’, 2 ); //removes feed links.
    remove_action(‘wp_head’, ‘feed_links_extra’, 3 ); //removes comments feed.

  7. 去除和日志相关的 Link
    在主题目录下的functions.php最后加入以下代码

    remove_action(‘wp_head’, ‘parent_post_rel_link’, 10, 0 );//清除前后文信息
    remove_action(‘wp_head’, ‘start_post_rel_link’);
    remove_action(‘wp_head’, ‘index_rel_link’);
    remove_action(‘wp_head’, ‘adjacent_posts_rel_link’);

  8. 去除 Previous 和 Next 文章链接
    在主题目录下的functions.php最后加入以下代码

    remove_action(‘wp_head’, ‘adjacent_posts_rel_link_wp_head’);

  9. 禁用REST API功能代码
    在主题目录下的functions.php最后加入以下代码

    add_filter(‘rest_enabled’, ‘__return_false’);
    add_filter(‘rest_jsonp_enabled’, ‘__return_false’);

  10. 移除wp-json链接的代码
    在主题目录下的functions.php最后加入以下代码

    remove_action( ‘wp_head’, ‘rest_output_link_wp_head’, 10 );
    remove_action( ‘wp_head’, ‘wp_oembed_add_discovery_links’, 10 );

  11. 移除某些WP自带的小工具(根据自身情况调整)
    在主题目录下的functions.php最后加入以下代码

    function coolwp_remove_meta_widget()
    {

    unregister_widget(‘WP_Widget_Pages’);
    unregister_widget(‘WP_Widget_Calendar’);
    //unregister_widget(‘WP_Widget_Archives’);
    unregister_widget(‘WP_Widget_Links’);
    unregister_widget(‘WP_Widget_Meta’);
    //unregister_widget(‘WP_Widget_Search’);
    unregister_widget(‘WP_Widget_Text’);
    //unregister_widget(‘WP_Widget_Categories’);
    //unregister_widget(‘WP_Widget_Recent_Posts’);
    unregister_widget(‘WP_Widget_Recent_Comments’);
    unregister_widget(‘WP_Widget_RSS’);
    unregister_widget(‘WP_Widget_Tag_Cloud’);
    //unregister_widget(‘WP_Nav_Menu_Widget’);
    //register_widget(‘WP_Widget_Meta_Mod’);

    }
    add_action( ‘widgets_init’, ‘coolwp_remove_meta_widget’,11 );

  12. 移除WP为仪表盘(dashboard)页面加载的小工具
    在主题目录下的functions.php最后加入以下代码

    function cwp_remove_dashboard_widgets()
    {

    global $wp_meta_boxes,$wp_widget_factory;
    remove_action(‘wp_head’, array($wp_widget_factory->widgets[‘WP_Widget_Recent_Comments’] ,’recent_comments_style’));
    unset($wp_meta_boxes[‘dashboard’][‘side’][‘core’][‘dashboard_quick_press’]);
    unset($wp_meta_boxes[‘dashboard’][‘normal’][‘core’][‘dashboard_incoming_links’]);
    unset($wp_meta_boxes[‘dashboard’][‘normal’][‘core’][‘dashboard_right_now’]);
    unset($wp_meta_boxes[‘dashboard’][‘normal’][‘core’][‘dashboard_plugins’]);
    unset($wp_meta_boxes[‘dashboard’][‘normal’][‘core’][‘dashboard_recent_drafts’]);
    unset($wp_meta_boxes[‘dashboard’][‘normal’][‘core’][‘dashboard_recent_comments’]);
    unset($wp_meta_boxes[‘dashboard’][‘side’][‘core’][‘dashboard_primary’]);
    unset($wp_meta_boxes[‘dashboard’][‘side’][‘core’][‘dashboard_secondary’]);

    }
    add_action(‘wp_dashboard_setup’, ‘cwp_remove_dashboard_widgets’,11 );

    另外安装WP Super Cache插件和Disable Google Fonts插件