0

私が開発している 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;
4

1 に答える 1

1

非表示の入力nameは、name値が一定であり、以前の入力の値を同じname.

if(get_option( 'display_style' ) == 2){
$disabled = 'disabled';
}
$html .= '<input type="hidden" name="card_columns" value="1" />'; 
$html = '<input type="radio" id="onecolumn" class="cardchecked" name="card_columns" value="1"' . checked( 1, get_option( 'card_columns' ), false ) . $disabled . '/>';    
$html .= '<label for="onecolumn">One</label>';  
...

非表示の入力フィールドの値を JavaScript で設定する必要があります。ラジオの上部に非表示の入力を 1 つだけ配置すると、ラジオ ボタンが無効になっている場合は非表示の入力の値が送信されますが、ラジオ ボタンが有効になっている場合は、非表示の入力の値が上書きされます。

于 2013-09-17T01:36:22.313 に答える