jquery 在WooCommerce管理单优惠券设置中的特定位置显示自定义复选框

42fyovps  于 2023-08-04  发布在  jQuery
关注(0)|答案(1)|浏览(103)

我在WooCommerce的优惠券单页中的使用限制选项卡中添加了一个新字段。新添加的字段显示在选项卡的底部。我希望它显示在排除产品字段之前。
我使用woocommerce_coupon_options_usage_restriction操作钩子添加新字段,并使用以下函数添加新复选框:

woocommerce_wp_checkbox(
[
  'id' => 'apply_cart_condition_for_customer_on_products',
  'label' => esc_html__( 'Product Cart Condition', 'hexcoupon' ),
  'description' => esc_html__( 'Check this box to to add a cart condition for the customer based on product.', 'hexcoupon' ),
  'value' => $apply_cart_condition_on_products,
]
);

字符串
因此,我希望在默认的排除产品字段之前使用此复选框。我找不到办法。我需要你的帮助。
我查看了woocommerce的文件'class-wc-meta-box-coupon-data.php',看看是否有任何线索。但我什么都没找到。

2admgd59

2admgd591#

下面在“产品”之后的“使用限制”部分的管理优惠券设置中添加了一个自定义复选框,并且在“排除产品”多选择字段之前,使用一点JavaScript/jQuery代码将其设置在正确的位置:

// Add a checkbox to admin single coupon setting in "Usage Restrictions" section
add_action('woocommerce_coupon_options_usage_restriction', 'add_coupon_custom_option_usage_restriction', 10, 2 );
function add_coupon_custom_option_usage_restriction( $coupon_id, $coupon ) {
    woocommerce_wp_checkbox( array(
        'id'            => 'apply_cart_condition',
        'label'         => esc_html__( 'Product Cart Condition', 'hexcoupon' ),
        'description'   => esc_html__( 'Check this box to to add a cart condition for the customer based on product.', 'hexcoupon' ),
        'wrapper_class' => 'cart-condition',
    ));
}

// Save the checkbox value
add_action( 'woocommerce_coupon_options_save', 'save_coupon_custom_option_usage_restriction', 10, 2 );
function save_coupon_custom_option_usage_restriction( $post_id, $coupon ) {
    $coupon->update_meta_data( 'apply_cart_condition', isset($_POST['apply_cart_condition']) ? 'yes' : 'no' );
    $coupon->save();
}

// Move the checkbox just after "products" field
add_action('admin_footer', 'apply_cart_condition_js');
function apply_cart_condition_js() {
    global $pagenow, $typenow;
    if ( in_array($pagenow, array('post-new.php', 'post.php')) && 'shop_coupon' === $typenow ) :
    ?>
    <script>
    jQuery(function($){
        const cartConditionCB = $('.cart-condition').prop("outerHTML");
        $('.cart-condition').remove();
        $('select[name^="product_ids"]').parent().after(cartConditionCB);
    });
    </script>
    <?php
    endif;
}

字符串
代码会在你的子主题的functions.php文件中(或者在插件中)。经过测试,工作正常。
您将获得:
x1c 0d1x的数据

相关问题