自动启用虚拟和可下载的产品设置

t98cgbkg  于 2022-10-24  发布在  WordPress
关注(0)|答案(3)|浏览(143)

在WooCommerce上,我使用的是一个供应商插件,允许人们上传自己的产品。
然而,我只希望他们上传虚拟和可下载的产品。
有没有办法在WooCommerce正常的“添加产品页面”中删除(甚至隐藏)这些选项,并自动选中它们?
不需要是不可能的规避,因为我审查所有提交-只想让提交过程尽可能容易。
谢谢

yqlxgs2m

yqlxgs2m1#

使用这个简单的解决方案

add_filter( 'product_type_options', 'autocheck_vd');

function autocheck_vd( $arr ){
    $arr['virtual']     ['default'] = "yes"; 
    $arr['downloadable']['default'] = "yes"; 
    return $arr;
}
o0lyfsai

o0lyfsai2#

仅对于虚拟产品,请参阅末尾的更新
这是可能的,但测试和解释很长时间,而且很复杂。您必须通过两种方式将此用户作为目标,即特定的用户角色或其用户角色的特定功能。
然后有可能用注入的css来隐藏一些设置,并使用javascript/jQuery来设置这些隐藏设置……
在下面的工作示例中,我使用jQuery启用了**'virtual''downloadable'设置CheckBox,并使用不透明css规则…完全隐藏了它们
我使用
woocommerce_product_options_general_product_data**操作钩子中挂接的自定义函数,这样:

add_action( 'woocommerce_product_options_general_product_data', 'hiding_and_set_product_settings' );
function hiding_and_set_product_settings(){

    ## ==> Set HERE your targeted user role:
    $targeted_user_role = 'administrator';

    // Getting the current user object
    $user = wp_get_current_user();
    // getting the roles of current user
    $user_roles = $user->roles;

    if ( in_array($targeted_user_role, $user_roles) ){

        ## CSS RULES ## (change the opacity to 0 after testing)
        // HERE Goes OUR CSS To hide 'virtual' and 'downloadable' checkboxes
        ?>
        <style>
            label[for="_virtual"], label[for="_downloadable"]{ opacity: 0.2; /* opacity: 0; */ }
        </style>
        <?php

        ## JQUERY SCRIPT ##
        // Here we set as selected the 'virtual' and 'downloadable' checkboxes
        ?>

        <script>
            (function($){
                $('input[name=_virtual]').prop('checked', true);
                $('input[name=_downloadable]').prop('checked', true);
            })(jQuery);
        </script>

        <?php
    }

}

代码放在活动子主题(或主题)的unction.php文件中,也可以放在任何插件文件中。
您必须使用您的特定目标用户角色来替换“管理员”用户角色。
您必须将不透明度设置为0,才能完全隐藏该复选框。
测试和工作

新增多个用户角色:

1.替换此行:
$TARGET_USER_ROLE=‘管理员’;
…在这条线上:

$targeted_user_roles = array( 'administrator', 'shop_manager' );

1.并同时替换此行:
IF(In_ARRAY($TARGET_USER_ROLE,$USER_ROLES)){
…在这条线上:

if ( array_intersect( $targeted_user_roles, $user_roles ) ){

现在,代码将适用于许多用户定义的用户角色

默认设置虚拟选项(并隐藏):

要隐藏并默认设置虚拟选项,您将使用:

add_action( 'woocommerce_product_options_general_product_data', 'hide_and_enable_virtual_by_default' );
function hide_and_enable_virtual_by_default(){
    ?>
    ## HERE Goes OUR CSS To hide 'virtual & downloadable'
    <style>
        label[for="_virtual"], label[for="_downloadable"]{ opacity: 0; }
    </style>
    <?php
    ## JQUERY SCRIPT ##
    // Here we set as selected the 'virtual' checkboxes by default
    ?>
    <script>
        (function($){
            $('input[name=_virtual]').prop('checked', true);
        })(jQuery);
    </script>
    <?php
}

代码放在活动子主题(或主题)的unction.php文件中,也可以放在任何插件文件中。经过测试,效果良好。

frebpwbc

frebpwbc3#

编辑wp-content\plugins\dokan-lite\templates\products\download-virtual.php文件以启用虚拟和可下载产品复选框。
它将如下所示:

<div class="dokan-form-group dokan-product-type-container <?php echo esc_attr( $class ); ?>">
<div class="content-half-part downloadable-checkbox">
    <label>
        <input type="checkbox" checked class="_is_downloadable" name="_downloadable" id="_downloadable"> <?php esc_html_e( 'Downloadable', 'dokan-lite' ); ?> <i class="fa fa-question-circle tips" aria-hidden="true" data-title="<?php esc_attr_e( 'Downloadable products give access to a file upon purchase.', 'dokan-lite' ); ?>"></i>
    </label>
</div>
<div class="content-half-part virtual-checkbox">
    <label>
        <input type="checkbox" checked class="_is_virtual" name="_virtual" id="_virtual"> <?php esc_html_e( 'Virtual', 'dokan-lite' ); ?> <i class="fa fa-question-circle tips" aria-hidden="true" data-title="<?php esc_attr_e( 'Virtual products are intangible and aren\'t shipped.', 'dokan-lite' ); ?>"></i>
    </label>
</div>
<div class="dokan-clearfix"></div>

要隐藏这些选项,您可以使用带有“!Important”的css来覆盖此元素的内联css。将此文件添加到任何链接的css文件:

.dokan-product-type-container{
        display:none !important;
    }

相关问题