移除wordpress头部大量冗余信息

最近在使用WordPress过程中查看源代码发现头部加载了大量不必要的多余信息,wp版本号、css、js、meta元素和标签,这样的多余代码多达十几处,我们可以通过屏蔽、禁用这些不必要的元素来优化我们的wp头部。

以下是我收集和使用的移除代码,都有注释可以具体看看,以免删除你想保留的功能。

将代码插入到你主题目录下functions.php文件内即可。

/**
 * 移除头部冗余代码.
 */
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );// 移除emoji表情script和style
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'wp_head', 'rsd_link' );// 移除离线编辑器开放接口
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'feed_links', 2 );// 文章和评论feed
remove_action( 'wp_head', 'feed_links_extra', 3 );// 分类等feed
remove_action( 'wp_head', 'wp_generator' );// 移除WordPress版本信息
remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0);// 移除动态URL
remove_action('template_redirect', 'wp_shortlink_header', 11, 0);
remove_filter('the_content', 'wptexturize');//取消内容转义
remove_filter('the_excerpt', 'wptexturize');//取消摘要转义
remove_filter('comment_text', 'wptexturize');//取消评论转义
add_filter('rest_enabled', '__return_false');// 移除JSON相关
add_filter('rest_jsonp_enabled', '__return_false');
remove_action('wp_head', 'rest_output_link_wp_head', 10);
remove_action('wp_head', 'wp_oembed_add_discovery_links', 10);
remove_action( 'wp_head', 'index_rel_link' );// 移除前后文、第一篇文章、主页meta信息
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
/**
 * 移除WordPress头部加载DNS预获取(dns-prefetch).
 */
function remove_dns_prefetch( $hints, $relation_type ) {
  if ( 'dns-prefetch' === $relation_type ) {
    return array_diff( wp_dependencies_unique_hosts(), $hints );
  }

  return $hints;
}
add_filter( 'wp_resource_hints', 'remove_dns_prefetch', 10, 2 );
/**
 * 移除WordPress加载的JS和CSS链接中的版本号.
 */
function wpdaxue_remove_cssjs_ver($src) {
if (strpos($src, 'ver=')) {
$src = remove_query_arg('ver', $src);
}
return $src;
}
add_filter('style_loader_src', 'wpdaxue_remove_cssjs_ver', 999);
add_filter('script_loader_src', 'wpdaxue_remove_cssjs_ver', 999);
/**
 * 禁用WP自带的jquery.js.
 */
if (!is_admin()) { // 后台不禁止
function my_init_method() {
wp_deregister_script('jquery'); // 取消原有的 jquery 定义

}

add_action('init', 'my_init_method');
}
/**
 * 禁用embeds功能并移除wp-embed.min.js文件.
 */
function disable_embeds_init() {
  /* @var WP $wp */
  global $wp;

  // Remove the embed query var.
  $wp->public_query_vars = array_diff( $wp->public_query_vars, array(
    'embed',
  ) );

  // Remove the REST API endpoint.
  remove_action( 'rest_api_init', 'wp_oembed_register_route' );

  // Turn off
  add_filter( 'embed_oembed_discover', '__return_false' );

  // Don't filter oEmbed results.
  remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );

  // Remove oEmbed discovery links.
  remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );

  // Remove oEmbed-specific JavaScript from the front-end and back-end.
  remove_action( 'wp_head', 'wp_oembed_add_host_js' );
  add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin' );

  // Remove all embeds rewrite rules.
  add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );
}
add_action( 'init', 'disable_embeds_init', 9999 );
/**
 * Removes the 'wpembed' TinyMCE plugin.
 *
 * @since 1.0.0
 *
 * @param array $plugins List of TinyMCE plugins.
 * @return array The modified list.
 */
function disable_embeds_tiny_mce_plugin( $plugins ) {
  return array_diff( $plugins, array( 'wpembed' ) );
}
/**
 * Remove all rewrite rules related to embeds.
 *
 * @since 1.2.0
 *
 * @param array $rules WordPress rewrite rules.
 * @return array Rewrite rules without embeds rules.
 */
function disable_embeds_rewrites( $rules ) {
  foreach ( $rules as $rule => $rewrite ) {
    if ( false !== strpos( $rewrite, 'embed=true' ) ) {
      unset( $rules[ $rule ] );
    }
  }

  return $rules;
}
/**
 * Remove embeds rewrite rules on plugin activation.
 *
 * @since 1.2.0
 */
function disable_embeds_remove_rewrite_rules() {
  add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );
  flush_rewrite_rules();
}
register_activation_hook( __FILE__, 'disable_embeds_remove_rewrite_rules' );

/**
 * Flush rewrite rules on plugin deactivation.
 *
 * @since 1.2.0
 */
function disable_embeds_flush_rewrite_rules() {
  remove_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );
  flush_rewrite_rules();
}
register_deactivation_hook( __FILE__, 'disable_embeds_flush_rewrite_rules' );

为您推荐