2021.05.09

【WordPress】絵文字を含むカスタムフィールド値のDB更新について

こんにちは、webエンジニアのゾノ( @ozonosho )です。

本日はWordPressのカスタムフィールドで絵文字を扱う際の小ネタです。
※検証不十分の可能性ありますw

カスタムフィールドの値を更新する関数でおなじみの「update_post_meta」や「update_user_meta」。

実は、この関数を利用して絵文字を含むデータをpostmetaテーブルに挿入しようとすると、失敗して空白値が入ります。
(絵文字対応しているバージョンのDBでも更新できません)

これはなかなか困った仕様で、、、ユーザーが自由にプロフィール登録できるようなサイトの場合、絵文字入力されると更新できないんですよね。

そんなわけでどうするのかというと、

  1. 絵文字を含むデータをDBに入れる場合には絵文字を一度エンコードして実体参照にしてから保存する
  2. 「get_post_meta」や「get_user_meta」で取り出す時にはデコードして絵文字を復元する

というステップを踏む必要があります。

①絵文字のエンコード

絵文字のエンコードは下記のような関数を挟めばOKです。

※使ったことないけれどWordPressにも「wp_encode_emoji」という絵文字エンコード用関数があるみたいです

DBの更新は受け取った送信情報を元におこなう場合がほとんどで、
・送信情報はエスケープする必要がある
・↑のほうの記事で紹介したようにWPはリクエスト情報にシングルクォーテーション等があると勝手にバックスラッシュを挿入してしまう
という2つの事情があるため、

最終的には、

みたいにして情報を更新してあげます。

これで絵文字を含む文字列をエスケープして保存できます。

②絵文字のデコード

絵文字のデコードは下記のような関数を挟めばOKです。

出力する時には、エスケープ処理も加えて下記のように利用します。

 
上記①②の対応を加えることで、WordPressの関数を利用したまま絵文字入りのカスタムフィールド値を保存・取得できるようになります。

おわりに

以上、今回の記事では絵文字を含むカスタムフィールド値のDB更新を紹介させていただきました。

当サイトではWordpressのカスタマイズ制作依頼を請け負っています。運営中のサイトで何かお困りのことがある方は、下記の記事を参照のうえ気軽にご相談ください。

どんな機能・要望でもOK!『Wordpressのカスタマイズ制作』はじめました。

こんにちは、webエンジニアのゾノ( @ozonosho )です。 このたびWordpressのカスタマイズ制作をはじめました。......

→この記事を読む
チャレンジを応援する無料オンラインコミュニティ運営中!

生きづらさを抱える人のチャレンジを応援する無料オンラインコミュニティ『Cree』をスタートしました。ただいま参加者100名突破!お互いの目標を共有したり、就労・就職のサポートするサービスを無料で提供しています。

オンラインコミュニティの詳細はこちら

ゾノについて

お仕事のご相談はこちら