diff --git a/core/um-actions-access.php b/core/um-actions-access.php index a0ede63e..966182dd 100644 --- a/core/um-actions-access.php +++ b/core/um-actions-access.php @@ -473,6 +473,70 @@ $args = $ultimatemember->access->get_meta( $um_post_id ); extract( $args ); + $categories = get_the_category( $post->ID ); + // Check post category restriction + foreach( $categories as $cat ){ + + $opt = get_option("category_{$cat->term_id}"); + + if ( isset( $opt['_um_accessible'] ) ) { + switch( $opt['_um_accessible'] ) { + + case 0: // Open to everyone + $ultimatemember->access->allow_access = true; + $ultimatemember->access->redirect_handler = false; // open to everyone + break; + + case 1: // Logged out users only + + if ( is_user_logged_in() ) + $ultimatemember->access->redirect_handler = ( isset( $opt['_um_redirect'] ) ) ? $opt['_um_redirect'] : site_url(); + + if ( !is_user_logged_in() ) + $ultimatemember->access->allow_access = true; + + break; + + case 2: // Logged in users only + + if ( ! is_user_logged_in() ){ + $ultimatemember->access->redirect_handler = ( isset( $opt['_um_redirect'] ) && ! empty( $opt['_um_redirect'] ) ) ? $opt['_um_redirect'] : um_get_core_page('login'); + $ultimatemember->access->allow_access = false; + } + + if ( is_user_logged_in() ){ + + if( isset( $opt['_um_roles'] ) && !empty( $opt['_um_roles'] ) ){ + + if ( in_array( um_user('role'), $opt['_um_roles'] ) ) { + + $ultimatemember->access->allow_access = true; + + }else{ + + $ultimatemember->access->redirect_handler = ( isset( $opt['_um_redirect'] ) && ! empty( $opt['_um_redirect'] ) ) ? $opt['_um_redirect'] : site_url(); + $ultimatemember->access->allow_access = false; + + } + + }else{ // if allowed all roles + $ultimatemember->access->allow_access = true; + } + + } + + } + + + } // end if isset( $opt['_um_accessible'] ) + + // if one of the categories has enabled restriction, apply its settings to the current post + if( $ultimatemember->access->allow_access == false ){ + return; + } + + } // end foreach + if ( !isset( $args['custom_access_settings'] ) || $args['custom_access_settings'] == 0 ) { $um_post_id = apply_filters('um_access_control_for_parent_posts', $um_post_id );