選択値やチェック状態をフォームに反映させる|WordPressテーマ作成
保存済みのセレクトボックスやチェックボックスの選択値をフォームに反映する場合、通常は下記のように条件判定するかと思います。
<select name="robots_index" id="robots_index">
<?php if ( $robots_index === "index, follow" ): ?>
<option value="index, follow" selected="selected">index, follow</option>
<?php else: ?>
<option value="index, follow">index, follow</option>
<?php endif; ?>
<?php if ( $robots_index === "index, nofollow" ): ?>
<option value="index, nofollow" selected="selected">index, nofollow</option>
<?php else: ?>
<option value="index, nofollow">index, nofollow</option>
<?php endif; ?>
<?php if ( $robots_index === "noindex" ): ?>
<option value="noindex" selected="selected">noindex</option>
<?php else: ?>
<option value="noindex">noindex</option>
<?php endif; ?>
</select>
面倒ですよね。WordPressではチェック状態の判定と出力を行ってくれるメソッドが用意されています。
セレクトボックス
selected()
メソッドを使うと簡単にselected
を出力できます。
<select name="robots_index" id="robots_index">
<option value="index, follow"<?php selected( $robots_index, 'index, follow' ) ?>>index, follow</option>
<option value="index, nofollow"<?php selected( $robots_index, 'index, nofollow' ) ?>>index, nofollow</option>
<option value="noindex"<?php selected( $robots_index, 'noindex' ) ?>>noindex</option>
</select>
第1パラメータに判定する変数を、第2パラメータに判定する値を指定します。変数の値が第2パラメータと一致した場合にselected
が出力されます。
出力例
<select name="robots_index" id="robots_index">
<option value="index, follow">index, follow</option>
<option value="index, nofollow">index, nofollow</option>
<option value="noindex" selected='selected'>noindex</option>
</select>
冒頭で書いたコードがスッキリと短くなったことが分かると思います。
チェックボックス
チェックボックスの場合はchecked()
メソッドを使用します。
<input type="checkbox" id="twitter" name="twitter" value="on"<?php checked( $twitter, 'on' ); ?>/>
<label for="twitter">Twitter</label><br />
第1パラメータに判定する変数を、第2パラメータに判定する値を指定します。変数の値が第2パラメータと一致した場合にchecked
が出力されます。
主力例
<input type="checkbox" id="twitter" name="twitter" value="on" checked='checked'/>
<label for="twitter">Twitter</label><br />
ラジオボタン
ラジオボタンの場合もchecked()
メソッドを使用します。
<label><input type="radio" id="display_author" name="display_author" value="1"<?php checked( $radio_value, "1" ); ?>/> <span>する</span></lable><br />
<label><input type="radio" id="display_author" name="display_author" value="0"<?php checked( $radio_value, "0" ); ?>/> <span>しない</span></lable><br />
主力例
<label><input type="radio" id="display_author" name="display_author" value="1" checked='checked'/> <span>する</span></lable><br />
<label><input type="radio" id="display_author" name="display_author" value="0"/> <span>しない</span></lable><br />