我有一个很长的发货方式列表,由于单选按钮中显示了发货方式,因此页面看起来很难看。有没有办法将其从单选按钮更改为下拉选项?
我试过换衣服
<ul id="shipping_method" class="woocommerce-shipping-methods">
<?php foreach ( $available_methods as $method ) : ?>
<li>
<?php
if ( 1 < count( $available_methods ) ) {
printf( \'<input type="radio" name="shipping_method[%1$d]" data-index="%1$d" id="shipping_method_%1$d_%2$s" value="%3$s" class="shipping_method" %4$s />\', $index, esc_attr( sanitize_title( $method->id ) ), esc_attr( $method->id ), checked( $method->id, $chosen_method, false ) ); // WPCS: XSS ok.
} else {
printf( \'<input type="hidden" name="shipping_method[%1$d]" data-index="%1$d" id="shipping_method_%1$d_%2$s" value="%3$s" class="shipping_method" />\', $index, esc_attr( sanitize_title( $method->id ) ), esc_attr( $method->id ) ); // WPCS: XSS ok.
}
printf( \'<label for="shipping_method_%1$s_%2$s">%3$s</label>\', $index, esc_attr( sanitize_title( $method->id ) ), wc_cart_totals_shipping_method_label( $method ) ); // WPCS: XSS ok.
do_action( \'woocommerce_after_shipping_rate\', $method, $index );
?>
</li>
<?php endforeach; ?>
</ul>
至
<select id="shipping_method" class="woocommerce-shipping-methods">
<?php foreach ( $available_methods as $method ) : ?>
<?php
if ( 1 < count( $available_methods ) ) {
printf( \'<option name="shipping_method[%1$d]" data-index="%1$d" id="shipping_method_%1$d_%2$s" value="%3$s" class="shipping_method" %4$s />%6$s</option>\', $index, esc_attr( sanitize_title( $method->id ) ), esc_attr( $method->id ), checked( $method->id, $chosen_method, false ), esc_attr( sanitize_title( $method->id ) ), wc_cart_totals_shipping_method_label( $method ) ); // WPCS: XSS ok.
} else {
printf( \'<input type="hidden" name="shipping_method[%1$d]" data-index="%1$d" id="shipping_method_%1$d_%2$s" value="%3$s" class="shipping_method" />\', $index, esc_attr( sanitize_title( $method->id ) ), esc_attr( $method->id ) ); // WPCS: XSS ok.
}
// printf( \'<label for="shipping_method_%1$s_%2$s">%3$s</label>\', $index, esc_attr( sanitize_title( $method->id ) ), wc_cart_totals_shipping_method_label( $method ) ); // WPCS: XSS ok.
do_action( \'woocommerce_after_shipping_rate\', $method, $index );
?>
<?php endforeach; ?>
</select>
在
woocommerce/cart/cart-shipping.php
但这似乎不起作用。
SO网友:Dark House Development
我相信你还没有找到答案,因为这几乎是1年前的一天,但对于任何像我这样在谷歌搜索中遇到这个问题的人来说,试图找到一个不需要使用其他插件的好解决方案,这里是可行的解决方案。
echo 1 < count( $available_methods ) ? \'<select id="shipping_method_0" data-index="0" name="shipping_method[0]" class="woocommerce-shipping-methods shipping_method">\' : \'\';
foreach ( $available_methods as $method ) :
if ( 1 < count( $available_methods ) ) {
printf( \'<option id="shipping_method_%1$d_%2$s" value="%3$s" %4$s >%5$s</option>\', $index, esc_attr( sanitize_title( $method->id ) ), esc_attr( $method->id ), ( $method->id == $chosen_method ? "selected" : "" ), wc_cart_totals_shipping_method_label( $method ) ); // WPCS: XSS ok.
} else {
printf( \'<input type="hidden" name="shipping_method[%1$d]" data-index="%1$d" id="shipping_method_%1$d_%2$s" value="%3$s" class="shipping_method" />\', $index, esc_attr( sanitize_title( $method->id ) ), esc_attr( $method->id ) ); // WPCS: XSS ok.
}
do_action( \'woocommerce_after_shipping_rate\', $method, $index );
endforeach;
echo 1 < count( $available_methods ) ? \'</select>\' : \'\';
在我的解决方案如何修复OP最初尝试的一些问题时,需要注意以下几点:
我只在有多个可用的装运方法的情况下添加主容器,否则,当代码尝试输出装运方法的隐藏字段时,这将创建HTML错误您需要将id、数据索引、名称和类应用于字段,以便所有计算都能正常工作,包括通过将0索引添加到名称中,将其标记为一系列选项(如收音机)中的第一个,数据索引和id。
您需要将checked()函数替换为一个简单的if语句,检查$selected\\u方法是否与当前的$方法匹配->;id,如果确实添加了选定属性我希望这对以后找到它的人有所帮助!