static function template_redirect() { if (is_singular() && ($restricted_post = get_post())) { if (!wpaa_user_can($restricted_post->post_view_cap)) { do_action('wpaa_view_restricted_post', $restricted_post->ID, $restricted_post); $redirect = false; $behavior = get_post_meta($restricted_post->ID, '_wpaa_post_behavior', true); $fallback_page_id = get_post_meta($restricted_post->ID, '_wpaa_fallback_page', true); // no behavior? take default value if (!$behavior) { $behavior = get_option('wpaa_default_behavior'); } if ($behavior == 'page' || is_user_logged_in()) { // no fallback? take default value if (!$fallback_page_id) { $fallback_page_id = get_option('wpaa_fallback_page'); } if ($fallback_page_id && wpaa_is_post_public($fallback_page_id)) { // if accessable take user to the fallback page $redirect = get_permalink($fallback_page_id); } else { // last resort: send him home $redirect = home_url(); } } else { if ($behavior == 'login') { // get user to login and return him to the requested page. $redirect = wp_login_url(get_permalink()); } else { if ($behavior == '404') { // 404 global $wp_query; $wp_query->set_404(); status_header(404); } } } $redirect = apply_filters('wpaa_restricted_post_redirect', $redirect, $restricted_post->ID, $restricted_post); if ($redirect) { wp_redirect($redirect); exit; } } } }
static function fallback_page_dropdown($post_fallback_page = false, $fieldname = '_wpaa_fallback_page') { global $wpdb; if (!wpaa_is_post_public($post_fallback_page)) { $post_fallback_page = 0; } // if not fallback page, use global fallback page $restricted_pages = $wpdb->get_col($wpdb->prepare("SELECT id \n\t\t\tFROM {$wpdb->posts} \n\t\t\tWHERE \n\t\t\t\tpost_type=%s AND \n\t\t\t\tpost_status=%s AND\n\t\t\t\tpost_view_cap!=%s", 'page', 'publish', 'exist')); wp_dropdown_pages(array('selected' => $post_fallback_page, 'name' => $fieldname, 'exclude' => $restricted_pages, 'show_option_none' => __('Front page'), 'option_none_value' => 0)); }