PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.3.8
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.3.8
4.4.7 4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 4.4.0 4.3.9.1 4.3.9 4.3.8 4.3.7 4.1.6.9 4.1.6.9.1 4.1.6.9.2 4.1.6.9.3 4.1.6.9.4 4.1.7 4.1.7.1 4.1.7.2 4.1.7.3 4.1.7.3.1 4.1.7.3.2 4.2.0 4.2.1 All 138 releases
learnpress / inc / lp-template-hooks.php

lp-template-hooks.php in LearnPress – WordPress LMS Plugin for Create and Sell Online Courses 4.3.8, at inc/lp-template-hooks.php

521 lines 19.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Build courses content
4 */
5
6 /*****************************************/
7 /** */
8 /** DOCUMENTATION */
9 /** */
10 /*****************************************/
11
12 /**
13 * Core template classes: LP_Template_General, LP_Template_Profile, LP_Template_Course.
14 *
15 * + Get instance of a template: LearnPress::instance()->template( TYPE ) e.g: LearnPress::instance()->template( 'course' )
16 * + LearnPress::instance()->template( TYPE )->func(CALLBACK) => hook to an action with function CALLBACK of TYPE class
17 * + LearnPress::instance()->template( TYPE )->callback( TEMPLATE ) => hook to an action to c
18 */
19
20
21 use LearnPress\Helpers\Template;
22 use LearnPress\Models\CourseModel;
23 use LearnPress\Models\UserItems\UserCourseModel;
24 use LearnPress\Models\UserModel;
25 use LearnPress\TemplateHooks\Course\ListCoursesTemplate;
26 use LearnPress\TemplateHooks\Course\SingleCourseTemplate;
27 use LearnPress\TemplateHooks\UserItem\UserCourseTemplate;
28
29 defined( 'ABSPATH' ) || exit();
30
31 /**
32 * New functions since 3.0.0
33 */
34
35 /**
36 * Header and Footer
37 *
38 * @see LP_Template_General::template_header()
39 * @see LP_Template_General::template_footer()
40 */
41 add_action( 'learn-press/template-header', LearnPress::instance()->template( 'general' )->func( 'template_header' ) );
42 add_action( 'learn-press/template-footer', LearnPress::instance()->template( 'general' )->func( 'template_footer' ) );
43
44 add_action(
45 'learn-press/before-main-content',
46 LearnPress::instance()->template( 'general' )->text( '<div class="lp-archive-courses">', 'lp-archive-courses-open' ),
47 - 100
48 );
49 /**
50 * Course breadcrumb
51 *
52 * @see LP_Template_General::breadcrumb()
53 */
54 add_action( 'learn-press/before-main-content', LearnPress::instance()->template( 'general' )->func( 'breadcrumb' ) );
55
56 add_action(
57 'learn-press/after-main-content',
58 LearnPress::instance()->template( 'general' )->text( '</div>', 'lp-archive-courses-close' ),
59 100
60 );
61
62
63 /**
64 * Course buttons
65 * old hook: learn-press/course-buttons
66 */
67 add_action(
68 'learn-press/course-buttons',
69 function () {
70 $singleCourseTemplate = SingleCourseTemplate::instance();
71 $course = CourseModel::find( get_the_ID(), true );
72 $user = UserModel::find( get_current_user_id(), true );
73 $userCourseModel = UserCourseModel::find( get_current_user_id(), get_the_ID(), true );
74 $userCourseTemplate = UserCourseTemplate::instance();
75
76 // Button enroll
77 echo $singleCourseTemplate->html_btn_enroll_course( $course, $user );
78 // Button purchase
79 echo $singleCourseTemplate->html_btn_purchase_course( $course, $user );
80 // Button external
81 echo '<div style="display:flex;flex-direction:column">';
82 echo $singleCourseTemplate->html_btn_external( $course, $user );
83 echo '</div>';
84 if ( $userCourseModel instanceof UserCourseModel ) {
85 // Button retake
86 echo $userCourseTemplate->html_btn_retake( $userCourseModel );
87 // Button continue
88 echo '<div style="margin-bottom: 10px">';
89 echo $userCourseTemplate->html_btn_continue( $userCourseModel );
90 echo '</div>';
91 // Button finish
92 echo $userCourseTemplate->html_btn_finish( $userCourseModel );
93 }
94 },
95 5
96 );
97
98 /** BEGIN: Archive course */
99 add_action( 'learn-press/before-courses-loop', LearnPress::instance()->template( 'course' )->func( 'courses_top_bar' ), 10 );
100
101 /** BEGIN: Archive course loop item */
102 add_action(
103 'learn-press/courses-loop-item-title',
104 LearnPress::instance()->template( 'course' )->callback( 'loop/course/title.php' ),
105 20
106 );
107
108 /** END: Archive course loop item */
109
110 /** Archive course pagination */
111 if ( LP_Settings::theme_no_support_load_courses_ajax() ) {
112 add_action(
113 'learn-press/after-courses-loop',
114 LearnPress::instance()->template( 'course' )->callback( 'loop/course/pagination.php' )
115 );
116 } else {
117 add_action(
118 'learn-press/after-courses-loop',
119 function () {
120 $listCourseTemplate = ListCoursesTemplate::instance();
121 $pagination_type = LP_Settings::get_option( 'course_pagination_type', 'number' );
122 $enableAjaxLoadCourses = LP_Settings_Courses::is_ajax_load_courses();
123 $enableNoLoadAjaxFirst = LP_Settings_Courses::is_no_load_ajax_first_courses();
124 if ( $enableAjaxLoadCourses && $pagination_type !== 'number' ) {
125 if ( $enableNoLoadAjaxFirst ) {
126 if ( 'load-more' === $pagination_type ) {
127 echo $listCourseTemplate->html_pagination_load_more();
128 } elseif ( 'infinite' === $pagination_type ) {
129 echo $listCourseTemplate->html_pagination_infinite();
130 }
131 }
132
133 return;
134 }
135
136 if ( ! $enableAjaxLoadCourses || ( $enableAjaxLoadCourses && $enableNoLoadAjaxFirst ) ) {
137 Template::instance()->get_frontend_template( 'loop/course/pagination.php' );
138 }
139 },
140 10
141 );
142 }
143 /** END: Archive course */
144
145 /** BEGIN: Main content of single course */
146
147
148 // Sidebar and content
149 add_action( 'learn-press/single-course-summary', LearnPress::instance()->template( 'course' )->callback( 'single-course/content' ), 10 );
150
151 // Content
152 add_action(
153 'learn-press/course-content-summary',
154 LearnPress::instance()->template( 'course' )->text(
155 '<div class="course-detail-info"> <div class="lp-content-area"> <div class="course-info-left">',
156 'course-info-left-open'
157 ),
158 10
159 );
160 add_action(
161 'learn-press/course-content-summary',
162 LearnPress::instance()->template( 'course' )->callback( 'single-course/meta-primary' ),
163 10
164 );
165 add_action( 'learn-press/course-content-summary', LearnPress::instance()->template( 'course' )->callback( 'single-course/title' ), 10 );
166 add_action(
167 'learn-press/course-content-summary',
168 LearnPress::instance()->template( 'course' )->callback( 'single-course/meta-secondary' ),
169 10
170 );
171 add_action(
172 'learn-press/course-content-summary',
173 LearnPress::instance()->template( 'course' )->text( ' </div> </div> </div>', 'course-info-left-close' ),
174 15
175 );
176
177 add_action(
178 'learn-press/course-content-summary',
179 LearnPress::instance()->template( 'course' )->text( '<div class="lp-entry-content lp-content-area">', 'lp-entry-content-open' ),
180 30
181 );
182 add_action(
183 'learn-press/course-content-summary',
184 LearnPress::instance()->template( 'course' )->text( '<div class="entry-content-left">', 'entry-content-left-open' ),
185 35
186 );
187 //add_action(
188 // 'learn-press/course-content-summary',
189 // LearnPress::instance()->template( 'course' )->func( 'course_extra_boxes_position_control' ),
190 // 39
191 //);
192 //add_action( 'learn-press/course-content-summary', LearnPress::instance()->template( 'course' )->func( 'course_extra_boxes' ), 40 );
193 // add_action( 'learn-press/course-content-summary', LearnPress::instance()->template( 'course' )->callback( 'single-course/progress' ), 40 );
194 // add_action( 'learn-press/course-content-summary', LearnPress::instance()->template( 'course' )->func( 'remaining_time' ), 50 );
195 add_action(
196 'learn-press/course-content-summary',
197 LearnPress::instance()->template( 'course' )->callback( 'single-course/tabs/tabs' ),
198 60
199 );
200 // appear at bottom after enrolled
201 add_action( 'learn-press/course-content-summary', LearnPress::instance()->template( 'course' )->func( 'course_extra_boxes' ), 70 );
202
203 add_action( 'learn-press/course-content-summary', LearnPress::instance()->template( 'course' )->func( 'course_comment_template' ), 75 );
204
205 add_action(
206 'learn-press/course-content-summary',
207 LearnPress::instance()->template( 'course' )->text( '<!-- end entry content left --> </div>', 'entry-content-left-close' ),
208 80
209 );
210
211 add_action( 'learn-press/course-content-summary', LearnPress::instance()->template( 'course' )->callback( 'single-course/sidebar' ), 85 );
212
213 add_action(
214 'learn-press/course-content-summary',
215 LearnPress::instance()->template( 'course' )->text( ' </div>', 'lp-entry-content-close' ),
216 100
217 );
218
219 // Meta
220 add_action(
221 'learn-press/course-meta-primary-left',
222 LearnPress::instance()->template( 'course' )->callback( 'single-course/meta/instructor' ),
223 10
224 );
225 add_action(
226 'learn-press/course-meta-primary-left',
227 LearnPress::instance()->template( 'course' )->callback( 'single-course/meta/category' ),
228 20
229 );
230
231 add_action(
232 'learn-press/course-meta-secondary-left',
233 LearnPress::instance()->template( 'course' )->callback( 'single-course/meta/duration' ),
234 10
235 );
236 add_action(
237 'learn-press/course-meta-secondary-left',
238 LearnPress::instance()->template( 'course' )->callback( 'single-course/meta/level' ),
239 20
240 );
241 /**
242 * @see LP_Template_Course::count_object()
243 */
244 add_action( 'learn-press/course-meta-secondary-left', LearnPress::instance()->template( 'course' )->func( 'count_object' ), 20 );
245
246
247 // Sidebar content
248 /**
249 * @see LP_Template_Course::course_sidebar_preview()
250 * @see LP_Template_Course::course_extra_key_features()
251 * @see LP_Template_Course::course_extra_requirements()
252 */
253 add_action( 'learn-press/course-summary-sidebar', LearnPress::instance()->template( 'course' )->func( 'course_sidebar_preview' ), 10 );
254 add_action( 'learn-press/course-summary-sidebar', LearnPress::instance()->template( 'course' )->func( 'course_featured_review' ), 20 );
255 // add_action( 'learn-press/course-summary-sidebar', LearnPress::instance()->template( 'course' )->func( 'course_extra_key_features' ), 20 );
256 // add_action( 'learn-press/course-summary-sidebar', LearnPress::instance()->template( 'course' )->func( 'course_extra_requirements' ), 30 );
257
258 /** END: Main content of single course */
259
260 /** BEGIN: Course section */
261 add_action(
262 'learn-press/section-summary',
263 LearnPress::instance()->template( 'course' )->callback( 'single-course/section/title.php', array( 'section' ) ),
264 10
265 );
266 add_action(
267 'learn-press/section-summary',
268 LearnPress::instance()->template( 'course' )->callback( 'single-course/section/content.php', array( 'section' ) ),
269 20
270 );
271
272 add_action(
273 'learn-press/after-section-loop-item-title',
274 LearnPress::instance()->template( 'course' )->callback(
275 'single-course/section/item-meta.php',
276 array(
277 'item',
278 'section',
279 )
280 ),
281 10,
282 2
283 );
284
285 /** BEGIN: Quiz item */
286
287 /**
288 * @see LP_Template_Course::quiz_meta_questions()
289 * @see LP_Template_Course::item_meta_duration()
290 * @see LP_Template_Course::quiz_meta_final()
291 */
292 add_action(
293 'learn-press/course-section-item/before-lp_quiz-meta',
294 LearnPress::instance()->template( 'course' )->func( 'quiz_meta_questions' ),
295 10
296 );
297 add_action(
298 'learn-press/course-section-item/before-lp_quiz-meta',
299 LearnPress::instance()->template( 'course' )->func( 'item_meta_duration' ),
300 20
301 );
302 add_action(
303 'learn-press/course-section-item/before-lp_quiz-meta',
304 LearnPress::instance()->template( 'course' )->func( 'quiz_meta_final' ),
305 30
306 );
307 /** END: Quiz item */
308
309 /** BEGIN: Lesson item */
310 add_action(
311 'learn-press/course-section-item/before-lp_lesson-meta',
312 LearnPress::instance()->template( 'course' )->func( 'item_meta_duration' ),
313 10
314 );
315 /** END: Lesson item */
316
317 /** END: Course section */
318
319 /** BEGIN: Popup */
320 /**
321 * @see single-button-toggle-sidebar
322 */
323 add_action(
324 'learn-press/single-button-toggle-sidebar',
325 LearnPress::instance()->template( 'course' )->text( '<input type="checkbox" id="sidebar-toggle" title="Show/Hide curriculum" />', 'single-button-toggle-sidebar' ),
326 5
327 );
328
329 /**
330 * @see LP_Template_Course::popup_header()
331 * @see LP_Template_Course::popup_sidebar()
332 * @see LP_Template_Course::popup_content()
333 * @see LP_Template_Course::popup_footer()
334 */
335 add_action( 'learn-press/single-item-summary', LearnPress::instance()->template( 'course' )->func( 'popup_header' ), 10 );
336 add_action( 'learn-press/single-item-summary', LearnPress::instance()->template( 'course' )->func( 'popup_sidebar' ), 20 );
337 add_action( 'learn-press/single-item-summary', LearnPress::instance()->template( 'course' )->func( 'popup_content' ), 30 );
338 add_action( 'learn-press/single-item-summary', LearnPress::instance()->template( 'course' )->func( 'popup_footer' ), 40 );
339
340 /**
341 * @see LP_Template_Course::popup_footer_nav()
342 */
343 add_action( 'learn-press/popup-footer', LearnPress::instance()->template( 'course' )->func( 'popup_footer_nav' ), 10 );
344 /** END: Popup */
345
346 /** BEGIN: Popup quiz */
347 /**
348 * @see LP_Template_Course::course_finish_button()
349 */
350 //add_action( 'learn-press/quiz-buttons', LearnPress::instance()->template( 'course' )->func( 'course_finish_button' ), 10 );
351 /** END: Popup quiz */
352
353 /** BEGIN: Popup lesson */
354
355 /**
356 * @see LP_Template_Course::item_lesson_title()
357 * @see LP_Template_Course::item_lesson_content()
358 * @see LP_Template_Course::item_lesson_complete_button()
359 */
360 add_action(
361 'learn-press/before-content-item-summary/lp_lesson',
362 LearnPress::instance()->template( 'course' )->func( 'item_lesson_title' ),
363 10
364 );
365 add_action(
366 'learn-press/content-item-summary/lp_lesson',
367 LearnPress::instance()->template( 'course' )->func( 'item_lesson_content' ),
368 10
369 );
370 add_action(
371 'learn-press/after-content-item-summary/lp_lesson',
372 LearnPress::instance()->template( 'course' )->func( 'item_lesson_material' ),
373 10
374 );
375 add_action(
376 'learn-press/after-content-item-summary/lp_lesson',
377 LearnPress::instance()->template( 'course' )->func( 'item_lesson_complete_button' ),
378 11
379 );
380 add_action(
381 'learn-press/after-content-item-summary/lp_lesson',
382 function () {
383 $userCourseModel = UserCourseModel::find( get_current_user_id(), get_the_ID(), true );
384 $userCourseTemplate = UserCourseTemplate::instance();
385
386 if ( $userCourseModel instanceof UserCourseModel ) {
387 echo $userCourseTemplate->html_btn_finish( $userCourseModel );
388 }
389 },
390 15
391 );
392 /** END: Popup lesson */
393
394 /**
395 * @see LP_Template_Course::course_item_content()
396 */
397 add_action( 'learn-press/course-item-content', LearnPress::instance()->template( 'course' )->func( 'course_item_content' ), 5 );
398
399 /** BEGIN: User profile */
400
401 /**
402 * @see LP_Template_Profile::header()
403 * @see LP_Template_Profile::tabs()
404 * @see LP_Template_Profile::content()
405 */
406 //add_action( 'learn-press/before-user-profile', LearnPress::instance()->template( 'profile' )->func( 'header' ), 10 );
407
408 add_action( 'learn-press/user-profile', LearnPress::instance()->template( 'profile' )->func( 'sidebar' ), 10 );
409 add_action( 'learn-press/user-profile', LearnPress::instance()->template( 'profile' )->func( 'content' ), 20 );
410
411 add_action( 'learn-press/user-profile/private', LearnPress::instance()->template( 'profile' )->func( 'sidebar' ), 10 );
412
413 add_action( 'learn-press/user-profile-account', LearnPress::instance()->template( 'profile' )->text( ' <div class="lp-profile-left">', 'user-profile-account-left-open' ), 5 );
414 add_action( 'learn-press/user-profile-account', LearnPress::instance()->template( 'profile' )->func( 'avatar' ), 10 );
415 //add_action( 'learn-press/user-profile-account', LearnPress::instance()->template( 'profile' )->func( 'socials' ), 10 );
416 add_action( 'learn-press/user-profile-account', LearnPress::instance()->template( 'profile' )->text( ' </div>', 'user-profile-account-left-close' ), 15 );
417 add_action( 'learn-press/user-profile-account', LearnPress::instance()->template( 'profile' )->func( 'header' ), 20 );
418
419 add_action( 'learn-press/user-profile-tabs', LearnPress::instance()->template( 'profile' )->func( 'tabs' ), 10 );
420
421 /**
422 * @deprecated 4.2.6.2
423 */
424 add_action( 'learn-press/profile/orders', LearnPress::instance()->template( 'profile' )->callback( 'profile/tabs/orders/list.php' ), 10 );
425 /**
426 * @deprecated 4.2.6.2
427 */
428 add_action(
429 'learn-press/profile/orders',
430 LearnPress::instance()->template( 'profile' )->callback( 'profile/tabs/orders/recover-order.php' ),
431 20
432 );
433
434 // Comment from v4.3.2.6, hook not using from v4.2.6.4
435 //add_action( 'learn-press/profile/order-details', LearnPress::instance()->template( 'profile' )->func( 'order_details' ), 5 );
436 //add_action( 'learn-press/profile/order-details', LearnPress::instance()->template( 'profile' )->func( 'order_recover' ), 10 );
437 //add_action( 'learn-press/profile/order-details', LearnPress::instance()->template( 'profile' )->func( 'order_message' ), 15 );
438
439 /**
440 * @see LP_Template_Profile::dashboard_logged_in()
441 * @deprecated 4.1.6
442 */
443 // add_action( 'learn-press/profile/before-dashboard', LearnPress::instance()->template( 'profile' )->func( 'dashboard_statistic' ), 10 );
444 /*add_action(
445 'learn-press/profile/dashboard-summary',
446 LearnPress::instance()->template( 'profile' )->func( 'dashboard_featured_courses' ),
447 20
448 );*/
449 /*add_action(
450 'learn-press/profile/dashboard-summary',
451 LearnPress::instance()->template( 'profile' )->func( 'dashboard_latest_courses' ),
452 30
453 );*/
454
455 /**
456 * @see LP_Template_Profile::dashboard_not_logged_in()
457 * @see LP_Template_Profile::login_form()
458 * @see LP_Template_Profile::register_form()
459 */
460 add_action( 'learn-press/user-profile', LearnPress::instance()->template( 'profile' )->func( 'dashboard_not_logged_in' ), 5 );
461 add_action( 'learn-press/user-profile', LearnPress::instance()->template( 'profile' )->func( 'login_form' ), 10 );
462 add_action( 'learn-press/user-profile', LearnPress::instance()->template( 'profile' )->func( 'register_form' ), 15 );
463
464 /** BEGIN: Checkout page */
465 /**
466 * @see LP_Template_Checkout::review_order()
467 */
468 add_action( 'learn-press/before-checkout-form', LearnPress::instance()->template( 'checkout' )->func( 'review_order' ), 10 );
469 add_action( 'learn-press/after-checkout-form', LearnPress::instance()->template( 'checkout' )->func( 'account_logged_in' ), 20 );
470 add_action( 'learn-press/after-checkout-form', LearnPress::instance()->template( 'checkout' )->func( 'account_register' ), 30 );
471 add_action( 'learn-press/after-checkout-form', LearnPress::instance()->template( 'checkout' )->func( 'account_login' ), 40 );
472 add_action( 'learn-press/after-checkout-form', LearnPress::instance()->template( 'checkout' )->func( 'guest_checkout' ), 50 );
473 add_action( 'learn-press/after-checkout-form', LearnPress::instance()->template( 'checkout' )->func( 'order_comment' ), 60 );
474 add_action( 'learn-press/after-checkout-form', LearnPress::instance()->template( 'checkout' )->func( 'payment' ), 70 );
475 add_action( 'learn-press/after-checkout-form', LearnPress::instance()->template( 'checkout' )->func( 'terms' ), 80 );
476
477 // ******************************************************************************************************************* //
478
479 //add_action( 'learn-press/content-item-summary-class', 'learn_press_content_item_summary_classes', 15 );
480 add_action(
481 'learn-press/before-content-item-summary/lp_quiz',
482 LearnPress::instance()->template( 'course' )->callback( 'content-quiz/title.php' ),
483 5
484 );
485 add_action( 'learn-press/content-item-summary/lp_quiz', LearnPress::instance()->template( 'course' )->callback( 'content-quiz/js' ), 25 );
486 // add_action( 'learn-press/parse-course-item', 'learn_press_control_displaying_course_item', 5 ); // comment by tungnx
487 //add_action( 'learn-press/after-single-course', 'learn_press_single_course_args', 5 );
488 add_filter( 'document_title_parts', 'learn_press_single_document_title_parts', 5 );
489
490 add_filter( 'body_class', 'learn_press_body_classes', 10 );
491 add_filter( 'post_class', 'learn_press_course_class', 15, 3 );
492 //add_action( 'wp_head', 'learn_press_single_course_args', 5 );
493 add_action(
494 'learn-press/before-checkout-order-review',
495 LearnPress::instance()->template( 'course' )->callback( 'checkout/form-logged-in.php' ),
496 10
497 );
498
499 add_filter( 'excerpt_length', 'learn_press_custom_excerpt_length', 999 );
500 // add_filter( 'learn_press_get_template', LearnPress::instance()->template( 'general' )->func( 'filter_block_content_template' ), 10, 5 );
501
502 /**
503 * Filter to hide the section if there is no item.
504 *
505 * @param bool $visible
506 * @param LP_Course_Section $section
507 * @param LP_Course $course
508 *
509 * @return bool
510 * @since 4.0.0
511 */
512 function learn_press_filter_section_visible( $visible, $section, $course ) {
513 if ( ! $section->get_items() ) {
514 $visible = false;
515 }
516
517 return $visible;
518 }
519
520 add_filter( 'learn-press/section-visible', 'learn_press_filter_section_visible', 10, 3 );
521