目录:网站建设-绪论

wordpress介绍

WordPress是使用PHP语言开发的博客平台支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。

通俗来说,wordpress是使用PHP语言开发,通过MySQL数据库储存信息的后端编辑内容,前端动态生成页面的内容管理系统。它最大的特点是,功能丰富,开放的插件、主题很多。

wordpress页面生成路径

主要路径:index.php -> wp-blog-header.php -> wp-load.php -> wp-config.php -> wp-settings.php -> /wp-includes

其中wp-config.php 和 wp-settings.php更为重要,前者用于声明全局变量,后者用于加载wp-includes中的组件。

对于wp-config.php常用的添加就是define('DISABLE_WP_CRON', true); 用来关闭wp的cron定时处理组件。

wp-settings.php是我们重点要说的:它其中包含大量的require请求(php脚本执行必须包含的文件)

require( ABSPATH . WPINC . '/rest-api/class-wp-rest-server.php' );
require( ABSPATH . WPINC . '/rest-api/class-wp-rest-response.php' );
require( ABSPATH . WPINC . '/rest-api/class-wp-rest-request.php' );
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-controller.php' );
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-posts-controller.php' );
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-attachments-controller.php' );
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-post-types-controller.php' );
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-post-statuses-controller.php' );
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-revisions-controller.php' );
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-taxonomies-controller.php' );
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-terms-controller.php' );
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-users-controller.php' );
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-comments-controller.php' );
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-settings-controller.php' );
require( ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-meta-fields.php' );
require( ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-comment-meta-fields.php' );
require( ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-post-meta-fields.php' );
require( ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-term-meta-fields.php' );
require( ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-user-meta-fields.php' );

这些是rest-api相关的接口调用请求,rest开放式接口一般用于app、第三方应用交互信息,对于我们个人博主是没有用的,反而开放的东西还有安全隐患,所以在这里我们可以注释到它们。减少wp调用的组件。

接下来就是wp中默认钩子filter的调用:

default-filters.php

add_filter( 'the_content_feed',   'wp_staticize_emoji'            ); //emoji相关
add_filter( 'comment_author_rss', 'ent2ncr',                    8 ); //rss相关
add_filter( 'comment_text_rss',   'ent2ncr',                    8 );
add_filter( 'comment_text_rss',   'esc_html'                      );
add_filter( 'comment_text_rss',   'wp_staticize_emoji'            );
add_filter( 'the_author',         'ent2ncr',                    8 ); 
add_filter( 'the_guid',           'esc_url'                       );
add_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );  //emoji相关
add_action( 'xmlrpc_rsd_apis',            'rest_output_rsd' );   //rest相关
add_action( 'wp_head',                    'rest_output_link_wp_head', 10, 0 ); 
add_action( 'template_redirect',          'rest_output_link_header', 11, 0 );
add_action( 'wp_head',             'wp_resource_hints',               2     ); //head部多余的连接
add_action( 'wp_head',             'feed_links',                      2     );
add_action( 'wp_head',             'feed_links_extra',                3     );
add_action( 'wp_head',             'rsd_link'                               );
add_action( 'wp_head',             'wlwmanifest_link'                       );
add_action( 'wp_head',             'adjacent_posts_rel_link_wp_head', 10, 0 );
add_action( 'wp_head',             'locale_stylesheet'                      );
add_action( 'publish_future_post', 'check_and_publish_future_post',   10, 1 );
add_action( 'wp_head',             'noindex',                          1    );
add_action( 'wp_head',             'print_emoji_detection_script',     7    );
add_action( 'wp_head',             'wp_print_head_scripts',            9    );
add_action( 'wp_head',             'wp_generator'                           );
add_action( 'wp_head',             'rel_canonical'                          ); //不准确的真实链接mate标签
add_action( 'wp_head',             'wp_shortlink_wp_head',            10, 0 );
add_action( 'wp_footer',           'wp_print_footer_scripts',         20    );
add_action( 'template_redirect',   'wp_shortlink_header',             11, 0 ); 
add_action( 'wp_print_styles',     'print_emoji_styles'                     );
foreach ( array( 'rss2_head', 'commentsrss2_head', 'rss_head', 'rdf_header', 'atom_head', 'comments_atom_head', 'opml_head', 'app_head' ) as $action ) {
	add_action( $action, 'the_generator' );
}
add_action( 'do_feed_rdf',                'do_feed_rdf',                             10, 1 );
add_action( 'do_feed_rss',                'do_feed_rss',                             10, 1 );
add_action( 'do_feed_atom',               'do_feed_atom',                            10, 1 );
add_action( 'admin_print_scripts',        'print_emoji_detection_script'                   );
add_action( 'admin_print_styles',         'print_emoji_styles'                             );
add_action( 'post_updated',               'wp_save_post_revision',                   10, 1 );
add_action( 'rest_api_init',          'wp_oembed_register_route'              );
add_action( 'wp_head',                'wp_oembed_add_discovery_links'         );
add_action( 'wp_head',                'wp_oembed_add_host_js'                 );
add_action( 'embed_head',             'print_emoji_detection_script'          );
add_filter( 'oembed_dataparse',       'wp_filter_oembed_result',        10, 3 );

这些都是可以移除的,移除后可以有效减少http-header部的标签和html-head的加载项,一般主题自带的functions.php文件都会有相应的remove_action语句,用来移除这些钩子。既然我们可以在源头制止,就不必要再在function中执行语句来耗时了。关于升级覆盖问题,后面再说。

pluggable.php

//这个文件有关于srcset的设置
$url2x = get_avatar_url( $id_or_email, array_merge( $args, array( 'size' => $args['size'] * 2 ) )  //删掉
//将上面一行下方一点的内容改成下面内容
$avatar = sprintf(
		"<img alt='%s' src='%s' class='%s' height='%d' width='%d' %s/>",
		esc_attr( $args['alt'] ),
		esc_url( $url ),
		esc_attr( join( ' ', $class ) ),
		(int) $args['height'],
		(int) $args['width'],
		$args['extra_attr']
	);

srcset是4.4.0加的,在最近版本出现在gravatar头像处的,如<img class="avatar photo" src="https://*.jpg " srcset="https://*.jpg 2x" alt="" width="40" height="40" />

srcset 就是src中图片的2x版,对于国内gravatar头像,多增加一个请求可不是什么有意思的事,并且还占html大小,所以去掉了。

 

对wp的文件简单的沉余功能移除就这么多了

注:wp版本为4.8.1

更改详情见https://github.com/XinRoom/wordpress-revise

更新于:2017-12-16