てくのーと
533 文字
3 分

WordPressの管理画面で絵文字機能を無効化する方法

2024-05-22
2024-05-28

WordPressでは、header内に絵文字用のscriptタグやcss用のタグがデフォルトで出力されます。このscript内では、特殊文字である絵文字を画像に変換する処理が行われています。
例えばこの星「⭐」が、「⭐」という形で出力されています。
画像になることでユーザーの端末環境に依存しなくなるのはいいことなのですが、必ず使いたいものでもありません。

私の場合、管理画面であるコンテンツを管理するページを追加するプラグインを作っている際に、自動的に変換されてしまい困ったので、絵文字機能を無効化する必要がありました。
この記事では、管理画面で絵文字機能を無効化する方法を紹介します。

管理画面でWordPressの絵文字機能を無効化する方法#

以下のコードをfunctions.phpあるいは、独自プラグインに追加することで、管理画面で絵文字機能を無効化できます。

add_action( 'admin_init', function(){
    remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
    remove_action( 'admin_print_styles', 'print_emoji_styles' );
    remove_action( 'admin_enqueue_scripts', 'wp_enqueue_emoji_styles' ); // WP6.4以降
});

上記ですべての管理画面から非表示にすることができますが、add_menu_page関数で追加したページでのみ制限したい場合には以下のようにすることで対応できます。

// 絵文字変換無効化
$page_name = 'quiz';
add_action('admin_init', function () use ($page_name) {
    if (isset($_GET['page']) && $_GET['page'] === $page_name) {
        remove_action('admin_print_scripts', 'print_emoji_detection_script');
        remove_action('admin_print_styles', 'print_emoji_styles');
        remove_action('admin_enqueue_scripts', 'wp_enqueue_emoji_styles'); // WP6.4以降
    }
});

add_menu_page(
    'xxx',
    'xxx',
    'xxx',
    $page_name,
);

管理画面以外で絵文字を無効化する方法#

先ほど紹介したコードに加え、以下のコードをfunctions.phpあるいは、独自プラグインに追加することで、管理画面以外でも絵文字機能を無効化できます。

add_action( 'init', function() {
	remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
	remove_action( 'wp_print_styles', 'print_emoji_styles' );
    remove_action( 'wp_enqueue_scripts', 'wp_enqueue_emoji_styles' ); // WP6.4以降
	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' );
});

\てくのーと おすすめ書籍!/

変更に強いコードとはどんなものかが学べます! →感想詳細はこちら!