TECHBLOG

WordPress > 標準設定

wp_head の調整

Create:

Update:

Category:WordPress標準設定

Series:WordPress初期設定

[ Version.19 ]

概要

wp_head の出力を制御して不要なものを削除、必要なものを追記。

全サイト共通設定により、functions.php に記載せず functions_init.php に記述しinclude。

functions.php
include_once 'xxx/functions_init.php';

以下、functions_init.php

不要タグの除去

// remove
remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'feed_links_extra', 3);
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');
remove_action('wp_head', 'wp_shortlink_wp_head');
remove_action('wp_head', 'rel_canonical');
remove_action('wp_head', 'rest_output_link_wp_head');
remove_action('wp_head', 'wp_oembed_add_discovery_links');
remove_action('wp_head', 'wp_oembed_add_host_js');
remove_action('wp_head', 'wp_resource_hints', 2);

上記の remove_action 第3引数は順序、下記に記載されている数値を含める必要がある。
wp-includes\default-filters.php

先頭タブの追記

add_action('wp_head', function () {
	ob_start(function ($buffer) {
		$buffer = str_replace('<', "\t<", $buffer);
		return $buffer;
	});
}, 0);
add_action('wp_head', function () {
	ob_end_flush();
}, 100);

ブロックエディタCSSの削除

gutenbergは場合により使用しますが、CSSは使用していません。

※ 本ブログはgutenbergで生成されています。

// remove_gutenberg_style
add_action('wp_enqueue_scripts', function () {
	wp_dequeue_style('wp-block-library');
	wp_dequeue_style('wp-block-library-theme');
	wp_dequeue_style('global-styles');
});
remove_filter('render_block', 'wp_render_layout_support_flag', 10);

最後の1行は wp_footer の調整。

canonical

add_action('wp_head', function () {
	// canonical : by template_type
	if (is_home() || is_front_page()) {
		$canonical_url = home_url() . '/';
	} elseif (is_category()) {
		$canonical_url = get_category_link(get_query_var('cat'));
	} elseif (is_post_type_archive()) {
		$canonical_url = home_url() . '/' . get_query_var('post_type') . '/';
	} elseif (is_page() || is_single()) {
		$canonical_url = get_permalink();
	} elseif (is_search()) {
		$canonical_url = home_url() . '?s=' . urlencode(get_search_query());
	} elseif (is_tag()) {
		$canonical_url = home_url() . '/archives/tag/' . urlencode(single_tag_title('', false));
	} elseif (is_404()) {
		$canonical_url = home_url();
	} else {
		$canonical_url = '';
	}
	if ($canonical_url) {
		echo '<link rel="canonical" href="' . $canonical_url . '">' . "\n";
	}
	// prev next
	if (is_home() || is_archive()) {
		$max_page = $wp_query->max_num_pages;
		if ($max_page > 1) {
			if (get_query_var('paged') > 1) {
				echo '<link rel="prev" href="' . previous_posts(false) . '">' . "\n";
			}
			if (get_query_var('paged') < $max_page) {
				echo '<link rel="next" href="' . next_posts($max_page, false) . '">' . "\n";
			}
		}
	}
});

標準のcanonicalは削除してオリジナルを挿入

絵文字機能除去

add_action('init', function () {
	remove_action('wp_head', 'print_emoji_detection_script', 7);
	remove_action('admin_print_scripts', 'print_emoji_detection_script');
	remove_action('wp_print_styles', 'print_emoji_styles');
	remove_action('admin_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');
	remove_filter('wp_robots', 'wp_robots_max_image_preview_large');
});

wp_headの出力

wp_head() で出力する際に整形

$tag = '';
// wp_head
if (function_exists('wp_head')) {
	ob_start(); // echo される内容を変数に格納
	wp_head();
	$wp_head = ob_get_clean();
	$wp_head = preg_replace('/\\t/', '', $wp_head);
	$wp_head = preg_replace('/\\n/', '', $wp_head);
	$wp_head = $wp_head ? "\t" . trim(preg_replace("/(<\/[a-z]+>)/", "$1\n\t", $wp_head), "\t") : '';
	$wp_head = $wp_head ? "\t" . trim(preg_replace("/\/>/", "/>\n\t", $wp_head), "\t") : '';
	$wp_head = preg_match('/(\n|\r\n|\r)$/', $wp_head) || empty($wp_head) ? $wp_head : $wp_head . "\n";
	$tag .= $wp_head ? $wp_head : '';
}
return $tag;
loading