Последние несколько дней я работал над проектом WordPress и застрял на том, как правильно настроить динамическую страницу параметров с помощью ООП (я в первую очередь разработчик тем, а не сценарист PHP).
<?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
}
......
......
?>
В этом примере кода я пытаюсь получить функцию ab_do_htmlprint для распознавания выражений foreach, где она была вызвана, потому что функция будет вызываться столько раз, сколько необходимо в foreach.loop.
Я пробовал несколько вещей, например добавление переменной к имени функции, но для этого потребовалось бы несколько функций одного и того же кода, только с другим именем.Я также пытался передать различные переменные по ссылке и тому подобное, однако они тоже не работали, и я, возможно, не делал это правильно, даже если они были необходимы.
В любом случае, чтобы добиться этого эффективно?