【WordPress】スマイリー(顔文字)への変換を停止する方法

WordPressを使っていると、:o という文字が、😮という絵文字に勝手に変換されてしまうことがある。これは、スマイリーという顔文字だが、意図せず変換されてしまうまったく困った機能だ。

これを勝手に変換しないようにする方法。

functions.phpに以下を追加する。

function disable_emojis() {
	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' );
	//add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
	
	remove_filter( 'the_content', 'convert_smilies', 20 );
        remove_filter( 'the_excerpt', 'convert_smilies' );
        remove_filter( 'the_post_thumbnail_caption', 'convert_smilies' );
        remove_filter( 'comment_text', 'convert_smilies', 20 );
        remove_filter( 'widget_text_content', 'convert_smilies', 20 );
}
add_action( 'init', 'disable_emojis' );

前半のwp_headからtiny_mce_pluginsまでは、絵文字を停止するためのもの。検索すると、ここまではよく出てくる。(tiny_mce_pluginsのところは、TinyMCEのプラグインを導入していないとエラーがでたので、コメントアウトしている。)

後半のconvert_smiliesに関するところは、スマイリーの変換を停止する部分。ここのフィルターは、wp_includes/default-filters.phpの中で記述されているが、これを停止する操作を追加している。

これで、スマイリーへの変換が停止され、:o がそのまま表示される。