首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WooCommerce上不允许在全局上(也在管理中)回订产品选项

在WooCommerce上不允许在全局上(也在管理中)回订产品选项
EN

Stack Overflow用户
提问于 2021-03-31 09:20:29
回答 1查看 422关注 0票数 2

我有一个关于如何在WooCommerce中全局禁用备份的问题。我在这里发现了这个:

How to disable globally backorders in WooCommerce

https://wordpress.stackexchange.com/questions/334083/woocommerce-is-it-possible-to-overide-the-settings-for-allowing-to-purchase-out

我现在用add_filter( 'woocommerce_product_backorders_allowed', '__return_false' );。但仍有可能将该选项设置为允许的。所以我的问题是,如果我把一个产品设置为“允许的回车”,那么这个片段是活动的。保存产品后,“允许的回序”是可见的。但是,即使选择了“允许的”,也不可能只显示东西和后台的东西吗?

如果没有办法改变这个设置,那就太好了。也许是编辑产品概览中的灰色选项?

有什么可能吗?

干杯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-31 13:28:44

您可以使用以下方法禁用管理产品单页上的后台设置(也可以处理产品变化)

代码语言:javascript
复制
add_action( 'admin_footer', 'disable_backorder_option_from_product_settings' );
function disable_backorder_option_from_product_settings() {
    global $pagenow, $post_type;

    if( in_array( $pagenow,  array('post-new.php', 'post.php') ) && $post_type === 'product' ) :
    ?>
    <script>
    jQuery(function($){
        // For product variations
        $('#variable_product_options').on('change', function(){
            $('select[name^=variable_backorders]').each( function(){
                $(this).prop('disabled','disabled').val('no');
            });
        });
        // For all other product types
        $('select#_backorders').prop('disabled','disabled').val('no');
    });
    </script>
    <?php
    endif;
}

对于前端,您将额外使用(如果仍然有一些旧产品启用了backorder选项)

代码语言:javascript
复制
add_filter( 'woocommerce_product_backorders_allowed', '__return_false', 1000 );
add_filter( 'woocommerce_product_backorders_require_notification', '__return_false', 1000 );

add_filter( 'woocommerce_product_get_backorders', 'get_backorders_return_no' );
add_filter( 'woocommerce_product_variation_get_backorders', 'get_backorders_return_no' );
function get_backorders_return_no( $backorders ){
    return 'no';
}

add_filter( 'woocommerce_product_get_stock_status', 'filter_product_stock_status', 10, 2 );
add_filter( 'woocommerce_product_variation_get_stock_status', 'filter_product_stock_status', 10, 2 );
function filter_product_stock_status( $stock_status, $product ){
    return $product->get_manage_stock() && $product->get_stock_quantity() <= 0 ? 'outofstock' : $stock_status;
}

代码位于活动子主题(或活动主题)的functions.php文件中。测试和工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66884911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档