这有点奇怪。我正在构建一个小部件,用于浏览类型为product
并在管理面板中显示复选框列表,以显示/显示小部件中的产品。
除了checked()
函数不仅仅是添加checked=\'checked\'
但它也将其显示在页面上。下面是form
我的小部件部分:
function form( $instance ) {
$instance = wp_parse_args( (array) $instance, array( \'title\' => __(\'Featured Products\', \'pp\') ) );
$title = $instance[\'title\'];
$products = new WP_Query( array( \'post_type\' => \'product\', \'post_count\' => -1 ) );
?>
<p>
<label for="<?php echo $this->get_field_id(\'title\'); ?>">
<?php _e(\'Title:\', \'mp\') ?>
<input class="widefat" id="<?php echo $this->get_field_id(\'title\'); ?>" name="<?php echo $this->get_field_name(\'title\'); ?>" type="text" value="<?php echo attribute_escape($title); ?>" />
</label>
<?php while ($products->have_posts()) : $products->the_post(); $prod = get_the_id();?>
<?php
$sku = get_post_meta($prod, \'sku\', true);
$sku = $sku[0];
$$sku = isset($instance[$sku]) ? checked( (bool)$instance[$sku], true ) :false;
?>
<input type="checkbox" class="checkbox" <?php echo $$sku; ?> id="<?php echo $this->get_field_id($sku); ?>" name="<?php echo $this->get_field_name($sku); ?>" value="1" />
<label for="<?php echo $this->get_field_id($sku); ?>"><?php echo _e( the_title() ); ?></label><br />
<?php endwhile;
wp_reset_query();
?>
</p>
<?php
}
当您进入管理面板中的widgets元框时,选中并保存的项目显示为(请注意
[]
表示复选框本身):
checked=\'checked\'[] Product
以及相应的HTML:
checked=\'checked\'
<input type="checkbox" class="checkbox" checked="checked" id="widget-fsol_featured_products_widget-2-WM3987HW" name="widget-featured_product_widget[2][W8DIW2]" value="1">
<label for="widget-featured_product_widget-2-W8DIW2">W8DIW2</label>
我尝试了几种不同的“修复”,但都没有成功。有人有主意吗?