mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-07-11 18:56:10 +09:00
Fix posts with category restriction settings
This commit is contained in:
@@ -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 );
|
||||
|
||||
Reference in New Issue
Block a user