その前に前提のお話

絵文字を扱う前に、知っておきたい知識です。

絵文字は、WordPressは4.2で追加された機能

絵文字を表示させる機能は、4.2で追加された機能です。

MySQLのバージョンと文字コード

絵文字のコードをそのままデータベース(MySQL)に入れるためには、バージョンが5.5.3以上で、その文字コードがutf8mb4である必要があります。

絵文字は重い

絵文字の処理は、WordPressにとって、重たい処理のようです。 使っていなくても、head内にコードが挿入されます。 functions.phpにコードを書くと、filterを無効化できます。

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');

絵文字はスマイリーとは違う

絵文字と、スマイリー(エモーティコン、フェイスマーク、顔文字)は、技術的には違うものです。

絵文字を入力する

絵文字の入力方法は、デバイスによって異なります。 絵文字サイトからコピペしてくる方が、早そうです。 🦸‍♀️ 🦸‍♂️ 🦹‍♀️ 🦹‍♂️ 👮‍♀️ 👮‍♂️ 👷‍♀️ 👷‍♂️ 💂‍♀️ 

絵文字 – WordPress Codex 日本語版

スマイリーを入力する

スマイリーは、記号の組み合わせを入力すると、機能を有効化していれば、変換されます。 🙂 😀 🙁 😮 😯 😕 😎 😡 😛 😐 😉 記号の間にスペースを入れないと、表示されない場合があります。 絵文字に比べると、少ないです。

スマイリーの使い方 – WordPress Codex 日本語版

絵文字が表示されない問題

今回、起きた問題はあるページだけ絵文字(顔文字を含む)が出ないというものでした。 つまり、絵文字でなく、スマイリーでした。 表示されないページは、カスタマイズされたページで、the_content()が使われていませんでした。 原因は、the_content()のfilterがないことでした。

the_contentのfilter

convert_smiliesで、スマイリーに変換しています。 表示する前に、この関数を実行すれば、表示されました。

<?php
$the_content = convert_smilies($the_content);
echo $post_content;
?>

the_contentで使用されているfilter

the_contentで使用されているfilterは、これだけあります。

wp-includes/default-filters.php

add_filter( 'the_content', 'capital_P_dangit',              11 );
add_filter( 'the_content', 'wptexturize'                       );
add_filter( 'the_content', 'convert_smilies',               20 );
add_filter( 'the_content', 'wpautop'                           );
add_filter( 'the_content', 'shortcode_unautop'                 );
add_filter( 'the_content', 'prepend_attachment'                );
add_filter( 'the_content', 'wp_make_content_images_responsive' );
add_filter( 'the_content', 'do_shortcode',                  11 );

まとめ

検索しても、意外と出てこなかったので、メモしておきます。 あと、一応、絵文字と顔文字が、別なものなので、その部分も戒めとして、心に留めておきます。 それでは、また!

世界一わかりやすいWordPress 導入とサイト制作の教科書
技術評論社 (2017-06-17)
売り上げランキング: 4,946