WordPress から絵文字の機能を削除して効率化する
WordPress 4.2 から "絵文字" の機能が追加されました。 WordPress から出力されたページの HTML ソースに emoji の文字が確認できます。
絵文字の機能は、絵文字のための CSS と Javascript を読み込む処理と、絵文字を変換するための処理が加わります。 通信速度やページの描画速度に関わるので、特に絵文字を使わない場合には積極的に削除しましょう。ここでは削除方法を解説します。
emoji の機能が出力するコード
絵文字の機能が有効になっている場合、次のようなコードがページのヘッダ部分(head 要素)に挿入されます。
<script type="text/javascript">
window._wpemojiSettings = {"baseUrl":"http:\/\/s.w.org/images/core/emoji/72x72/",
…
</script>
<style type="text/css">
img.wp-smiley,
img.emoji {
display: inline !important;
border: none !important;
box-shadow: none !important;
height: 1em !important;
width: 1em !important;
margin: 0 .07em !important;
vertical-align: -0.1em !important;
background: none !important;
padding: 0 !important;
}
</style>
emoji を削除する手順
emoji に関する機能はアクションまたはフィルタにフックされた関数によって実現されています。
したがって、remove_action
や remove_filter
関数を使ってそれらの関数を削除します。
次のようなコードを functions.php ファイルなどに記述します。
絵文字などのデフォルトのアクションフックは、./wp-includes/default-filters.php ファイルで確認することができます。
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');
絵文字の機能を削除するコード(必須)
print_emoji_detection_script
関数の優先順位($priority)が 7
に設定されている点に注意してください。
remove_action
関数は、関数が追加されたときに指定された優先順位と、
削除するときに指定された優先順位が一致しないとき、削除に失敗します。
また、次のコードは状況に応じて追加します。
remove_action('admin_print_scripts', 'print_emoji_detection_script');
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');
絵文字の機能を削除するコード(状況に応じる)
状況に応じた関数の削除
functions.php ファイルはページの表示の度に読み込まれて実行されます。
つまり remove_action
または remove_filter
関数を functions.php に追記すると、
絵文字機能の関数の削除がページの読み込みの度に実行されることになります。
一部の絵文字機能の関数については、ユーザに表示されるページには直接影響を及ぼさないので、ページの読み込みの度に削除することは非効率になります。
admin_print_scripts / admin_print_styles
admin_print_scripts
と admin_print_styles
は、投稿ページなどではなく、
ログインしたユーザや管理者の走査するダッシュボードなどでスクリプトや CSS を読み込むためのアクションです。
WordPress を使った会員制サイトなどを作る場合には、これらのアクションにフックされた関数を削除した方が良いでしょう。 削除しない場合、ユーザが絵文字の機能を使うことができるにも関わらず、実際のページには出力されないといった状況が生まれます。 ユーザの意図と異なる結果は出力されるべきではありません。
一方で、個人や絵文字の機能を削除したことを理解してる限定的な数人で管理される WordPress なら、この機能を削除しなくても良いでしょう。 functions.php によってページの読み込みの度に削除する処理が実行されるものの、実際にはダッシュボードなどでしか機能しないためです。 ダッシュボードで使える機能を削除しても、ページを閲覧するユーザにはメリットがありません。単に削除が実行されるだけです。
the_content_feed / comment_text_rss
the_content_feed
と comment_text_rss
は、RSS(フィード)が出力するテキストに適用されるフィルタです。
また wp_staticize_emoji
関数は、絵文字を画像に変換する関数です。
RSS フィードを利用しているかどうかに関わらず、これらのフィルタにフックされた関数を削除する意味はあまりないでしょう。 もし削除するのであれば、RSS フィードを利用している場合に削除します。
RSS フィードの内容に対する処理は、ページを閲覧するユーザにはメリットがありません。単に削除が実行されるだけです。 RSS フィードの配信機能を無効化している場合には、尚更、削除する理由ないでしょう。そのような場合にも、単に削除が実行されるだけです。
wp_mail
wp_mail
はメールによって投稿されたテキストに適用されるフィルタです。
wp_staticize_emoji_for_email
関数は、メールから投稿されたテキストに含まれる絵文字を画像に変換します。
この機能はメール投稿機能を使わない限り意味がありません。 削除しても、ページを閲覧するユーザにはメリットがありません。単に削除が実行されるだけです。
メール投稿機能を使い、絵文字機能を使わない場合には、wp_staticize_emoji_for_email
関数を削除しても良いです。
ただし、メール投稿機能を使うユーザが絵文字機能を使わないことを理解していれば、削除する必要はないでしょう。
管理ユーザがメールによって投稿する回数よりも、ユーザがページを閲覧する回数のほうが圧倒的に多いことは明らかです。 ページを閲覧する度に関数を削除するのはあまりにも非効率です。