wordpressベースのサイトを持っています。人々がフロントエンドから投稿を作成できるようにする必要があるため、非常にうまく機能するマルチパート フォームを作成しました。フォームには 3 つの部分があり、フォームの各部分は次の部分に移動する前に検証されます。データは非表示の入力を介して別のページに渡されます。
私のフォーム テンプレートはこのように見えます (完全なコードはかなり大規模で、ここでは無関係なので、関連する部分だけを表示するだけです)。フォームがどのように機能するかを理解するには、これで十分だと思います。
マルチパート フォーム WP-TEMPLATE サンプル コード :
<?php
global $wpdb;
$this_page = $_SERVER['REQUEST_URI'];
$page = $_POST['page'];
if ( $page == NULL ) { ?>
<?php include_once('multiparts/form-files/first_part.php'); ?>
<?php } else if ( $page == 1 ) { ?>
<?php include_once('multiparts/validation/validate_first_part.php');
if (isset($_POST['submit-1']) && (!empty($error))) { ?>
<div class="error-head">Cannot continue registration. Error/s highlighted below.</div><br/>
<?php echo $error . '</br>'; ?>
<?php } else {
include_once('multiparts/form-files/second_part.php');
}
?>
<?php
} else if ( $page == 2 ) { ?>
//SO ON AND SO FORTH
<?php
}
?>
最近、作成された投稿で選択されたチェックボックスの値を表示する目的で、フォームにいくつかのチェックボックスフィールドを追加しました。ここに、私が現在使用している関連する HTML フォーム コードを示します。
<fieldset class="work-areas">
<label for="areas" class="label">INTERESTED IN :</label></br>
<div class="work-class">
<input type="checkbox" name="workareas[]" value="administration"/>administration</br>
<input type="checkbox" name="workareas[]" value="technical"/>technical</br>
<input type="checkbox" name="workareas[]" value="creative"/>creative</br>
<input type="checkbox" name="workareas[]" value="fieldwork"/>fieldwork</br>
<input type="checkbox" name="workareas[]" value="marketing"/>marketing</br>
</div>
</fieldset>
このコードを使用して、他のカスタム フィールドと同じように、これらのチェックボックスの値を投稿に挿入しますadd_post_meta($pid, 'areas', $workareas, true );
。処理部分では、 meta_key が割り当てられますareas
。以下のコードでsingle.phpに表示します:
<?php $areas = get_post_meta($post->ID, 'areas', true); ?>
<?php if (is_array($areas)) : ?>
<h4>INTERESTED AREAS OF WORK:</h4>
<?php if (is_array($areas)) {
foreach($areas as $area) {
echo '<li>'.$area.'</li>';
}
}
?>
<?php endif;?>
問題: 上記のチェックボックス用の HTML フォーム コードがフォームの最後の部分または 3 番目の部分にある場合、これはすべてうまく機能します。ただし、同じチェックボックス フィールドがフォームの 2 番目の部分にある場合は機能します。選択したチェックボックスの配列値を3番目の部分に渡さないだけだと思います。Print_r は空の配列を表示し、明らかに single.php にも何も表示しません。問題は選択されたチェックボックスの値の配列だけであり、3番目の部分に適切に運ばれていないことを理解していますが、私はこれらすべてに慣れていないので助けが必要です.
したがって、肝心な問題は、選択したチェックボックスの値の配列を2番目の部分に保存し、それを3番目の部分に運び、最終的に配列値を保持する変数に割り当てる方法です。上記のコードを使用してポストに表示できるもの。
試したこと:私はこのスレッドをここで調べましたが、チェックボックスフィールドをどこに挿入するか混乱しており、それが私の状況に当てはまるかどうかさえわかりません. 次のようなものを使用して、 from のある部分から別の部分に他のテキスト入力値を渡すことができました。
<input type="hidden" name="eligible" value="<?php echo $eligible;?>" />
ということで、使ってみname="workareas[]"
ましたがダメでした。私がしようとしているすべてのものに対して print_r() を実行していますが、今までは空の配列しか取得していません。可能性のあるヒントを探して、まだたくさんの他のスレッドを調べています。その間、あなたが助けることができれば、それは素晴らしいことです. 前もって感謝します。
更新: 解決しました。回答を確認してください。