답변:
여러 옵션을 배열로 저장하는 경향이 있으므로 다음과 같은 내용이 있습니다.
<?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 함수는.