次のコードを使用して、いくつかのラジオ ボタンを追加します。
add_settings_field(
'video_embed',
'Embed YouTube/Videmo Video',
array( $this, 'video_embed_callback' ),
'setting-admin',
'field_settings'
);
次のようなコールバック関数を記述しました。
public function video_embed_callback()
{
$value = isset( $this->options['is_video_embed'] ) ? esc_attr( $this->options['is_video_embed']) : '';
printf('<label><input type="radio" id="is_video_embed_y" name="option_name[is_video_embed]" value="enable" '.checked( $value, 'enable', false ).' /> Enable</lable>');
echo "<br>";
printf('<label><input type="radio" id="is_video_embed_n" name="option_name[is_video_embed]" value="disable" '.checked( $value, 'disable', false ).' /> Disable</lable>');
}
すべてが機能していますが、問題はレベルが機能していないことです。ページを調べると、次の構造が得られました。
<tr valign="top">
<th scope="row">Embed YouTube/Videmo Video</th>
<td>
<label>
<input type="radio" id="is_video_embed_y" name="nl_option_name[is_video_embed]" value="enable">
Enable<br>
<label>
<input type="radio" id="is_video_embed_n" name="nl_option_name[is_video_embed]" value="disable">
Disable
</label>
</label>
</td>
</tr>
ただし、次のようにする必要があります。
<label>
<input type="radio" id="is_video_embed_y" name="nl_option_name[is_video_embed]" value="enable">
Enable<br>
</label>
<label>
<input type="radio" id="is_video_embed_n" name="nl_option_name[is_video_embed]" value="disable">
Disable
</label>
助けてください、何が起こっているのかわかりません:(