WordPress: 0やnull、真偽値など特定の値を返す組み込み関数

WordPressは __return_zero()が0を、__return_true()がtrueなど、シンプルに値を返すだけの関数がいくつか組み込まれています。

これらは、どのような場面で使用するのかを紹介しようと思う。

値返すだけの組み込み関数

値返すだけの組み込み関数は、/wp-includes/functions.phpで定義されています。
表に抜粋してみます。

関数名 戻り値
__return_true() true
__return_false() false
__return_zero() 0
__return_empty_array() array()
__return_null() null
__return_empty_string() ''

関数の構造

/wp-includes/functions.phpを見ると、__return_zero()は次のようなコードが定義されています。

  • function __return_zero() {
  • return 0;
  • }
AFFS Simple Code Viewer
Copy

単純に0を返しているだけです。
他の関数も、同じように値を返しているだけです。

関数の使い道:勘違い

自作のコードで数値の0が欲しいとき、この関数を使用するとかっこいいような気がします。

  • function my_func(){
  • // 何らかのコード
  • $val = function __return_zero();
  • // 何らかのコード
  • }
AFFS Simple Code Viewer
Copy

盛大な勘違いです。
普通に0をセットしましょう。

  • function my_func(){
  • // 何らかのコード
  • $val = 0;
  • // 何らかのコード
  • }
AFFS Simple Code Viewer
Copy

関数の使い道:本命

add_filter()などで、0やtrueなどの値を返す関数を指定したいとき使用します。

例えば、次のコードでdns-prefetchの//s.w.orgを削除しています。

  • add_filter( 'emoji_svg_url' , '__return_null');
AFFS Simple Code Viewer
Copy

__return_null()を知らなかったら、次のように自作関数を用意していたはずです。

  • add_filter( 'emoji_svg_url' , 'my_emoji_svg_url');
  • function my_emoji_svg_url(){
  • return null;
  • }
AFFS Simple Code Viewer
Copy

おかげで、少しだけ楽ができました。

__return_で始まる関数は、WordPressのコア部分でもadd_filter()で使用されています。
元々コアで使用するのが目的だったのでしょうが、既に存在しているのだから、自分で作らずに使ってしまった方がいいですね。

関連記事:

WordPress:headタグの dns-prefetch を削除したり追加したりする