私は過去数日間Wordpressのテーマプロジェクトに取り組んできました.OPCを使って動的なオプションページを正しく実行する方法については固執しています(私は主にPHPスクリプタではなくテーマ開発者です)。このコード例でforeach内で関数を呼び出す?
<?php
$footerpage = new optionpage;
$footerpage->title = 'Footer';
$footerpage->titleprint = ' Footer Options';
$footerpage->slug = 'footer';
$footerpage->html = array(
'1' => array(
'type' => 'textarea',
'class' => 'large-text',
'name' => 'html',
'title' => 'HTML',
'description' => 'Type in whatever HTML you\'d like to see in the footer here:',
),
'2' => array(
'type' => 'input',
'class' => 'large-text',
'name' => 'background-color',
'title' => 'Background Color',
'description' => ' Choose a Background Color:'
),
);
class optionpage {
public $title;
public $titleprint;
public $slug;
public $html = array();
......
......
......
public function ab_settings() {
register_setting($this->slug, 'ab_options');
add_settings_section('ab_section', '', array(&$this, 'ab_do_titleprint'), 'ab_' . $this->slug . '_options', 'ab_options');
foreach ($this->html as $key => $html) {
add_settings_field($key, $html['title'], array(&$this, 'ab_do_htmlprint'), 'ab_' . $this->slug . '_options', 'ab_section');
}
}
public function ab_do_htmlprint() {
$html = $this->html[$key];
?>
<p><?php echo $html['description'] ?></p>
<<?php echo $html['type'] ?>
id="<?php echo $html['id'] ?>"
class="<?php echo $html['class'] ?>"
name="<?php echo $html['name'] ?>">
<?php get_option ($html['name'])?>
</<?php echo $html['type'] ?>>
<?php
}
......
......
?>
機能は、foreachループで必要な回数だけ呼ばれようとしているので、私は、それが呼ばれていますforeachの表現を認識するための機能ab_do_htmlprintを取得しようとしています。
私は、関数名に変数を追加するようないくつかのことを試しましたが、同じコードの複数の関数が必要です。私も参考にして様々な変数を渡そうとしましたが、どちらもうまくいきませんでした。
とにかくこれを効率的に行うには?
私は従いません。 ab_do_htmlprintの動作はどこから呼び出されたかによって異なるでしょうか?私の勘は単純な議論ですが、具体的なことを実際には理解していません –
私が望むのは、多次元配列の中に置く各オプションのHTMLをab_do_htmlprint関数で出力することです。foreachループ内でab_do_htmlprintが呼び出されるたびに、各オプションが作成するオプションページに表示されます。それは理にかなっていますか? – James