PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.1.7.2
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.1.7.2
4.4.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 All 139 releases
learnpress / inc / lp-template-hooks.php

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

563 lines 20.3 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 defined( 'ABSPATH' ) || exit();
22
23 /**
24 * New functions since 3.0.0
25 */
26
27 /**
28 * Header and Footer
29 *
30 * @see LP_Template_General::template_header()
31 * @see LP_Template_General::template_footer()
32 */
33 add_action( 'learn-press/template-header', LearnPress::instance()->template( 'general' )->func( 'template_header' ) );
34 add_action( 'learn-press/template-footer', LearnPress::instance()->template( 'general' )->func( 'template_footer' ) );
35
36 /**
37 * Course breadcrumb
38 *
39 * @see LP_Template_General::breadcrumb()
40 */
41 add_action(
42 'learn-press/before-main-content',
43 LearnPress::instance()->template( 'general' )->text( '<div class="lp-archive-courses">', 'lp-archive-courses-open' ),
44 - 100
45 );
46 add_action( 'learn-press/before-main-content', LearnPress::instance()->template( 'general' )->func( 'breadcrumb' ) );
47
48 add_action(
49 'learn-press/after-main-content',
50 LearnPress::instance()->template( 'general' )->text( '</div>', 'lp-archive-courses-close' ),
51 100
52 );
53
54
55 /**
56 * Course buttons
57 *
58 * @see learn_press_course_purchase_button
59 * @see learn_press_course_enroll_button
60 * @see learn_press_course_retake_button
61 * @see learn_press_course_continue_button
62 * @see learn_press_course_finish_button
63 * @see learn_press_course_external_button
64 */
65 learn_press_add_course_buttons();
66
67
68 /** BEGIN: Archive course */
69 add_action( 'learn-press/before-courses-loop', LearnPress::instance()->template( 'course' )->func( 'courses_top_bar' ), 10 );
70
71 /** BEGIN: Archive course loop item */
72 add_action(
73 'learn-press/before-courses-loop-item',
74 LearnPress::instance()->template( 'course' )->text( '<div class="course-wrap-thumbnail">', 'course-wrap-thumbnail-open' ),
75 1
76 );
77 add_action(
78 'learn-press/before-courses-loop-item',
79 LearnPress::instance()->template( 'course' )->callback( 'loop/course/badge-featured' ),
80 5
81 );
82 add_action(
83 'learn-press/before-courses-loop-item',
84 LearnPress::instance()->template( 'course' )->callback( 'loop/course/thumbnail.php' ),
85 10
86 );
87 add_action(
88 'learn-press/before-courses-loop-item',
89 LearnPress::instance()->template( 'course' )->text( '</div>', 'course-wrap-thumbnail-close' ),
90 1000
91 );
92
93 add_action(
94 'learn-press/before-courses-loop-item',
95 LearnPress::instance()->template( 'course' )->text(
96 '<!-- START .course-content --> <div class="course-content">',
97 'course-content-open'
98 ),
99 1000
100 );
101 add_action(
102 'learn-press/before-courses-loop-item',
103 LearnPress::instance()->template( 'course' )->callback( 'loop/course/categories' ),
104 1010
105 );
106 add_action(
107 'learn-press/before-courses-loop-item',
108 LearnPress::instance()->template( 'course' )->callback( 'loop/course/instructor' ),
109 1010
110 );
111 add_action(
112 'learn-press/courses-loop-item-title',
113 LearnPress::instance()->template( 'course' )->callback( 'loop/course/title.php' ),
114 20
115 );
116
117 /**
118 * @see LP_Template_Course::courses_loop_item_meta()
119 * @see LP_Template_Course::courses_loop_item_info_begin()
120 * @see LP_Template_Course::clearfix()
121 * @see LP_Template_Course::courses_loop_item_price()
122 * @see LP_Template_Course::courses_loop_item_info_end()
123 */
124
125 add_action(
126 'learn-press/after-courses-loop-item',
127 LearnPress::instance()->template( 'course' )->text(
128 '<!-- START .course-content-meta --> <div class="course-wrap-meta">',
129 'course-wrap-meta-open'
130 ),
131 20
132 );
133 add_action(
134 'learn-press/after-courses-loop-item',
135 LearnPress::instance()->template( 'course' )->callback( 'single-course/meta/duration' ),
136 20
137 );
138 add_action(
139 'learn-press/after-courses-loop-item',
140 LearnPress::instance()->template( 'course' )->callback( 'single-course/meta/level' ),
141 20
142 );
143 /**
144 * @see LP_Template_Course::count_object()
145 */
146 add_action( 'learn-press/after-courses-loop-item', LearnPress::instance()->template( 'course' )->func( 'count_object' ), 20 );
147 add_action(
148 'learn-press/after-courses-loop-item',
149 LearnPress::instance()->template( 'course' )->text( '</div> <!-- END .course-content-meta -->', 'course-wrap-meta-close' ),
150 20
151 );
152
153 add_action( 'learn-press/after-courses-loop-item', LearnPress::instance()->template( 'course' )->func( 'courses_loop_item_meta' ), 25 );
154 add_action(
155 'learn-press/after-courses-loop-item',
156 LearnPress::instance()->template( 'course' )->func( 'courses_loop_item_info_begin' ),
157 20
158 );
159 add_action( 'learn-press/after-courses-loop-item', LearnPress::instance()->template( 'course' )->func( 'clearfix' ), 30 );
160
161 add_action(
162 'learn-press/after-courses-loop-item',
163 LearnPress::instance()->template( 'course' )->text(
164 '<!-- START .course-content-footer --> <div class="course-footer">',
165 'course-footer-open'
166 ),
167 40
168 );
169 add_action( 'learn-press/after-courses-loop-item', LearnPress::instance()->template( 'course' )->func( 'courses_loop_item_price' ), 50 );
170 add_action(
171 'learn-press/after-courses-loop-item',
172 LearnPress::instance()->template( 'course' )->text( '</div> <!-- END .course-content-footer -->', 'course-footer-close' ),
173 50
174 );
175 add_action( 'learn-press/after-courses-loop-item', LearnPress::instance()->template( 'course' )->func( 'course_readmore' ), 55 );
176
177 add_action(
178 'learn-press/after-courses-loop-item',
179 LearnPress::instance()->template( 'course' )->func( 'courses_loop_item_info_end' ),
180 60
181 );
182
183 add_action(
184 'learn-press/after-courses-loop-item',
185 LearnPress::instance()->template( 'course' )->text( '</div> <!-- END .course-content -->', 'course-content-close' ),
186 1000
187 );
188
189 /** END: Archive course loop item */
190
191 /** Archive course pagination */
192 add_action(
193 'learn-press/after-courses-loop',
194 LearnPress::instance()->template( 'course' )->callback( 'loop/course/pagination.php' ),
195 10
196 );
197 /** END: Archive course */
198
199 /** BEGIN: Main content of single course */
200
201
202 // Sidebar and content
203 add_action( 'learn-press/single-course-summary', LearnPress::instance()->template( 'course' )->callback( 'single-course/content' ), 10 );
204
205 // Content
206 add_action(
207 'learn-press/course-content-summary',
208 LearnPress::instance()->template( 'course' )->text(
209 '<div class="course-detail-info"> <div class="lp-content-area"> <div class="course-info-left">',
210 'course-info-left-open'
211 ),
212 10
213 );
214 add_action(
215 'learn-press/course-content-summary',
216 LearnPress::instance()->template( 'course' )->callback( 'single-course/meta-primary' ),
217 10
218 );
219 add_action( 'learn-press/course-content-summary', LearnPress::instance()->template( 'course' )->callback( 'single-course/title' ), 10 );
220 add_action(
221 'learn-press/course-content-summary',
222 LearnPress::instance()->template( 'course' )->callback( 'single-course/meta-secondary' ),
223 10
224 );
225 add_action(
226 'learn-press/course-content-summary',
227 LearnPress::instance()->template( 'course' )->text( ' </div> </div> </div>', 'course-info-left-close' ),
228 15
229 );
230
231 add_action(
232 'learn-press/course-content-summary',
233 LearnPress::instance()->template( 'course' )->text( '<div class="lp-entry-content lp-content-area">', 'lp-entry-content-open' ),
234 30
235 );
236 add_action(
237 'learn-press/course-content-summary',
238 LearnPress::instance()->template( 'course' )->text( '<div class="entry-content-left">', 'entry-content-left-open' ),
239 35
240 );
241 add_action(
242 'learn-press/course-content-summary',
243 LearnPress::instance()->template( 'course' )->func( 'course_extra_boxes_position_control' ),
244 39
245 );
246 add_action( 'learn-press/course-content-summary', LearnPress::instance()->template( 'course' )->func( 'course_extra_boxes' ), 40 );
247 // add_action( 'learn-press/course-content-summary', LearnPress::instance()->template( 'course' )->callback( 'single-course/progress' ), 40 );
248 // add_action( 'learn-press/course-content-summary', LearnPress::instance()->template( 'course' )->func( 'remaining_time' ), 50 );
249 add_action(
250 'learn-press/course-content-summary',
251 LearnPress::instance()->template( 'course' )->callback( 'single-course/tabs/tabs' ),
252 60
253 );
254 // appear at bottom after enrolled
255 add_action( 'learn-press/course-content-summary', LearnPress::instance()->template( 'course' )->func( 'course_extra_boxes' ), 70 );
256
257 add_action( 'learn-press/course-content-summary', LearnPress::instance()->template( 'course' )->func( 'course_comment_template' ), 75 );
258
259 add_action(
260 'learn-press/course-content-summary',
261 LearnPress::instance()->template( 'course' )->text( '<!-- end entry content left --> </div>', 'entry-content-left-close' ),
262 80
263 );
264
265 add_action( 'learn-press/course-content-summary', LearnPress::instance()->template( 'course' )->callback( 'single-course/sidebar' ), 85 );
266
267 add_action(
268 'learn-press/course-content-summary',
269 LearnPress::instance()->template( 'course' )->text( ' </div>', 'lp-entry-content-close' ),
270 100
271 );
272
273 // Meta
274 add_action(
275 'learn-press/course-meta-primary-left',
276 LearnPress::instance()->template( 'course' )->callback( 'single-course/meta/instructor' ),
277 10
278 );
279 add_action(
280 'learn-press/course-meta-primary-left',
281 LearnPress::instance()->template( 'course' )->callback( 'single-course/meta/category' ),
282 20
283 );
284
285 add_action(
286 'learn-press/course-meta-secondary-left',
287 LearnPress::instance()->template( 'course' )->callback( 'single-course/meta/duration' ),
288 10
289 );
290 add_action(
291 'learn-press/course-meta-secondary-left',
292 LearnPress::instance()->template( 'course' )->callback( 'single-course/meta/level' ),
293 20
294 );
295 /**
296 * @see LP_Template_Course::count_object()
297 */
298 add_action( 'learn-press/course-meta-secondary-left', LearnPress::instance()->template( 'course' )->func( 'count_object' ), 20 );
299
300
301 // Sidebar content
302 /**
303 * @see LP_Template_Course::course_sidebar_preview()
304 * @see LP_Template_Course::course_extra_key_features()
305 * @see LP_Template_Course::course_extra_requirements()
306 */
307 add_action( 'learn-press/course-summary-sidebar', LearnPress::instance()->template( 'course' )->func( 'course_sidebar_preview' ), 10 );
308 add_action( 'learn-press/course-summary-sidebar', LearnPress::instance()->template( 'course' )->func( 'course_featured_review' ), 20 );
309 // add_action( 'learn-press/course-summary-sidebar', LearnPress::instance()->template( 'course' )->func( 'course_extra_key_features' ), 20 );
310 // add_action( 'learn-press/course-summary-sidebar', LearnPress::instance()->template( 'course' )->func( 'course_extra_requirements' ), 30 );
311
312 /** END: Main content of single course */
313
314 /** BEGIN: Course section */
315 add_action(
316 'learn-press/section-summary',
317 LearnPress::instance()->template( 'course' )->callback( 'single-course/section/title.php', array( 'section' ) ),
318 10
319 );
320 add_action(
321 'learn-press/section-summary',
322 LearnPress::instance()->template( 'course' )->callback( 'single-course/section/content.php', array( 'section' ) ),
323 20
324 );
325
326 add_action(
327 'learn-press/after-section-loop-item-title',
328 LearnPress::instance()->template( 'course' )->callback(
329 'single-course/section/item-meta.php',
330 array(
331 'item',
332 'section',
333 )
334 ),
335 10,
336 2
337 );
338
339 /** BEGIN: Quiz item */
340
341 /**
342 * @see LP_Template_Course::quiz_meta_questions()
343 * @see LP_Template_Course::item_meta_duration()
344 * @see LP_Template_Course::quiz_meta_final()
345 */
346 add_action(
347 'learn-press/course-section-item/before-lp_quiz-meta',
348 LearnPress::instance()->template( 'course' )->func( 'quiz_meta_questions' ),
349 10
350 );
351 add_action(
352 'learn-press/course-section-item/before-lp_quiz-meta',
353 LearnPress::instance()->template( 'course' )->func( 'item_meta_duration' ),
354 20
355 );
356 add_action(
357 'learn-press/course-section-item/before-lp_quiz-meta',
358 LearnPress::instance()->template( 'course' )->func( 'quiz_meta_final' ),
359 30
360 );
361 /** END: Quiz item */
362
363 /** BEGIN: Lesson item */
364 add_action(
365 'learn-press/course-section-item/before-lp_lesson-meta',
366 LearnPress::instance()->template( 'course' )->func( 'item_meta_duration' ),
367 10
368 );
369 /** END: Lesson item */
370
371 /** END: Course section */
372
373 /** BEGIN: Popup */
374 /**
375 * @see single-button-toggle-sidebar
376 */
377 add_action(
378 'learn-press/single-button-toggle-sidebar',
379 LearnPress::instance()->template( 'course' )->text( '<input type="checkbox" id="sidebar-toggle" />', 'single-button-toggle-sidebar' ),
380 5
381 );
382
383 /**
384 * @see LP_Template_Course::popup_header()
385 * @see LP_Template_Course::popup_sidebar()
386 * @see LP_Template_Course::popup_content()
387 * @see LP_Template_Course::popup_footer()
388 */
389 add_action( 'learn-press/single-item-summary', LearnPress::instance()->template( 'course' )->func( 'popup_header' ), 10 );
390 add_action( 'learn-press/single-item-summary', LearnPress::instance()->template( 'course' )->func( 'popup_sidebar' ), 20 );
391 add_action( 'learn-press/single-item-summary', LearnPress::instance()->template( 'course' )->func( 'popup_content' ), 30 );
392 add_action( 'learn-press/single-item-summary', LearnPress::instance()->template( 'course' )->func( 'popup_footer' ), 40 );
393
394 /**
395 * @see LP_Template_Course::popup_footer_nav()
396 */
397 add_action( 'learn-press/popup-footer', LearnPress::instance()->template( 'course' )->func( 'popup_footer_nav' ), 10 );
398 /** END: Popup */
399
400 /** BEGIN: Popup quiz */
401 /**
402 * @see LP_Template_Course::course_finish_button()
403 */
404 add_action( 'learn-press/quiz-buttons', LearnPress::instance()->template( 'course' )->func( 'course_finish_button' ), 10 );
405 /** END: Popup quiz */
406
407 /** BEGIN: Popup lesson */
408
409 /**
410 * @see LP_Template_Course::item_lesson_title()
411 * @see LP_Template_Course::item_lesson_content()
412 * @see LP_Template_Course::item_lesson_complete_button()
413 * @see LP_Template_Course::course_finish_button()
414 */
415 add_action(
416 'learn-press/before-content-item-summary/lp_lesson',
417 LearnPress::instance()->template( 'course' )->func( 'item_lesson_title' ),
418 10
419 );
420 add_action(
421 'learn-press/content-item-summary/lp_lesson',
422 LearnPress::instance()->template( 'course' )->func( 'item_lesson_content' ),
423 10
424 );
425 add_action(
426 'learn-press/after-content-item-summary/lp_lesson',
427 LearnPress::instance()->template( 'course' )->func( 'item_lesson_complete_button' ),
428 10
429 );
430 add_action(
431 'learn-press/after-content-item-summary/lp_lesson',
432 LearnPress::instance()->template( 'course' )->func( 'course_finish_button' ),
433 15
434 );
435 /** END: Popup lesson */
436
437 /**
438 * @see LP_Template_Course::course_item_content()
439 */
440 add_action( 'learn-press/course-item-content', LearnPress::instance()->template( 'course' )->func( 'course_item_content' ), 5 );
441
442 /** BEGIN: User profile */
443
444 /**
445 * @see LP_Template_Profile::header()
446 * @see LP_Template_Profile::tabs()
447 * @see LP_Template_Profile::content()
448 */
449 //add_action( 'learn-press/before-user-profile', LearnPress::instance()->template( 'profile' )->func( 'header' ), 10 );
450
451 add_action( 'learn-press/user-profile', LearnPress::instance()->template( 'profile' )->func( 'sidebar' ), 10 );
452 add_action( 'learn-press/user-profile', LearnPress::instance()->template( 'profile' )->func( 'content' ), 20 );
453
454 add_action( 'learn-press/user-profile-account', LearnPress::instance()->template( 'profile' )->text( ' <div class="lp-profile-left">', 'user-profile-account-left-open' ), 5 );
455 add_action( 'learn-press/user-profile-account', LearnPress::instance()->template( 'profile' )->func( 'avatar' ), 10 );
456 add_action( 'learn-press/user-profile-account', LearnPress::instance()->template( 'profile' )->func( 'socials' ), 10 );
457 add_action( 'learn-press/user-profile-account', LearnPress::instance()->template( 'profile' )->text( ' </div>', 'user-profile-account-left-close' ), 15 );
458 add_action( 'learn-press/user-profile-account', LearnPress::instance()->template( 'profile' )->func( 'header' ), 20 );
459
460 add_action( 'learn-press/user-profile-tabs', LearnPress::instance()->template( 'profile' )->func( 'tabs' ), 10 );
461
462
463 add_action( 'learn-press/profile/orders', LearnPress::instance()->template( 'profile' )->callback( 'profile/tabs/orders/list.php' ), 10 );
464 add_action(
465 'learn-press/profile/orders',
466 LearnPress::instance()->template( 'profile' )->callback( 'profile/tabs/orders/recover-order.php' ),
467 20
468 );
469
470 /**
471 * @see LP_Template_Profile::order_details()
472 * @see LP_Template_Profile::order_recover()
473 * @see LP_Template_Profile::order_message()
474 */
475 add_action( 'learn-press/profile/order-details', LearnPress::instance()->template( 'profile' )->func( 'order_details' ), 5 );
476 add_action( 'learn-press/profile/order-details', LearnPress::instance()->template( 'profile' )->func( 'order_recover' ), 10 );
477 add_action( 'learn-press/profile/order-details', LearnPress::instance()->template( 'profile' )->func( 'order_message' ), 15 );
478
479 /**
480 * @see LP_Template_Profile::dashboard_logged_in()
481 * @deprecated 4.1.6
482 */
483 // add_action( 'learn-press/profile/before-dashboard', LearnPress::instance()->template( 'profile' )->func( 'dashboard_statistic' ), 10 );
484 add_action(
485 'learn-press/profile/dashboard-summary',
486 LearnPress::instance()->template( 'profile' )->func( 'dashboard_featured_courses' ),
487 20
488 );
489 add_action(
490 'learn-press/profile/dashboard-summary',
491 LearnPress::instance()->template( 'profile' )->func( 'dashboard_latest_courses' ),
492 30
493 );
494
495 /**
496 * @see LP_Template_Profile::dashboard_not_logged_in()
497 * @see LP_Template_Profile::login_form()
498 * @see LP_Template_Profile::register_form()
499 */
500 add_action( 'learn-press/user-profile', LearnPress::instance()->template( 'profile' )->func( 'dashboard_not_logged_in' ), 5 );
501 add_action( 'learn-press/user-profile', LearnPress::instance()->template( 'profile' )->func( 'login_form' ), 10 );
502 add_action( 'learn-press/user-profile', LearnPress::instance()->template( 'profile' )->func( 'register_form' ), 15 );
503
504 /** BEGIN: Checkout page */
505 /**
506 * @see LP_Template_Checkout::review_order()
507 */
508 add_action( 'learn-press/before-checkout-form', LearnPress::instance()->template( 'checkout' )->func( 'review_order' ), 10 );
509 add_action( 'learn-press/after-checkout-form', LearnPress::instance()->template( 'checkout' )->func( 'account_logged_in' ), 20 );
510 add_action( 'learn-press/after-checkout-form', LearnPress::instance()->template( 'checkout' )->func( 'account_register' ), 30 );
511 add_action( 'learn-press/after-checkout-form', LearnPress::instance()->template( 'checkout' )->func( 'account_login' ), 40 );
512 add_action( 'learn-press/after-checkout-form', LearnPress::instance()->template( 'checkout' )->func( 'guest_checkout' ), 50 );
513 add_action( 'learn-press/after-checkout-form', LearnPress::instance()->template( 'checkout' )->func( 'order_comment' ), 60 );
514 add_action( 'learn-press/after-checkout-form', LearnPress::instance()->template( 'checkout' )->func( 'payment' ), 70 );
515 add_action( 'learn-press/after-checkout-form', LearnPress::instance()->template( 'checkout' )->func( 'terms' ), 80 );
516
517 // ******************************************************************************************************************* //
518
519 add_action( 'learn-press/content-item-summary-class', 'learn_press_content_item_summary_classes', 15 );
520 add_action(
521 'learn-press/before-content-item-summary/lp_quiz',
522 LearnPress::instance()->template( 'course' )->callback( 'content-quiz/title.php' ),
523 5
524 );
525 add_action( 'learn-press/content-item-summary/lp_quiz', LearnPress::instance()->template( 'course' )->callback( 'content-quiz/js' ), 25 );
526 // add_action( 'learn-press/parse-course-item', 'learn_press_control_displaying_course_item', 5 ); // comment by tungnx
527 //add_action( 'learn-press/after-single-course', 'learn_press_single_course_args', 5 );
528 add_filter( 'document_title_parts', 'learn_press_single_document_title_parts', 5 );
529
530 add_filter( 'body_class', 'learn_press_body_classes', 10 );
531 add_filter( 'post_class', 'learn_press_course_class', 15, 3 );
532 //add_action( 'wp_head', 'learn_press_single_course_args', 5 );
533 add_action(
534 'learn-press/before-checkout-order-review',
535 LearnPress::instance()->template( 'course' )->callback( 'checkout/form-logged-in.php' ),
536 10
537 );
538 add_filter( 'comments_template_query_args', 'learn_press_comments_template_query_args' );
539 add_filter( 'get_comments_number', 'learn_press_filter_get_comments_number' );
540
541 add_filter( 'excerpt_length', 'learn_press_custom_excerpt_length', 999 );
542 // add_filter( 'learn_press_get_template', LearnPress::instance()->template( 'general' )->func( 'filter_block_content_template' ), 10, 5 );
543
544 /**
545 * Filter to hide the section if there is no item.
546 *
547 * @param bool $visible
548 * @param LP_Course_Section $section
549 * @param LP_Course $course
550 *
551 * @return bool
552 * @since 4.0.0
553 */
554 function learn_press_filter_section_visible( $visible, $section, $course ) {
555 if ( ! $section->get_items() ) {
556 $visible = false;
557 }
558
559 return $visible;
560 }
561
562 add_filter( 'learn-press/section-visible', 'learn_press_filter_section_visible', 10, 3 );
563