私が開発している WordPress プラグインでは、WordPress 設定 API を使用しています。ラジオ ボタンを含む設定を表示するために使用するコールバックで、チェックボックスの値に基づいてラジオ ボタンを有効または無効にします。とにかく、非表示の入力を使用して無効にしても値を保存しようとしましたが、最後の非表示の入力の値が常に使用されたため、状況が悪化しました。私の場合は「4」でした。
if(get_option( 'display_style' ) == 2){
$disabled = 'disabled';
}
$html = '<input type="radio" id="onecolumn" class="cardchecked" name="card_columns" value="1"' . checked( 1, get_option( 'card_columns' ), false ) . $disabled . '/>';
$html .= '<input type="hidden" name="card_columns" value="1" />';
$html .= '<label for="onecolumn">One</label>';
$html .= '<input type="radio" id="twoclumn" class="cardchecked" name="card_columns" value="2"' . checked( 2, get_option( 'card_columns' ), false ) . $disabled . '/>';
$html .= '<input type="hidden" name="card_columns" value="2" />';
$html .= '<label for="twoclumn">Two</label>';
$html .= '<input type="radio" id="threecolumn" class="cardchecked" name="card_columns" value="3"' . checked( 3, get_option( 'card_columns' ), false ) . $disabled . '/>';
$html .= '<input type="hidden" name="card_columns" value="3" />';
$html .= '<label for="threecolumn">Three</label>';
$html .= '<input type="radio" id="fourcolumn" class="cardchecked" name="card_columns" value="4"' . checked( 4, get_option( 'card_columns' ), false ) . $disabled . '/>';
$html .= '<input type="hidden" name="card_columns" value="4" />';
$html .= '<label for="fourcolumn">Four</label>';
echo $html;