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

时间:2017-02-11 12:42:51

标签: php jquery css wordpress woocommerce

借助WooCommerce,我使用供应商插件,允许人们上传自己的产品。

但是我只希望他们上传虚拟和可下载的产品。

有没有办法在普通的woocommerce上删除(甚至隐藏)这些选项"添加产品页面"并自动检查他们?

在我审核所有提交内容时,不需要无法规避 - 只是想让提交过程尽可能简单。

由于

2 个答案:

答案 0 :(得分:4)

  

对于虚拟产品,只能看到最后的更新

这是可能的但很安静,很长且很复杂,无法测试和解释......您必须通过2种方式,特定用户角色或其用户角色的特定功能来定位这些用户。

然后可以用注入的CSS隐藏一些设置,并使用javascript / jQuery来设置这个隐藏的设置......

  

在下面的工作示例中,我使用jQuery启用了 'virtual' 'downloadable' 设置cheeckboxes,我将它们隐藏起来主要使用不透明度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
    }

}

代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。

  

您必须使用特定目标用户角色替换“管理员”用户角色   您必须将不透明度设置为0,才能完全隐藏该复选框。

经过测试和工作

添加对于许多用户角色:

1)替换此行:

$targeted_user_role = 'administrator';

......按此行:

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

2)并替换这一行:

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

......按此行:

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

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

默认情况下设置VIRTUAL选项(并隐藏它):

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

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'
    <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
}

代码进入活动子主题(或主题)的function.php文件或任何插件文件。经过测试和工作。

答案 1 :(得分:0)

使用此简单解决方案

import numpy as np
import cv2
import matplotlib.pyplot as plt


img = cv2.imread('dente6.jpg',0)
plt.imshow(img,cmap='gray')

dft = cv2.dft(np.float32(img), flags=cv2.DFT_COMPLEX_OUTPUT)
fshift = np.fft.fftshift(dft)

magnitude_spectrum = 20*np.log(cv2.magnitude(fshift[:,:,0],fshift[:,:,1]))
plt.imshow(magnitude_spectrum,cmap='gray')

for i in range(fshift.shape[0]):
 for j in range(fshift.shape[1]):
     x = magnitude_spectrum[i][j]
     if x < 200:
         fshift[i][j] = 0

magnitude_spectrum = 20*np.log(cv2.magnitude(fshift[:,:,0],fshift[:,:,1]))
plt.imshow(magnitude_spectrum,cmap='gray')

ifshift= np.fft.ifftshift(fshift)
img_back = cv2.idft(ifshift)
img_back = cv2.magnitude(img_back[:,:,0],img_back[:,:,1])
plt.imshow(img_back,cmap='gray')