Theresのこのワードプレス、http://developer.ninjaforms.com/codex/merge-tags/foreachループPHPの内部で関数を作成するにはどうすればよいですか?呼ばれる忍者フォームプラグイン
/* Individual tag registration. */
$this->merge_tags = array(
'foo' => array(
'id' => 'foo',
'tag' => '{my:foo}', // The tag to be used.
'label' => __('Foo', 'my_plugin'), // Translatable label for tag selection.
'callback' => 'foo' // Class method for processing the tag. See below.
),
);
/*
* Use the `init` and `admin_init` hooks for any necessary data setup that relies on WordPress.
* See: https://codex.wordpress.org/Plugin_API/Action_Reference
*/
add_action('init', array($this, 'init'));
add_action('admin_init', array($this, 'admin_init'));
}
public function init(){ /* This section intentionally left blank. */ }
public function admin_init(){ /* This section intentionally left blank. */ }
/**
* The callback method for the {my:foo} merge tag.
* @return string
*/
public function foo()
{
// Do stuff here.
return 'bar';
}}
'コールバック' の値は、関数、パブリック関数(FOO)として使用されます。
[foo] => Array
(
[id] => foo
[tag] => {my:foo}
[label] => Foo
[callback] => foo
)
[surveyid] => Array
(
[id] => surveyid
[tag] => {my:surveyid}
[label] => Surveyid
[callback] => surveyid
)
[membername] => Array
(
[id] => membername
[tag] => {my:membername}
[label] => Membername
[callback] => membername
)
IVEがこの配列に同じ形式で複数のアレイを追加し、IDは、彼らが持っているようにパブリック関数にそれらの「コールバック」の値をしたい:
Iは、配列にこれを追加しました。
/**
* The callback method for the {my:foo} merge tag.
* @return string
*/
public function foo()
{
// Do stuff here.
return 'bar';
}
私はこれを何度もやり直す予定ですが、今後はさらに配列を追加することがあります。だから私は動的に各配列のコールバック値のpublic関数を割り当てようとしています。
これは私が持っているものです。
$data = array(
'@attributes' => array(
'surveyid' => 'V54236',
'membername' => 'John Smith',
));
$realThing = array();
foreach($data['@attributes'] as $key => $value) {
$realThing[$key] = array(
'id' => $key,
'tag' => '{my:'.$key.'}',
'label' => __(ucfirst($key), 'my_plugin'),
'callback' => $key
);
}
$this->merge_tags = $realThing;
add_action('init', array($this, 'init'));
add_action('admin_init', array($this, 'admin_init'));
}
public function init(){ /* This section intentionally left blank. */ }
public function admin_init(){ /* This section intentionally left blank. */ }
}
コールバック値ごとに機能を割り当てようとしました。
foreach($realThing as $key => $value){
public function $key['callback'](){
return $data['@attributes'][$key];
}
};
所望の出力:すべてのヘルプは感謝
public function foo()
{
// Do stuff here.
return 'bar';
}
public function surveyid()
{
// Do stuff here.
return 'V54236';
public function membername()
{
// Do stuff here.
return 'John Smith';
。
も取得:
理論的には、ループを通過するときに無名関数を作成することができます。より大きな疑問はなぜあなたがそれをしたいのですか?この種のスマート・アレック・コーディングは、維持不能な混乱を本当に速くもたらすことがあります。 – GordonM