checked()
は、フォームの <input type="checkbox">
や <input type="radio">
などの要素において、ある値が一致するかを判定し、自動的に checked="checked"
を出力する便利なヘルパータグです。
条件分岐と HTML 出力を一行で済ませられるため、管理画面やカスタムフォームの実装で頻繁に使用されます。
目次
機能の説明
checked()
は、比較対象の2つの値が一致している場合に checked="checked"
を出力する関数です。echo
を false
にすると戻り値として扱うこともできます。
どういうときに使う?
- チェックボックスやラジオボタンの選択状態を維持したいとき
- 管理画面やオプション設定ページで選択状態を制御したいとき
- カスタム投稿タイプやメタボックスの選択UI
シンプルなコード例
<input type="checkbox" name="subscribe" value="yes" <?php checked( $value, 'yes' ); ?> />
$value
が 'yes'
の場合 → checked="checked"
が出力されます。
使い方の説明
構文
checked( mixed $checked, mixed $current = true, bool $echo = true ): string|void
パラメータ | 説明 |
---|---|
$checked | 実際の値(入力データやDBから取得した値など) |
$current | 比較対象の値(チェック状態にしたい基準値) |
$echo | true の場合は直接出力、false の場合は戻り値として返す |
フォーム実装例(複数選択)
<?php $colors = ['red', 'green', 'blue']; ?>
<?php foreach ( $colors as $color ): ?>
<label>
<input type="checkbox" name="fav_colors[]" value="<?php echo esc_attr( $color ); ?>" <?php checked( in_array( $color, $selected_colors ), true ); ?> />
<?php echo esc_html( ucfirst( $color ) ); ?>
</label>
<?php endforeach; ?>
一緒に使うことが多い関連タグ
selected()
<select>
の <option>
要素で使います。
<option value="large" <?php selected( $size, 'large' ); ?>>Large</option>
disabled()
入力を無効化する属性を出力。
<input type="text" name="title" <?php disabled( $has_permission, false ); ?> />
readonly()
読み取り専用属性。
<input type="text" name="example" <?php readonly( $is_locked ); ?> />
追加情報で取得したい場合
checked()
を直接出力せず、変数として扱いたい場合
$checked_attr = checked( $value, 'yes', false );
echo '<input type="checkbox" ' . $checked_attr . ' />';
このテンプレートタグを利用してのカスタマイズ
カスタム投稿のメタボックスでチェックボックス状態を出力
<input type="checkbox" name="show_sidebar" value="1" <?php checked( get_post_meta( $post->ID, 'show_sidebar', true ), '1' ); ?> />
オプション設定画面で使用
<input type="radio" name="theme_layout" value="grid" <?php checked( get_option( 'theme_layout' ), 'grid' ); ?> />
想定されるトラブル
チェックが付かない
$checked
や$current
の型が異なる(例:int
とstring
)echo
をfalse
にして出力していない
解決方法
- 厳密な型一致で比較されるため、明示的にキャストするか、型を揃える
echo
をtrue
(デフォルト)にするか、出力を明示的に行う
checked( (string) $value, '1' );
Q&A
まとめ
checked()
は、HTML フォームの<input type="checkbox">
や<input type="radio">
に対してchecked="checked"
を出力する WordPress の便利関数。- 条件が一致すると
checked="checked"
を出力、echo false
で戻り値として取得可能。 selected()
、disabled()
、readonly()
もセットで活用することが多い。
コメント