稼働中

第64回 初心者がワードプレスの独学を続ける。 ラジオボタンの値を保持する checked

ラジオボタンの値を保持

ラジオボタンを選択して送信するとクリアされてしまうようです。ラジオボタンの保持を検討したので記載します。

PHPを作成して、そのショートコードをワードプレスの固定ページに貼り付けてテストしました。その方法は第61回のPHPの学習で「ワードプレスの固定ページ画面に出力」を参考にしてください。素人のやり方です。作成の経緯を記載します。

ラジオボタンのフォーム

ワードプレスの固定ページの編集で、以下のラジオボタンのデータを送信するフォームを作成してみました。

ラジオボタン

<form method=”post”>
<input name=”radio_data” type=”radio” value=”A” /> Aを選択
<input name=”radio_data” type=”radio” value=”B” /> Bを選択
<input name=”radio_data” type=”radio” value=”C” /> Cを選択
<input name=”submit” type=”submit” value=”送信する” /></form>

表示すると以下のようになりました。

ラジオボタン表示

Aを選択して送信するをクリックすると、以下のようにラジオボタンがクリアされてしまいす。

ラジオ選択が消える

PHPファイルを作成する

先ず、ファイル名「a_radio.php」に先と同じフォームを貼り付けました。

PHPファイルにラジオフォーム

第61回のphpをショートコードで読み込む方法を使います。[myphp file=’a_radio’]を固定ページに貼り付け表示します。横並びでやや表示状態は違います。

PHPファイルを読み込む

とりあえず「送信する」をクリックした時のデータを表示してみます。$_POST[‘radio_data’]を表示させます。
「a_radio.php」に
echo “POST = “.($_POST[‘radio_data’]); echo “<br>”;
を追記します。

$_POSTを表示

プレビューで表示します。

プレビュー表示

次に、Aを選択して送信して見ます。
送信したのでラジオボタンはクリアしていますが「$_POST[‘radio_data’]」の中身は「A」になったようです。

A になった

ラジオボタンの初期値を設定する場合、例えば「A」を初期値にする場合には「checked=”checked”」を足せば良いようです。
<input name=”radio_data” type=”radio” value=”A” checked=”checked” > Aを選択

checked

表示させると「A」が選択されています。

A が表示

checked関数を使う

ここをヒントに調べて見ると、ワードプレス関数に
checked( mixed $checked, mixed $current = true, bool $echo = true )
がありました。「https://elearn.jp/wpman/function/checked.html」が参考になりました。

checked(調べる変数または条件,比較する値, 表示の有無 )のような感じです。

以下を追記して確認して見ます。
checked( $_POST[‘radio_data’], “A”, true );echo “<br>”;

checked追記

表示(再読込)して見ます。$_POST[‘radio_data’]が 「A」と同じなので「checked=”checked”」の文字が出力されています。

checked="checked"が表示

先に挿入して書いた部分を
<?php checked( $_POST[‘radio_data’], “A”, true ) ?>
に差し替えて見ます。フォームタグ内で動作させるので <?php ?> で囲むようです。

タグ内で動作

表示(再読込)させて見ます。上手く行った感じです。「Bを選択>送信」ラジオボタンの見た目はクリアされます。次に「Aを選択>送信」して見ました。ラジオボタンは「A」になったまま保持できています。大丈夫なようです。

動作を表示確認

このままでも良いような気がしますが
$chk_a = checked( $_POST[‘radio_data’], “A”, false );
にして、$_POST[‘radio_data’]が「A」なら$chk_aに「checked=”checked”」が代入されるようにして見ます。

変数に代入

表示させます。上手く代入されているようです。

動作確認

フォームタグ内のPHP部を<?php echo $chk_a ; ?> に差し替えれば良さそうです。
表示確認しました。上手く行ったようです。

差し替え

B、Cの部分を追加して、「a_radio.php」は以下のようにしました。

B、C部を追加

表示確認します。「B」を送信した状態です。大丈夫なようです。

Bを送信後

不要な画面出力部をコメントアウトした「a_radio.php」を以下に載せておきます。
a_radio.php
<?php
/* [myphp file=’a_radio’] */
//echo “POST = “.($_POST[‘radio_data’]); echo “<br>”;
//checked( $_POST[‘radio_data’], “A”, true );echo “<br>”;
$chk_a = checked( $_POST[‘radio_data’], “A”, false );
$chk_b = checked( $_POST[‘radio_data’], “B”, false );
$chk_c = checked( $_POST[‘radio_data’], “C”, false );
//echo “chk_a = “.$chk_a; echo “<br>”;
//echo “chk_b = “.$chk_b; echo “<br>”;
//echo “chk_c = “.$chk_c; echo “<br>”;
?>

<form method=”post”>
<input name=”radio_data” type=”radio” value=”A” <?php echo $chk_a ; ?> > Aを選択
<input name=”radio_data” type=”radio” value=”B” <?php echo $chk_b ; ?> > Bを選択
<input name=”radio_data” type=”radio” value=”C” <?php echo $chk_c ; ?> > Cを選択
<input name=”submit” type=”submit” value=”送信する” /></form>

まとめ

ラジオボタンの値を保持させるため、checkedを使ったPHPファイルを作成しました。ワードプレスの固定ページにショートコードで読み込み動作確認をしました。ラジオボタン値の保持が出来ていると思います。
※動作の確認はLocal(Local by Flywheel)で構築したローカル(パソコン)環境で行っています。