我有一个基于 wordpress 的网站。我需要允许人们从前端创建帖子,所以我制作了一个效果很好的多部分表单。表格分为三个部分,表格的每个部分都经过验证,然后再转到下一部分。数据通过隐藏输入传递到另一个页面。
我的表单模板看起来有点像这样(完整的代码在这里非常庞大且无关紧要,因此仅显示相关部分),我希望这足以让您了解表单的工作原理。
多部分表单 WP-模板示例代码:
<?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 表单代码位于表单的最后/第三部分时,这一切都很好。但是当相同的复选框字段位于表单的第二部分时,它确实有效。我猜它根本不会将所选复选框的数组值传递给第三部分。Print_r 显示一个空数组,显然也没有在 single.php 中显示任何内容。虽然我知道问题只是选定的复选框值的数组,没有被正确地带到第三部分,但我需要帮助,因为我对这一切都不熟悉。
所以最重要的问题是如何在第二部分保存所选复选框值的数组并将其带到第三部分,最后将其分配给一个变量,该变量将保存数组值。可以使用上面的代码在帖子中显示的内容。
尝试的事情:我在这里查看了这个线程,我很困惑我将在哪里插入我的复选框字段,甚至不确定它是否适用于我的情况。我已经能够使用类似这样的东西将其他文本输入值从一个部分传递到另一部分:
<input type="hidden" name="eligible" value="<?php echo $eligible;?>" />
所以,我尝试使用name="workareas[]"
但没有奏效。我正在为我正在尝试的所有事情做 print_r() ,直到现在才得到空数组。我仍在通过大量其他线程寻找可能的提示。同时,如果您能提供帮助,那就太好了。提前致谢。
更新:已解决,请检查答案。