WEBLOG
WordPress > 標準設定
wp_head の出力を制御して不要なものを削除、必要なものを追記。
全サイト共通設定により、functions.php に記載せず functions_init.php に記述しinclude。
include_once 'xxx/functions_init.php';
以下、functions_init.php
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);
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 の調整。
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() で出力する際に整形
$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;