<?php
namespace W3TC;

class UserExperience_Emoji_Extension {
	public function run() {
		remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
		remove_action( 'wp_print_styles', 'print_emoji_styles' );
		remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );

		remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
		remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );

		remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
		remove_action( 'admin_print_styles', 'print_emoji_styles' );

		add_filter( 'tiny_mce_plugins', array( $this, 'tiny_mce_plugins' ) );
		add_filter( 'wp_resource_hints',
			array( $this, 'wp_resource_hints' ), 10, 2 );
	}



	public function tiny_mce_plugins( $plugins ) {
		if ( !is_array( $plugins ) ) {
			return array();
		}

		return array_filter( $plugins,
			function( $v ) {
				return $v != 'wpemoji';
			}
		);
	}



	public function wp_resource_hints( $urls, $relation_type ) {
		if ( !is_array( $urls ) || $relation_type != 'dns-prefetch' ) {
			return $urls;
		}

		// remove s.w.org dns-prefetch used by emojis
		return array_filter( $urls,
			function( $v ) {
				return ( substr( $v, 0, 16) != 'https://s.w.org/' );
			}
		);
	}
}



$o = new UserExperience_Emoji_Extension();
$o->run();