お世話になっております。Wordpressのdefine
でエラーが出ました。よろしくお願い致します。
###実現したいこと
Wordpressで配列をdefine
したいです。
HIS_CF['user_meta_1']
のようにして、ユーザーのカスタムフィールドを取得する意図になります。
###発生している問題・エラーメッセージ
該当のソースコードにあるとおり、define
の中身は配列を使っていると思うのですが、次のように「配列を使え」というエラーが100行目について表示されます。
Warning: Constants may only evaluate to scalar values or arrays in /wordpress/wp-content/themes/name/functions.php on line 100
###該当のソースコード
こちらがエラーを出す該当のソースコードです。
最後の行でdefine
したHIS_CF
の中身は$cf_data
です。
これは配列だと思うのですが、何がいけないでしょうか?
function my_define_HIS_CF(){ $cf_data = []; $cf_key_arr = ['user_meta_1','user_meta_2']; foreach( $cf_key_arr as $cf_key ){ $cf_data[$cf_key] = get_user_meta( get_current_user_id(), $cf_key, true ) ?? []; } define( 'HIS_CF', $cf_data ); // 100行目 } my_define_HIS_CF();
###試したこと
配列以外はどうかと思い下記のようにIDを定義しましたが、エラーありませんでした。
define( 'HIS_ID', get_current_user_id() );
そして、配列かどうかについてerror_log
を出して確認しました。
function my_define_HIS_CF(){ /* 略 */ error_log( '$cf_dataはこちらです :' . json_encode($cf_data) ); define( 'HIS_CF', $cf_data ); } my_define_HIS_CF();
↓結果
[26-Sep-2019 14:46:02] $cf_dataはこちらです :{"user_meta_1":[],"user_meta_2":[{"age":20,"name":"smith"}
やはり配列ですよね…?(ログに出すためにエンコードして文字列になってますが、エンコード前は配列のハズ)
何かいけないのか、どなたかお分かりになりますでしょうか。
回答1件
あなたの回答
tips
プレビュー