ばかげて電話してください、しかし私はそれをどうやってやるか考えていません。テキスト入力の場合は、
<input type="text" name="option_name" value="<?php echo get_option( 'option_name' ); ?>" />
それからregister_setting()
を使ってworkdpressにフックします。それからget_option('option_name')
を通してその値を得ることができました。チェックボックスとラジオボタンでどうすればいいですか。
私は複数のオプションを配列として保存する傾向があるので、このようなものがあります。
<?php $options = get_option( 'myoption' ); ?>
<input type="checkbox" name="myoption[option_one]" value="1"<?php checked( 1 == $options['option_one'] ); ?> />
<input type="checkbox" name="myoption[option_two]" value="1"<?php checked( 1 == $options['option_two'] ); ?> />
ただし、着信データをサニタイズするコールバック関数が保存された値を処理する方法(register_setting
の3番目のパラメーターとして定義するコールバックである必要があります)によって異なります。個人的に私がチェックボックスを扱っているとき、私は配列キーを設定しません。
私のコードは実際にこのように見える傾向があります。
<?php $options = get_option( 'myoption' ); ?>
<input type="checkbox" name="myoption[option_one]" value="1"<?php checked( isset( $options['option_one'] ) ); ?> />
<input type="checkbox" name="myoption[option_two]" value="1"<?php checked( isset( $options['option_two'] ) ); ?> />
チェックボックスのみを処理している場合、サニタイズコールバックは次のようになります。
public function on_option_save( $options ) {
if( !is_array( $options ) || empty( $options ) || ( false === $options ) )
return array();
$valid_names = array_keys( $this->defaults );
$clean_options = array();
foreach( $valid_names as $option_name ) {
if( isset( $options[$option_name] ) && ( 1 == $options[$option_name] ) )
$clean_options[$option_name] = 1;
continue;
}
unset( $options );
return $clean_options;
}
プラグインクラス(チェックボックスオプションのみを備えたプラグイン)の1つから直接リッピングしましたが、コピーした場合に動作するはずのコードではなく、説明のためだけにあります。
ラジオでは、複数選択を使用していない場合、次のようになります。
<?php $options = get_option( 'my_option' ); ?>
<input type="radio" name="myoption[option_three]" value="value1"<?php checked( 'value1' == $options['option_three'] ); ?> />
<input type="radio" name="myoption[option_three]" value="value2"<?php checked( 'value2' == $options['option_three'] ); ?> />
注:もちろん、キーの値と比較する前にキーが設定されていることを確認するのが賢明です(短くするために上記の説明を省略しました)。
上記は役に立ちましたか?そうでない場合は、明確にする必要があるものを教えてください...(または私が不足しているもの)..
RE:checked()
ここで関数が定義されている場所(WordPress内)を見つけることができます。 http://core.trac.wordpress.org/browser/tags/3.0.2/wp-includes/general-template.php#L2228
最初のパラメーターは基本的に条件ステートメントであり、2番目のパラメーター(定義したい場合)はチェック対象です。比較対象のデフォルト値はTRUE...ですので、checked( 1 == 1, true )
を実行する場合、1 == 1がtrueに等しいかどうかを確認します。条件が一致した場合、checked="checked"
が返されます。
注:私は物事を説明するのが面倒ですので、上記の説明をさらに明確にする必要がある場合は、気分を害することはありません...
チェックボックス
<input name="option_name" type="checkbox" value="1" <?php checked( '1', get_option( 'option_name' ) ); ?> />
無線:
<input name="option_name" type="radio" value="0" <?php checked( '0', get_option( 'option_name' ) ); ?> />
<input name="option_name" type="radio" value="1" <?php checked( '1', get_option( 'option_name' ) ); ?> />