前提・実現したいこと
WordPressのテーマを作っているのですが、管理画面のチェックボックスが、チェックをしてupdate_optionをしても、ページを再読み込みしたときにチェックが外れている。
「値が保存されてるか出力」では、チェックしてsubmitしたときの値が正常に反映されているので、保存されているとは思うのですが、再読み込みしたときにチェックが外れるので、チェックがついてsubmitしたものは、ページを再読み込みしてもチェック済の状態で表示させたいです。
コメントアウト$_POST['twitter']出力においては、チェックして送信した時は1が、チェックなしで送信した時は空でした。
コメントアウト値が保存されてるか出力においては、チェックして送信した時は1が、チェックなしの時は0が出力されました。
該当のソースコード
PHP
1<?php 2if (isset($_POST['twitter'])) { update_option('twitter', $_POST['twitter']);} 3$twitter = isset($_POST['twitter']) ? 1 : 0; 4update_option('twitter', $twitter); 5//$_POST['twitter']出力 6echo $_POST['twitter']; 7?> 8<form method="post" action="admin.php?page=wptb_theme_admin"> 9<label for="twitter"><input type="checkbox" name="twitter" id="twitter" value="1" <?php checked( get_option('twitter'), 1); ?>>twitter</label> 10<p class="submit"><input type="submit" name="submit" id="submit" class="button-primary" value="変更を保存"></p> 11</form> 12<?php 13echo esc_attr(get_option('twitter')); 14//値が保存されてるか出力 15$twitter = get_option( 'twitter' );
参考サイト
https://pico-cre.com/wp-memo/post-1569/
試したこと
値は保存されているが、再読み込みしたときに、0(未チェック)が書き込まれてる可能性を考え、<form>の前にget_option('twitter')の中身が0か1でifで分岐して、update_optionもしてみましたが、それだと、チェックを外してページを再読み込みしても、ずっと有効(チェック済み)状態になってしまいます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/29 01:01