找到了很好的wordpress设置页面代码示例。通过微小的更改复制粘贴它。几乎所有东西似乎都在工作,没有任何问题。除了颜色和另一件事(单独的问题)。 wordpress是否需要一些额外的颜色选择器代码,或者我做错了什么?
这是代码
add_action('admin_init', 'ozh_sampleoptions_init' );
add_action('admin_menu', 'ozh_sampleoptions_add_page');
function ozh_sampleoptions_init(){
register_setting( 'ozh_sampleoptions_options', 'ozh_sample', 'ozh_sampleoptions_validate' );
}
function ozh_sampleoptions_add_page() {
add_options_page('Ozh\'s Sample Options', 'Sample Options', 'manage_options', 'ozh_sampleoptions', 'ozh_sampleoptions_do_page');
}
function ozh_sampleoptions_do_page() {
?>
<div class="wrap">
<h2>Ozh's Sample Options</h2>
<form method="post" action="options.php">
<?php settings_fields('ozh_sampleoptions_options'); ?>
<?php $options = get_option('ozh_sample'); ?>
<table class="form-table">
<tr valign="top"><th scope="row">A Checkbox</th>
<td><input name="ozh_sample[option1]" type="checkbox" value="1" <?php checked('1', $options['option1']); ?> /></td>
</tr>
<tr valign="top"><th scope="row">A color</th>
<td><input name="ozh_sample[optioncolor1]" type="color" value="#000" /></td>
</tr>
<tr valign="top"><th scope="row">Some text</th>
<td><input type="text" name="ozh_sample[sometext]" value="<?php echo $options['sometext']; ?>" /></td>
</tr>
<tr valign="top"><th scope="row">Another text</th>
<td><input type="text" name="ozh_sample[blabla]" value="<?php echo $options['blabla']; ?>" /></td>
</tr>
</table>
<p class="submit">
<input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
</p>
</form>
</div>
<?php
}
function ozh_sampleoptions_validate($input) {
$input['option1'] = ( $input['option1'] == 1 ? 1 : 0 );
$input['sometext'] = wp_filter_nohtml_kses($input['sometext']);
$input['blabla'] = wp_filter_nohtml_kses($input['blabla']);
$input['optioncolor1'] = wp_filter_nohtml_kses($input['optioncolor1']);
return $input;
}
答案 0 :(得分:0)
要在更新选项后执行任务,您可以使用updated_option
操作挂钩:
add_action( 'update_option_{option-name}', 'update_new_option_name_callback', 10, 2 );
function update_new_option_name_callback( $old_value, $value ) {
//Do something
}
尝试使用您的选项名称
add_action( 'update_option_ozh_sample', 'update_new_option_name_callback', 10, 2 );
function update_new_option_name_callback( $old_value, $value )
{
//Do something
}