woocommerce条件产品/用户角色类别

时间:2015-06-09 22:27:50

标签: wordpress wordpress-plugin woocommerce

寻找可帮助我根据角色限制woocommerce产品或产品类别的插件。

假设我只想向整个销售买家销售散装产品。

任何帮助都很棒,谢谢!

3 个答案:

答案 0 :(得分:0)

要实现此目的,您可以使用Free Groups插件。但为此,您必须将所有批发商添加到一个组说批发组1.然后在编辑任何产品时,您可以选择访问,在那里添加批发商组1。该产品现在只能由批发商组1中的用户看到。

答案 1 :(得分:0)

以下是我根据角色隐藏产品的方法:

首先,我在产品选项清单部分添加了一个复选框,以便管理员根据选择隐藏产品:

add_action( 'woocommerce_product_options_stock_status', 'hide_if_available_to_user_role' );

function hide_if_available_to_user_role(){
    woocommerce_wp_checkbox( array( 'id' => '_hide_from_users', 'wrapper_class' => 'show_if_simple show_if_variable', 'label' => __( 'Hide this product from specific roles?', 'customhideplugin' ) ) );
}

然后,当帖子更新时,我将此选项保存在实际帖子中。

add_action( 'woocommerce_process_product_meta', 'hide_save_product_meta' );

function hide_save_product_meta( $post_id ){
    if( isset( $_POST['_hide_from_users'] ) ) {
        update_post_meta( $post_id, '_hide_from_users', 'yes' );
    } else {
        delete_post_meta( $post_id, '_hide_from_users' );
    }
}

这就是我获得当前用户角色的方式。

function getCurrentUserRole( $user = null ) {
    $user = $user ? new WP_User( $user ) : wp_get_current_user();
    return $user->roles ? $user->roles[0] : false;
}

现在查询产品。如果当前用户角色与以下角色匹配,则照常显示产品。 否则,请根据上面的代码设置查询...

add_action( 'woocommerce_product_query', 'hide_product_query' );

function hide_product_query( $q ){

  if((getCurrentUserRole() == 'editor' ) || (getCurrentUserRole() == 'administrator' )){

return false;
} else  {


$meta_query = $q->get( 'meta_query' );

    if ( get_option( 'woocommerce_hide_out_of_stock_items' ) == 'no' ) {
        $meta_query[] = array(
                    'key'       => '_hide_from_users',
                    'compare'   => 'NOT EXISTS'
                );
    }

    $q->set( 'meta_query', $meta_query );

}


}

答案 2 :(得分:0)

我尝试了几种不同的插件来实现这一目标。我最终选择了这个,因为它易于理解并且可以根据产品,标签,类别和自定义分类法显示/隐藏。 WooCommerce Products Visibility