Answers:
我倾向于将多个选项存储为一个数组,所以我会有类似的东西。
<?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
)。就个人而言,当我处理复选框时,我不会设置数组键,而其他人可能会选择将键设置为0(或其他值)...
所以我的代码实际上看起来像这样。
<?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;
}
从我的一个插件类(一个只有复选框选项的插件)中直接删除了它,但是如果您复制它,它不是可以期望工作的代码,它仅用于说明。
对于收音机,如果您不使用多选功能,它将显示以下内容。
<?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'] ); ?> />
注意:当然,明智的做法是在与它的值进行比较之前检查键的设置(我将其省略以使其简短)。
以上有帮助吗?如果没有,请让我知道需要澄清的内容...(或我所缺少的)。
回覆: checked()
您可以在此处找到函数的定义位置(在WordPress中)。 http://core.trac.wordpress.org/browser/tags/3.0.2/wp-includes/general-template.php#L2228
第一个参数基本上是一个条件语句,第二个参数(如果要定义它)是要检查的内容。要比较的默认值为TRUE ...,所以如果要这样做,checked( 1 == 1, true )
我将检查1 == 1是否等于true。如果条件匹配,那么您将checked="checked"
返回给您。
注意:我在解释事情上有些垃圾,因此,如果以上内容需要进一步说明,我不会感到冒犯……只要让我知道即可;
checked()
功能是我无法通过Google找到的唯一功能,因为显然没有记录。查询“ term + wordpress”时,我已经习惯了获得想要的东西。:-)
checked( 1, 2 )
检查1是否等于2 ...将不输出任何内容,因为funciton是专门设计用于输出复选框或单选按钮的选中状态。.在任何情况下,乐于助人...;)
复选框:
<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' ) ); ?> />
checked( 1 == $options['option_one']
吗?是checked()
php函数,因为在手册中找不到。