diff --git a/admin/core/um-admin-actions.php b/admin/core/um-admin-actions.php index e259cfc0..6f5f44ce 100644 --- a/admin/core/um-admin-actions.php +++ b/admin/core/um-admin-actions.php @@ -51,7 +51,6 @@ **/ $exclude_taxonomies = array( - 'post_tag', 'nav_menu', 'link_category', 'post_format', diff --git a/core/um-access.php b/core/um-access.php index 27eb968c..7ad9c73d 100644 --- a/core/um-access.php +++ b/core/um-access.php @@ -27,7 +27,9 @@ class UM_Access { do_action('um_access_homepage_per_role'); do_action('um_access_category_settings'); - + + do_action('um_access_tags_settings'); + do_action('um_access_post_settings'); if ( $this->redirect_handler && $this->allow_access == false && ! um_is_core_page('login') ) { diff --git a/core/um-actions-access.php b/core/um-actions-access.php index 117c3250..25d805df 100644 --- a/core/um-actions-access.php +++ b/core/um-actions-access.php @@ -337,7 +337,7 @@ /** - * Archieves/Taxonomies/Categories access settings + * Archives/Taxonomies/Categories access settings */ add_action('um_access_category_settings','um_access_category_settings'); function um_access_category_settings() { @@ -520,6 +520,118 @@ } + /** + * Tags access settings + */ + add_action('um_access_tags_settings','um_access_tags_settings'); + function um_access_tags_settings() { + global $post, $wp_query, $ultimatemember; + + if ( is_front_page() || + is_home() || + is_feed() || + is_page() || + is_404() + ) { + + return; + + } + + $access = um_get_option('accessible'); + $current_page_type = um_get_current_page_type(); + + $tag_id = get_query_var( 'tag_id' ); + + if( is_tag() && $current_page_type == 'tag' && $tag_id ){ + + if( isset( $tag_id ) && ! empty( $tag_id ) ){ + + $opt = get_option("category_$tag_id"); + + if ( isset( $opt['_um_accessible'] ) ) { + + $redirect = false; + + switch( $opt['_um_accessible'] ) { + + case 0: + + $ultimatemember->access->allow_access = true; + $ultimatemember->access->redirect_handler = ''; // open to everyone + + break; + + case 1: + + if ( is_user_logged_in() ){ + + if( isset( $opt['_um_redirect'] ) && ! empty( $opt['_um_redirect'] ) ) { + $redirect = $opt['_um_redirect']; + }else{ + $redirect = site_url(); + } + } + + $ultimatemember->access->allow_access = false; + + $redirect = $ultimatemember->access->set_referer( $redirect, "tag_1" ); + + $ultimatemember->access->redirect_handler = esc_url( $redirect ); + + if ( ! is_user_logged_in() && ! empty( $redirect ) ){ + $ultimatemember->access->allow_access = true; + } + + break; + + case 2: + + if ( ! is_user_logged_in() ){ + + if( isset( $opt['_um_redirect'] ) && ! empty( $opt['_um_redirect'] ) ){ + $redirect = $opt['_um_redirect']; + }else{ + $redirect = um_get_core_page('login'); + } + + $ultimatemember->access->allow_access = false; + + $redirect = $ultimatemember->access->set_referer( $redirect, "tag_2" ); + + $ultimatemember->access->redirect_handler = esc_url( $redirect ); + } + + if ( is_user_logged_in() && isset( $opt['_um_roles'] ) && !empty( $opt['_um_roles'] ) ){ + if ( ! in_array( um_user('role'), $opt['_um_roles'] ) ) { + + + if( isset( $opt['_um_redirect'] ) ){ + $redirect = $opt['_um_redirect']; + } + $redirect = $ultimatemember->access->set_referer( $redirect, "tag_2b" ); + + $ultimatemember->access->redirect_handler = esc_url( $redirect ); + + } + } + + } + } + } + + } else if ( $access == 2 && ! is_user_logged_in() && is_tag() ) { + + $ultimatemember->access->allow_access = false; + $redirect = um_get_core_page('login'); + $redirect = $ultimatemember->access->set_referer( $redirect, "tag" ); + + $ultimatemember->access->redirect_handler = $redirect; + + } + + } + /** * Posts/Page access settings */