这可能是一个非常标准的事情。我只是无法为我的生活做出如何去做。我检查了各种其他编码类似的东西,但大多数似乎以不同于我的方式做事,我不太明白。
基本上我正在创建一个简单的自定义小部件。它从帖子类型中提取所有帖子并将其显示为复选框。我需要保存选中的帖子,然后将其作为一个数组传递,以便我可以显示所选的帖子。
要以我拥有的格式显示复选框:
$postcount5 = 0; $featured_query5 = new WP_Query('showposts=5&post_type=adverts');
while ($featured_query5->have_posts()) : $featured_query5->the_post();
$do_not_duplicate[] = get_the_ID();$postcount5++;
$currentid5 = get_the_ID();
echo '<p><label><input type="checkbox" name="adverts" value="';
the_id();
echo'" ';
if ( $currentid5 == $adboxid ) echo 'checked="yes"';
echo '/> ';
the_title();
echo' </label><br/></p>';
一旦我设法保存它们我应该没事。我只是无法弄清楚如何保存动态创建的复选框列表。提前谢谢。
答案 0 :(得分:0)
代码实际上即使不是动态的也不会起作用。 您需要做的是重命名复选框的名称,否则只能访问最后一个值。例如。你可以这样做:
$postcount5 = 0;
$featured_query5 = new WP_Query('showposts=5&post_type=adverts');
while ($featured_query5->have_posts()) : $featured_query5->the_post();
$do_not_duplicate[] = get_the_ID();
$postcount5++;
$currentid5 = get_the_ID();
echo '<p><label><input type="checkbox" name="adverts'.$postcount5.'" value="'.$the_id().'";
if ( $currentid5 == $adboxid ) echo 'checked="yes"';
echo '/> ';
the_title();
echo' </label><br/></p>';
要最终得到这些值,你需要一个提交按钮并将整个事物包装成一个带有'action'元素的集合,如:
<form name="postselector" action="whereever_you_want_the_user_to_go_next.php">
INSERT HERE ALL THE INPUT CHECKBOXES
AND THE SUBMIT BUTTON
</form>
在whereever_you_want_the_user_to_go_next.php中,您最终可以通过以下方式阅读所选项目:
if (isset($_POST['submit'])) {
$selectedposts = array();
$i = 0;
foreach($_POST as $name => $value) {
if (preg_match('adverts',$name) {
$selectedposts[$i] = $value;
$i++;
}
}
}