lifterlms_template_my_courses_loop( LLMS_Student $student = null, bool $preview = false )
Get course tiles for a student’s courses
Parameters Parameters
- $student
-
(LLMS_Student) (Optional) LLMS_Student (current student if none supplied). Default
null.Default value: null
- $preview
-
(bool) (Optional) If true, outputs a short list of courses (based on dashboard_recent_courses filter). Default
false.Default value: false
Return Return
(void)
Source Source
File: includes/functions/llms.functions.templates.dashboard.php
*/
function lifterlms_template_my_courses_loop( $student = null, $preview = false ) {
$student = llms_get_student( $student );
if ( ! $student ) {
return;
}
$courses = $student->get_courses(
/**
* Filter the query args to retrieve the courses ids to be used for the "my_courses" loop.
*
* @since unknown
*
* @param array $args The query args.
*/
apply_filters(
'llms_my_courses_loop_courses_query_args',
array(
'limit' => 500,
),
$student
)
);
if ( ! $courses['results'] ) {
printf(
'<p>%s</p>',
/**
* Not enrolled text.
*
* Allows developers to filter the text to be displayed when the student is not enrolled in any courses.
*
* @since 7.1.3
*
* @param string $not_enrolled_text The text to be displayed when the student is not enrolled in any course.
*/
apply_filters( 'lifterlms_dashboard_courses_not_enrolled_text', esc_html__( 'You are not enrolled in any courses.', 'lifterlms' ) )
);
} else {
add_action( 'lifterlms_after_loop_item_title', 'lifterlms_template_loop_enroll_status', 25 );
add_action( 'lifterlms_after_loop_item_title', 'lifterlms_template_loop_enroll_date', 30 );
// get sorting option.
$option = get_option( 'lifterlms_myaccount_courses_in_progress_sorting', 'date,DESC' );
// parse to order & orderby.
$option = explode( ',', $option );
$orderby = ! empty( $option[0] ) ? $option[0] : 'date';
$order = ! empty( $option[1] ) ? $option[1] : 'DESC';
// Enrollment date will obey the results order.
if ( 'date' === $orderby ) {
$orderby = 'post__in';
} elseif ( 'order' === $orderby ) {
// Add secondary sorting by `post_title` when the primary sort is `menu_order`.
$orderby = 'menu_order post_title';
}
/**
* Filter the number of courses per page to be displayed in the dashboard.
*
* @since unknown
*
* @param int $per_page The number or courses per page to be displayed. Defaults to the 'Courses per page' course catalog's setting.
*/
$per_page = apply_filters( 'llms_dashboard_courses_per_page', get_option( 'lifterlms_shop_courses_per_page', 9 ) );
if ( $preview ) {
/**
* Filter the number of courses per page to be displayed in the dashboard, when outputting a short list of courses.
*
* @since unknown
*
* @param int $per_page The number or courses per page to be displayed. Default is `3`.
*/
$per_page = apply_filters( 'llms_dashboard_recent_courses_count', llms_get_loop_columns() );
}
/**
* Filter the wp query args to retrieve the courses for the "my_courses" loop.
*
* @since unknown
*
* @param array $args The query args.
*/
$query_args = apply_filters(
'llms_dashboard_courses_wp_query_args',
array(
'paged' => llms_get_paged_query_var(),
'orderby' => $orderby,
'order' => $order,
'post__in' => $courses['results'],
'post_status' => 'publish',
'post_type' => 'course',
'posts_per_page' => $per_page,
)
);
$query = new WP_Query( $query_args );
// Prevent pagination on the preview.
if ( $preview ) {
$query->max_num_pages = 1;
}
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 6.3.0 | Fix paged query not working when using plain permalinks. |
| 3.37.15 | Added secondary sorting by post_title when the primary sort is menu_order. |
| 3.26.3 | Unknown. |
| 3.14.0 | Introduced. |