admin管理员组文章数量:1322850
Is there a way of adding settings fields dynamically?
I have my own Settings API options generator just like in Chip Bennet's Oenology Theme, everything works perfect but I can't find a way to create dynamic fields.
Here's how I add option fields.
1. First I describe all fields:
function my_options() {
$options = array(
array(
'id' => '1',
'title' => '1',
'type' => 'foo',
'description' => 'bar',
),
array(
'id' => '2',
'title' => '2',
'type' => 'foo',
'description' => 'bar',
),
);
return $options;
}
2. Then I generate fields:
foreach(my_options() as $field) {
add_settings_field(
$field['id'],
$field['title'],
"something",
"else",
"goes",
"there"
);
}
Then doing:
<?php $opts = get_option('my_theme_settings_api');
var_dump($opts); ?>
Returns all the fields.
But what If want to generate some of the fields "on the fly", eg. based on some other array, just like that:
function my_options() {
// $myarray = some array of elements taken from different source, like json data from other website etc.
$count = 0;
foreach($myarray as $something) {
$count++;
$options[] = array(
'id' => 'something'. $count,
'title' => $something['title'],
'type' => 'type',
'desription' => $something['description'],
);
return $options;
}
Then I'm getting the fields displayed using do_settings_sections() but I can't save them on admin pages and when I do var_dump($opts);
just like in example above these options doesn't exist there.
Any clues?
Is there a way of adding settings fields dynamically?
I have my own Settings API options generator just like in Chip Bennet's Oenology Theme, everything works perfect but I can't find a way to create dynamic fields.
Here's how I add option fields.
1. First I describe all fields:
function my_options() {
$options = array(
array(
'id' => '1',
'title' => '1',
'type' => 'foo',
'description' => 'bar',
),
array(
'id' => '2',
'title' => '2',
'type' => 'foo',
'description' => 'bar',
),
);
return $options;
}
2. Then I generate fields:
foreach(my_options() as $field) {
add_settings_field(
$field['id'],
$field['title'],
"something",
"else",
"goes",
"there"
);
}
Then doing:
<?php $opts = get_option('my_theme_settings_api');
var_dump($opts); ?>
Returns all the fields.
But what If want to generate some of the fields "on the fly", eg. based on some other array, just like that:
function my_options() {
// $myarray = some array of elements taken from different source, like json data from other website etc.
$count = 0;
foreach($myarray as $something) {
$count++;
$options[] = array(
'id' => 'something'. $count,
'title' => $something['title'],
'type' => 'type',
'desription' => $something['description'],
);
return $options;
}
Then I'm getting the fields displayed using do_settings_sections() but I can't save them on admin pages and when I do var_dump($opts);
just like in example above these options doesn't exist there.
Any clues?
Share Improve this question asked Sep 9, 2012 at 17:30 WordpressorWordpressor 5,05119 gold badges70 silver badges102 bronze badges1 Answer
Reset to default 1It sounds like you would need a way to get those dynamic fields into the my_options
function each time it's called. You could try creating your own filter to use:
function my_options() {
$myarray = apply_filters( 'my_get_options_dynamically', array() );
$count = 0;
foreach($myarray as $something) {
$count++;
$options[] = array(
'id' => 'something'. $count,
'title' => $something['title'],
'type' => 'type',
'desription' => $something['description'],
);
return $options;
}
add_filter( 'my_get_options_dynamically', function() {
// Some code to get the dynamic option array.
return array( array(
'title' => 'Some option title',
'description' => 'Some option description',
) );
} );
本文标签: adminSettings APIadding setting fields dynamically
版权声明:本文标题:admin - Settings API - adding setting fields dynamically? 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742113538a2421364.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论