static function auto_shortcode($template) { if (is_page()) { global $post, $wp_query, $wp; $page_id = $wp_query->queried_object_id; if ($page_id == learn_press_get_page_id('checkout')) { if (!preg_match('/\\[learn_press_checkout\\s?(.*)\\]/', $post->post_content)) { $post->post_content .= '[learn_press_checkout]'; } } elseif ($page_id == learn_press_get_page_id('profile')) { if (empty($wp->query_vars['user'])) { $current_user = wp_get_current_user(); if (!empty($current_user->user_login)) { wp_redirect(learn_press_get_endpoint_url('', $current_user->user_login, learn_press_get_page_link('profile'))); die; } else { learn_press_404_page(); } } else { $query = array(); parse_str($wp->matched_query, $query); if ($query) { $profile_endpoints = (array) LP()->settings->get('profile_endpoints'); $endpoints = array_keys($profile_endpoints); foreach ($query as $k => $v) { if ($k == 'view') { if (!$v) { $v = reset($profile_endpoints); } if (!in_array($v, apply_filters('learn_press_profile_tab_endpoints', $profile_endpoints))) { learn_press_404_page(); } } if (!empty($v)) { $wp->query_vars[$k] = $v; } } } } if (!preg_match('/\\[learn_press_profile\\s?(.*)\\]/', $post->post_content)) { $post->post_content .= '[learn_press_profile]'; } } elseif ($page_id == learn_press_get_page_id('cart')) { if (!preg_match('/\\[learn_press_cart\\s?(.*)\\]/', $post->post_content)) { $post->post_content .= '[learn_press_cart]'; } } } return $template; }
/** * Prevent access directly to lesson by using lesson permalink * * @since 0.9.5 * @param string * @return $string */ function learn_press_prevent_access_lesson($template) { // if we are in single lesson page if (is_single() && 'lpr_lesson' == get_post_type()) { learn_press_404_page(); } return $template; }
/** * Controls WP displays the courses in a page which setup to display on homepage * * @param $q */ function learn_press_pre_get_posts($q) { // We only want to affect the main query and not in admin if (!$q->is_main_query() || is_admin()) { return; } if ($q->get('post_type') == 'lp_course' && is_single()) { $course_name = $q->get('lp_course'); $course_name_parts = explode('/', $course_name); $course_item = null; if (sizeof($course_name_parts) > 1) { $q->set('lp_course', $course_name_parts[0]); $course_item = $course_name_parts[1]; } if (!$course_item) { foreach (array('lesson', 'quiz') as $item_type) { $q->get($item_type); if ($q->get($item_type)) { $course_item = $q->get($item_type); break; } } } // If we have the item's name in course permalink url, get it if ($course_item) { // grab the ID of the item if (preg_match('!^([0-9]+)-!', $course_item, $matches)) { $item_id = absint($matches[1]); $item_name = str_replace($matches[0], '', $course_item); $_post = get_post($item_id); //learn_press_get_post_by_name( $course_name_parts[1], true, array( 'lp_lesson', 'lp_quiz') ); if ($_post) { if ($_post->post_type == 'lp_lesson') { $q->set('lesson', $item_name); $q->set('course-item', 'lesson'); $_REQUEST['lesson'] = $item_name; $_REQUEST['lesson_id'] = $_post->ID; $_REQUEST['course-item'] = 'lesson'; } elseif ($_post->post_type == 'lp_quiz') { $q->set('quiz', $item_name); $q->set('course-item', 'quiz'); $_REQUEST['quiz'] = $item_name; $_REQUEST['quiz_id'] = $_post->ID; $_REQUEST['course-item'] = 'quiz'; } } do_action('learn_press_parse_query_to_request', $course_item); } else { learn_press_404_page(); } } } // Fix for verbose page rules if ($GLOBALS['wp_rewrite']->use_verbose_page_rules && isset($q->queried_object_id) && $q->queried_object_id === learn_press_get_page_id('courses')) { $q->set('post_type', LP()->course_post_type); $q->set('page', ''); $q->set('pagename', ''); // Fix conditional Functions $q->is_archive = true; $q->is_post_type_archive = true; $q->is_singular = false; $q->is_page = false; } // Fix for endpoints on the homepage if ($q->is_home() && 'page' == get_option('show_on_front') && get_option('page_on_front') != $q->get('page_id')) { $_query = wp_parse_args($q->query); /*if ( ! empty( $_query ) && array_intersect( array_keys( $_query ), array_keys( $this->query_vars ) ) ) { $q->is_page = true; $q->is_home = false; $q->is_singular = true; $q->set( 'page_id', get_option('page_on_front') ); }*/ } // When orderby is set, WordPress shows posts. Get around that here. if ($q->is_home() && 'page' == get_option('show_on_front') && get_option('page_on_front') == learn_press_get_page_id('courses')) { $_query = wp_parse_args($q->query); if (empty($_query) || !array_diff(array_keys($_query), array('preview', 'page', 'paged', 'cpage', 'orderby'))) { $q->is_page = true; $q->is_home = false; $q->set('page_id', get_option('page_on_front')); $q->set('post_type', LP()->course_post_type); } } if ($q->is_page() && 'page' == get_option('show_on_front') && $q->get('page_id') == learn_press_get_page_id('courses') && learn_press_get_page_id('courses')) { echo learn_press_get_page_id('courses'), ',', $q->get('page_id'); $q->set('post_type', LP()->course_post_type); $q->set('page_id', ''); if (isset($q->query['paged'])) { $q->set('paged', $q->query['paged']); } global $wp_post_types; $course_page = get_post(learn_press_get_page_id('courses')); $wp_post_types[LP()->course_post_type]->ID = $course_page->ID; $wp_post_types[LP()->course_post_type]->post_title = $course_page->post_title; $wp_post_types[LP()->course_post_type]->post_name = $course_page->post_name; $wp_post_types[LP()->course_post_type]->post_type = $course_page->post_type; $wp_post_types[LP()->course_post_type]->ancestors = get_ancestors($course_page->ID, $course_page->post_type); $q->is_singular = false; $q->is_post_type_archive = true; $q->is_archive = true; $q->is_page = true; } elseif (!$q->is_post_type_archive(LP()->course_post_type) && !$q->is_tax(get_object_taxonomies(LP()->course_post_type))) { return; } }
function learn_press_template_loader($template) { $file = ''; if (($page_id = learn_press_get_page_id('taken_course_confirm')) && is_page($page_id)) { if (!learn_press_user_can_view_order(!empty($_REQUEST['order_id']) ? $_REQUEST['order_id'] : 0)) { learn_press_404_page(); } global $post; $post->post_content = '[learn_press_confirm_order]'; } elseif (($page_id = learn_press_get_page_id('become_teacher_form')) && is_page($page_id)) { global $post; $post->post_content = '[learn_press_become_teacher_form]'; } else { if (is_post_type_archive('lpr_course') || ($page_id = learn_press_get_page_id('courses')) && is_page($page_id) || is_tax('course_category')) { $file = 'archive-course.php'; $find[] = $file; $find[] = 'learnpress/' . $file; } else { if (get_post_type() == 'lpr_course') { $file = 'single-course.php'; $find[] = $file; $find[] = 'learnpress/' . $file; } else { if (get_post_type() == 'lpr_quiz') { $file = 'single-quiz.php'; $find[] = $file; $find[] = 'learnpress/' . $file; } else { if (get_post_type() == 'lpr_assignment') { $file = 'single-assignment.php'; $find[] = $file; $find[] = 'learnpress/' . $file; } } } } } if ($file) { $template = locate_template(array_unique($find)); if (!$template) { $template = learn_press_plugin_path('templates/') . $file; } } return $template; }