Я работаю над проектом темы Wordpress за последние несколько дней, и я зациклился на том, как правильно настроить страницу с динамическими параметрами, используя ООП (я в первую очередь разработчик темы, а не скрипт 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
}
......
......
?>
В этом примере кода, я пытаюсь получить функцию ab_do_htmlprint признать Foreach выражения, где был назван, потому что функция будет вызываться столько раз, сколько необходимо в цикле Еогеасп.
Я пробовал несколько вещей, таких как добавление переменной к имени функции, но для этого потребуется несколько функций одного и того же кода, просто с другим именем. Я также пробовал передавать различные переменные по ссылке и тому подобное, однако они тоже не работали, и я, возможно, не делал этого правильно, если они даже нужны.
В любом случае, для этого эффективно?
i dont follow. как поведение ab_do_htmlprint должно различаться в зависимости от того, где его вызвали? Моя догадка - простой аргумент, но я не очень понимаю специфику – 2010-11-26 21:40:23
Я хочу, чтобы функция ab_do_htmlprint печатала HTML каждой опции, которую я помещаю внутри многомерного массива.Каждый раз, когда ab_do_htmlprint вызывается внутри цикла foreach, каждый параметр будет отображаться на странице параметров, которую я создаю. Имеет ли это смысл? – James 2010-11-26 22:10:10