WPAlChemy-不保存复选框

时间:2012-11-28 作者:Jonathan Wold

我使用have\\u字段循环遍历数组并创建复选框列表。一切似乎都很正常,只是复选框在后端没有始终显示为“选中”。下面是我使用的代码:

<?php $items = array(
        \'bio\', 
        \'youtube\',
        \'articles\', 
        \'learn-more\', 
        \'testimonials\', 
        \'twitter\',
        \'custom\',
    ); ?>

    <p>
    <?php while ($mb->have_fields(\'t_enabled_widgets\', count($items))): ?>

        <?php $item = $items[$mb->get_the_index()]; ?>

        <input type="checkbox" name="<?php $mb->the_name(); ?>" value="<?php echo $item; ?>"<?php $mb->the_checkbox_state($item); ?>/> <?php echo ucwords(str_replace("-", " ", $item )); ?><br/>

    <?php endwhile; ?>
    </p>
例如,当我勾选前4个框(Bio、Youtube、Articles和Learn More)时,一切都很好。当我检查第5页时,它将保存到数据库中,但当页面重新加载时,它将被取消选中。这显然是一个问题,因为当您再次“更新”页面时,它将作为空白值提交。

有什么想法吗?

1 个回复
最合适的回答,由SO网友:Jonathan Wold 整理而成

在进一步搜索之后,我决定尝试复选框meta中列出的一种替代方法。php示例文件。我使用了“foreach”循环而不是“while”循环,现在复选框状态正在正确加载。

以下是更新的代码:

<?php foreach ($items as $i => $item): ?>

    <?php $mb->the_field(\'t_enabled_widgets\', WPALCHEMY_FIELD_HINT_CHECKBOX_MULTI); ?>

    <input type="checkbox" name="<?php $mb->the_name(); ?>" value="<?php echo $item; ?>"<?php $mb->the_checkbox_state($item); ?>/>
    <span><?php echo ucwords(str_replace("-", " ", $item )); ?></span>

<?php endforeach; ?>

结束