• Resolved waffle21

    (@waffle21)


    I created a product that was only available to a members user role, but any one can view and purchase the product that should only be available to a specific user role

    The page I need help with: [log in to see the link]

Viewing 1 replies (of 1 total)
  • Plugin Author Caseproof LLC

    (@caseproof)

    Hi @waffle21

    The Members plugin doesn’t fully protect a product on the frontend. It currently only protects post content. WooCommerce templates show post content (which is protected), but it shows a lot more, such as price, short description, etc., which is usually post meta.
    That’s being said, here’s a snippet that will redirect logged-in users when they don’t have a required role and the product has sneakers or backpacks categories:

    add_filter( 'woocommerce_product_is_visible', 'members_maybe_remove_product_from_query', 95, 2 );
    /**
     * Removes a product from the query depending on if the user has the correct permission.
     *
     * @param boolean 	$is_visible 	Whether the product is visible
     * @param int 		$product_id 	Product ID
     *
     * @return boolean
     */
    function members_maybe_remove_product_from_query( $is_visible, $product_id ) {
    	return members_can_current_user_view_post( $product_id );
    }
    add_action( 'template_redirect', 'members_woocommerce_product_redirect' );
    function members_woocommerce_product_redirect() {
      if ( class_exists( 'WooCommerce' ) && is_singular( 'product' ) ) {
        $user = wp_get_current_user();
        $post_id = get_the_ID();
        if( ! empty($user) && in_array( 'author', (array) $user->roles ) && has_term( array( 'sneakers', 'backpacks' ), 'product_cat', $post_id ) ) {
          wp_redirect( apply_filters( 'members_woocommerce_product_redirect', get_permalink( wc_get_page_id( 'shop' ) ) ) );
          exit;
        }
      }
    }

    If you want to use it for particular product, you’ll need to modify has_term part in the condition above.

    I hope that helps.

Viewing 1 replies (of 1 total)

The topic ‘Product viewable’ is closed to new replies.