<?php /** * Clean up WordPress defaults * * @package Biofriction * @since Biofriction 1.0.0 */ if ( ! function_exists( 'foundationpress_start_cleanup' ) ) : function foundationpress_start_cleanup() { // Launching operation cleanup. add_action( 'init', 'foundationpress_cleanup_head' ); // Remove WP version from RSS. add_filter( 'the_generator', 'foundationpress_remove_rss_version' ); // Remove pesky injected css for recent comments widget. add_filter( 'wp_head', 'foundationpress_remove_wp_widget_recent_comments_style', 1 ); // Clean up comment styles in the head. add_action( 'wp_head', 'foundationpress_remove_recent_comments_style', 1 ); } add_action( 'after_setup_theme', 'foundationpress_start_cleanup' ); endif; /** * Clean up head.+ * ---------------------------------------------------------------------------- */ // https://webdesignviews.com/clean-up-wordpress-header/ // // https://blacksaildivision.com/how-to-clean-up-wordpress-head-tag if ( ! function_exists( 'foundationpress_cleanup_head' ) ) : function foundationpress_cleanup_head() { // EditURI link. remove_action( 'wp_head', 'rsd_link' ); // Category feed links. remove_action( 'wp_head', 'feed_links_extra', 3 ); // Post and comment feed links. remove_action( 'wp_head', 'feed_links', 2 ); // Windows Live Writer. remove_action( 'wp_head', 'wlwmanifest_link' ); // Index link. remove_action( 'wp_head', 'index_rel_link' ); // Previous link. remove_action( 'wp_head', 'parent_post_rel_link', 10 ); // Start link. remove_action( 'wp_head', 'start_post_rel_link', 10 ); // Canonical. remove_action( 'wp_head', 'rel_canonical', 10 ); // Shortlink. remove_action( 'wp_head', 'wp_shortlink_wp_head', 10 ); // Links for adjacent posts. remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10 ); // WP version. remove_action( 'wp_head', 'wp_generator' ); // Emoji detection script. remove_action( 'wp_head', 'print_emoji_detection_script', 7 ); // Emoji styles. remove_action( 'wp_print_styles', 'print_emoji_styles' ); // REST API links remove_action( 'wp_head', 'rest_output_link_wp_head', 10 ); // oEmbed discovery links remove_action( 'wp_head', 'wp_oembed_add_discovery_links', 10 ); // disable link header to every page request remove_action( 'template_redirect', 'rest_output_link_header', 11 , 0 ); // oEmbed remove everything remove_action( 'wp_head', 'wp_oembed_add_host_js' ); remove_action( 'rest_api_init', 'wp_oembed_register_route' ); remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 ); // Remove or setup DNS prefetch links remove_action( 'wp_head', 'wp_resource_hints', 2 ); // Remove Gutenberg default styles add_action( 'wp_print_styles', function (): void { wp_dequeue_style('wp-block-library'); wp_dequeue_style('wp-block-library-theme'); }); // Remove unnecessary attributes from style tags add_filter('style_loader_tag', function (string $tag, string $handle): string { // Remove ID attribute $tag = str_replace("id='${handle}-css'", '', $tag); // Remove type attribute $tag = str_replace(" type='text/css'", '', $tag); // Change ' to " in attributes: $tag = str_replace('\'', '"', $tag); // Remove trailing slash $tag = str_replace(' />', '>', $tag); // Remove double spaces return str_replace(' ', '', $tag); }, 10, 2); } endif; // Remove WP version from RSS. if ( ! function_exists( 'foundationpress_remove_rss_version' ) ) : function foundationpress_remove_rss_version() { return ''; } endif; // Remove injected CSS for recent comments widget. if ( ! function_exists( 'foundationpress_remove_wp_widget_recent_comments_style' ) ) : function foundationpress_remove_wp_widget_recent_comments_style() { if ( has_filter( 'wp_head', 'wp_widget_recent_comments_style' ) ) { remove_filter( 'wp_head', 'wp_widget_recent_comments_style' ); } } endif; // Remove injected CSS from recent comments widget. if ( ! function_exists( 'foundationpress_remove_recent_comments_style' ) ) : function foundationpress_remove_recent_comments_style() { global $wp_widget_factory; if ( isset( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'] ) ) { remove_action( 'wp_head', array( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style' ) ); } } endif; // https://crunchify.com/how-to-clean-up-wordpress-header-section-without-any-plugin/ // Remove query strings from all static resources if ( ! function_exists( 'crunchify_cleanup_query_string' ) ): function crunchify_cleanup_query_string( $src ){ $parts = explode( '?', $src ); return $parts[0]; } add_filter( 'script_loader_src', 'crunchify_cleanup_query_string', 15, 1 ); add_filter( 'style_loader_src', 'crunchify_cleanup_query_string', 15, 1 ); endif; // Remove injected CSS and JS from Contact Forms 7. // https://stackoverflow.com/questions/48923540/remove-contact-form-7-css-and-js-unless-contact-form-7-shortcode-is-used-in-the/48926880#48926880 if ( ! function_exists( 'function biofriction_contactform_css_js' ) ) : function biofriction_contactform_css_js() { // global $post; // if( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, 'contact-form-7') ) { // wp_enqueue_script('contact-form-7'); // wp_enqueue_style('contact-form-7'); // // }else{ // wp_dequeue_script( 'contact-form-7' ); // wp_dequeue_style( 'contact-form-7' ); // } // // // https://dannyvankooten.com/only-load-contact-form-7-scripts-when-needed/ // $load_scripts = false; if( is_singular() ) { $post = get_post(); if( has_shortcode($post->post_content, 'contact-form-7') ) { $load_scripts = true; } } if( ! $load_scripts ) { wp_dequeue_script( 'contact-form-7' ); wp_dequeue_style( 'contact-form-7' ); } } add_action( 'wp_enqueue_scripts', 'biofriction_contactform_css_js'); endif;