いくつかの重力フォームフィールドにコンテンツを入力するPHP whileループをWordPressに作成しようとしています。私はこのように、whileループ内で関数を作成するためにeval()を使用しようとし、コンテンツを取得するためにリピータ分野で高度なカスタムフィールドを使用しています:WordPress:whileループ内の関数で名前が変数
if(have_rows('tickets', 'option')) :
while(have_rows('tickets', 'option')) : the_row();
$shortname = get_sub_field('short_name');
$image = get_sub_field('image');
add_filter('gform_field_value_' . $shortname . '_img', 'populate_' . $shortname . '_img');
eval("
function populate_{$shortname}_img($value) {
return $image;
}
");
endwhile;
endif;
問題は、私はこれを取得していますということですエラー:
Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'populate_test_img' not found or invalid function name in /srv/www/nordstan/htdocs/wp-includes/plugin.php on line 235
(私は取得していますこれらの倍数、当然の、および$の短縮名変数の1つは、「テスト」です。)
しかし、私は「リターン$イメージ」を変更していた場合"test"を返す "、エラーメッセージは表示されず、すべてが正しく実行されるので、関数sが作成されます。
私は間違っていますか?
ありがとうございます!
'、 'populate_'を変更してみませんか? $ショートネーム。閉鎖に '_img'? '、function($ value){return $ image});' Btw、あなたは '$ image'を返しています。これはその関数のスコープでは定義されていません。 –
add_filterで使用されている名前と同じ名前でなければならないので、それとも、私は何かを逃していますか? –