我工作的机构正试图让客户的网站自动选择其产品维护包的第一个选项。
目前,我们正在使用if
a中的语句foreach
.
下面的代码是我们当前使用的脚本:
<?php foreach ( $addon[\'options\'] as $i => $option ) :
$price = $option[\'price\'] > 0 ? \'(\' . wc_price( get_product_addon_price_for_display( $option[\'price\'] ) ) . \')\' : \'\';
$current_value = 0;
if ( isset( $_POST[ \'addon-\' . sanitize_title( $addon[\'field-name\'] ) ] ) ) {
$current_value = (
isset( $_POST[ \'addon-\' . sanitize_title( $addon[\'field-name\'] ) ] ) &&
in_array( sanitize_title( $option[\'label\'] ), $_POST[ \'addon-\' . sanitize_title( $addon[\'field-name\'] ) ] )
) ? 1 : 0;
}
?>
<p class="form-row form-row-wide addon-wrap-<?php echo sanitize_title( $addon[\'field-name\'] ) . \'-\' . $i; ?>">
<label><input type="radio" class="addon addon-radio" name="addon-<?php echo sanitize_title( $addon[\'field-name\'] ); ?>[]" data-raw-price="<?php echo esc_attr( $option[\'price\'] ); ?>" data-price="<?php echo get_product_addon_price_for_display( $option[\'price\'] ); ?>" value="<?php echo sanitize_title( $option[\'label\'] ); ?>" <?php checked( $current_value, 1 ); ?> /> <?php echo wptexturize( $option[\'label\'] . \' \' . $price ); ?></label>
</p>
<?php endforeach; ?>
上面的代码目前没有选择任何单选按钮,但如果我们更改
<?php echo sanitize_title( $option[\'label\'] ); ?>" <?php checked( $current_value, 1 ); ?>
至
<?php echo sanitize_title( $option[\'label\'] ); ?>" <?php checked( $current_value, 0 ); ?>
选择了最终无线电台点。
唯一的问题是,我们必须手动更改每一个产品,并将选项“无”移到列表的末尾,因为它目前是所有产品的第一个选项。
上面的代码有没有办法自动选择第一个选项而不是最后一个?第一个选项的名称为:addon-2491-maintenance-packages-0
?
非常感谢您的帮助。
SO网友:Tim Malone
这张表格只填写一次吗?或者可以将用户发送回it,让it知道他们已经选择了什么?
如果是前者,选择你想要的选项就不太难了。
您只需更换此:
<?php checked( $current_value, 1 ); ?>
使用此选项:
<?php checked( \'2491-maintenance-packages-0\', sanitize_title( $option[\'label\'] ) ); ?>
The
checked()
function 只返回HTML
checked=\'checked\'
当发送给它的两个值匹配时,从而指示浏览器预先选中该选项。它通常不用于预先检查默认选项,而是用于确保当用户访问选项页面时,数据库中当前设置的任何选项都被选中。WordPress\'
checked()
因此,功能很简单
syntactic sugar 为了节省您在代码中填充
if
声明。
使用时仅选择最后一个选项的原因$current_value, 0
很可能是因为每个选项都是以未选中的形式出现的,因此$current_value
始终等于0,因此每个选项都被选中。。。由于一次只能选择一个单选选项,最后一个选项最终会覆盖所有其他选项。
现在,需要注意的是,这里的流程不一定是直观的。我不知道你网站的其他部分是如何工作的,但正如我在回答的顶部所暗示的那样,如果用户需要进入这个页面,并且已经预先检查了他们所选择的内容,那么你需要修改你的流程。否则,保存此表单后,他们自己的设置将被您的“默认选项”覆盖。