Wordpress自定义小组件 - 保存从自定义帖子类型创建的复选框列表

时间:2011-09-28 16:02:54

标签: php wordpress widget checkbox

这可能是一个非常标准的事情。我只是无法为我的生活做出如何去做。我检查了各种其他编码类似的东西,但大多数似乎以不同于我的方式做事,我不太明白。

基本上我正在创建一个简单的自定义小部件。它从帖子类型中提取所有帖子并将其显示为复选框。我需要保存选中的帖子,然后将其作为一个数组传递,以便我可以显示所选的帖子。

要以我拥有的格式显示复选框:

$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>';

一旦我设法保存它们我应该没事。我只是无法弄清楚如何保存动态创建的复选框列表。提前谢谢。

1 个答案:

答案 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++;
      }
   }
}