私はプラグインの開発を学んでいます、私はプラグインオプションフォームデータを保存することに行き詰まっています。
私はビデオの数、高さと幅を尋ねる3つのフィールドがコード化されているプラグインオプションページを持っています。
値を入力して保存すると、ただ1つの値、つまりビデオ数が保存されます。
これが私のコードです
<?php
add_action('admin_init', 'ozh_sampleoptions_init' );
add_action('admin_menu', 'ozh_sampleoptions_add_page');
// Init plugin options to white list our options
function ozh_sampleoptions_init(){
register_setting( 'ozh_sampleoptions_options', 'ozh_sample', 'ozh_sampleoptions_validate' );
}
// Add menu page
function ozh_sampleoptions_add_page() {
add_options_page('Youtube Video Settings', 'Youtube Video Settings', 'manage_options', 'ozh_sampleoptions', 'ozh_sampleoptions_do_page');
}
// Draw the menu page itself
function ozh_sampleoptions_do_page() {
?>
<div class="wrap">
<h2>Youtube Video Setting 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">No of videos:</th>
<td><input type="text" name="ozh_sample[sometext]" value="<?php echo $options['sometext']; ?>" /></td>
</tr>
<tr valign="top"><th scope="row">Height:</th>
<td><input type="text" name="ozh_sample[hgt]" value="<?php echo $options['hgt']; ?>" /></td>
</tr>
<tr valign="top"><th scope="row">Width:</th>
<td><input type="text" name="ozh_sample[wid]" value="<?php echo $options['wid']; ?>" /></td>
</tr>
</table>
<p class="submit">
<input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
</p>
</form>
</div>
<?php
}
// Sanitize and validate input. Accepts an array, return a sanitized array.
function ozh_sampleoptions_validate($input) {
// Our first value is either 0 or 1
//$input['option1'] = ( $input['option1'] == 1 ? 1 : 0 );
// Say our second option must be safe text with no HTML tags
$input['sometext'] = wp_filter_nohtml_kses($input['sometext']);
$input['hgt'] = wp_filter_nohtml_kses($input['hgt']);
$input['wid'] = wp_filter_nohtml_kses($input['wid']);
return $input;
}
$myoptions = get_option( 'ozh_sampleoptions_options' );
echo 'Niraj';
echo $options['sometext'];
?>
高さと幅を節約できません。
私は<input type='hidden' name='page_options' value='vidNO'/>
コードに取り組まなければならないことを知っています、しかしそれを手に入れません、
誰もがこれで私を手伝ってくれる?
まず、あなたは本当にあなたのオプションをwp_options
の配列として保存するべきです。しかし、そうしないことを選択した場合は、2番目と3番目のオプションの名前を実際に変更する必要があります。 「高さ」と「幅」はまったく一般的なものであり、ほとんど間違いなく衝突を引き起こすでしょう。あなたはそれぞれname="height"
とname="width"
を渡していますが、WordPressがあなたのプラグインに属するオプションとして "width"と "height"を関連付けているのではないかと思います。
それで、あなたのストアをあなたのオプションがplugin_plugin-slug_options
として配列だとしましょう。それは配列です:
<?php
$plugin_options = get_option( 'plugin_plugin-slug_options' );
?>
<tr><td>Number Of Videos:</td><td><input type="text" name="$plugin_options[vidNO]" value="<?php echo get_option('vidNO');?>" <?php echo get_option('vidNO'); ?> />
</td></tr>
<tr><td>Height:</td><td><input type="text" name="$plugin_options[height]" value="<?php echo get_option('height');?>" <?php echo get_option('height'); ?> />
</td></tr>
<tr><td>Width:</td><td><input type="text" name="$plugin_options[width]" value="<?php echo get_option('width');?>" <?php echo get_option('width'); ?> />
</td></tr>
しかし、少なくともregister_setting()
を使用してオプション配列を登録し、settings_fields()
を設定フォームで多大な効果を上げるためには、Settings APIの使用を検討する必要があります。
register_setting でプラグインオプションを処理するにはOzhのチュートリアルをチェックすることをお勧めします。
設定API を利用するのが、プラグインオプションを扱う最も簡単な方法です。
WordPressがあなたのために仕事をします。
1フィールドのフォームを含むオプションページの簡単な例。
add_action('admin_menu', 'c3m_myplugin_add_page');
function c3m_myplugin_add_page() {
add_options_page( 'C3M Google Analytics', 'C3M Google Analytics', 'manage_options', 'c3m_myplugin', 'c3m_myplugin_option_page' );
}
// Draw the option page
function c3m_myplugin_option_page() {
?>
<div class="wrap">
<h2>Really Simple Google Analytics</h2>
<form action="options.php" method="post">
<?php settings_fields( 'c3m_myplugin_options' ); ?>
<?php do_settings_sections( 'c3m_myplugin' ); ?>
<input name="Submit" type="submit" value="Save Changes" />
</form>
</div>
<?php
}
// Register and define the settings
add_action( 'admin_init', 'c3m_myplugin_admin_init' );
function c3m_myplugin_admin_init(){
register_setting(
'c3m_myplugin_options',
'c3m_myplugin_options'
);
add_settings_section(
'c3m_myplugin_main',
'Google Analytics Web Property ID',
'c3m_myplugin_section_text',
'c3m_myplugin'
);
add_settings_field(
'c3m_myplugin_text_string',
'Enter text here',
'c3m_myplugin_setting_input',
'c3m_myplugin',
'c3m_myplugin_main'
);
}
// Draw the section header
function c3m_myplugin_section_text() {
echo '<p>Enter your Google Analytics Web Property ID here ex: UA-XXXXXX-XX.</p>';
}