【发布时间】:2021-04-26 18:01:37
【问题描述】:
在我的functions.php 中,我试图在我的产品变体的下拉菜单中添加一条已售罄的消息。例如,如果我的衬衫有小号、中号和大号的款式,而大号的缺货,在下拉菜单中,用户应该会看到大号选项被禁用,并且在“大号”旁边包含一条售罄消息。其他变体应保持活动状态。
我在下面的代码中遇到的问题如下:
- 注释的代码,这会禁用正确的缺货产品变体,但不会添加已售罄消息。
- 活动代码确实添加了售罄消息,但它会禁用所有产品变体,即使它只有一个变体缺货。
如何修复代码以执行我需要它执行的操作?
/**
* Disable out of stock variations
* https://github.com/woocommerce/woocommerce/blob/826af31e1e3b6e8e5fc3c1004cc517c5c5ec25b1/includes/class-wc-product-variation.php
* @return Boolean
*/
// function wcbv_variation_is_active( $active, $variation ) {
// if( ! $variation->is_in_stock() ) {
// return false;
// }
// return $active;
// }
// add_filter( 'woocommerce_variation_is_active', 'wcbv_variation_is_active', 10, 2 );
add_action( 'woocommerce_variation_is_active', 'woocommerce_sold_out_dropdown' );
function woocommerce_sold_out_dropdown() {
?>
<script type="text/javascript">
jQuery( document ).bind( 'woocommerce_update_variation_values', function() {
jQuery( '.variations select option' ).each( function( index, el ) {
var sold_out = '<?php _e( 'sold out', 'woocommerce' ); ?>';
var re = new RegExp( ' - ' + sold_out + '$' );
el = jQuery( el );
if ( el.is( ':disabled' ) ) {
if ( ! el.html().match( re ) ) el.html( el.html() + ' - ' + sold_out );
} else {
if ( el.html().match( re ) ) el.html( el.html().replace( re,'' ) );
}
} );
} );
</script>
<?php
}
【问题讨论】:
标签: javascript php jquery wordpress woocommerce