LLMS_Twenty_Twenty
LLMS_Twenty_Twenty class.
Description Description
.
Source Source
File: includes/theme-support/class-llms-twenty-twenty.php
class LLMS_Twenty_Twenty { /** * Constructor. * * @since 3.37.0 * * @return void */ public static function init() { // This theme doesn't have a sidebar. remove_action( 'lifterlms_sidebar', 'lifterlms_get_sidebar', 10 ); // Handle content wrappers. remove_action( 'lifterlms_before_main_content', 'lifterlms_output_content_wrapper', 10 ); remove_action( 'lifterlms_after_main_content', 'lifterlms_output_content_wrapper_end', 10 ); add_action( 'lifterlms_before_main_content', array( __CLASS__, 'output_content_wrapper' ), 10 ); add_action( 'lifterlms_after_main_content', array( __CLASS__, 'output_content_wrapper_end' ), 10 ); // Add the proper Twenty Twenty Body class on the catalogs. add_filter( 'body_class', array( __CLASS__, 'body_classes' ) ); // Modify catalog & checkout columns when the catalog page isn't full width. add_filter( 'lifterlms_loop_columns', array( __CLASS__, 'modify_columns_count' ) ); add_filter( 'llms_checkout_columns', array( __CLASS__, 'modify_columns_count' ) ); // Prevent meta output for LifterLMS custom Post Types. add_filter( 'twentytwenty_disallowed_post_types_for_meta_output', array( __CLASS__, 'hide_meta_output' ) ); add_filter( 'twentytwenty_get_elements_array', array( __CLASS__, 'add_elements' ) ); add_action( 'wp_head', array( __CLASS__, 'add_inline_styles' ), 100 ); } /** * Generate inline CSS using colors from the TwenyTwenty Theme settings. * * @since 3.37.0 * @since 3.37.1 Fixed course information block misalignment. * @since 3.37.3 Hide site header and footer, and set a white body background in single certificates. * * @return void */ public static function add_inline_styles() { global $post_type; $accent = sanitize_hex_color( twentytwenty_get_color_for_area( 'content', 'accent' ) ); ?> <style id="llms-twentytweny-style"> .llms-access-plan.featured .llms-access-plan-content, .llms-access-plan.featured .llms-access-plan-footer { border-left-color: <?php echo $accent; ?>; border-right-color: <?php echo $accent; ?>; } .llms-access-plan.featured .llms-access-plan-footer { border-bottom-color: <?php echo $accent; ?>; } .llms-form-field.type-radio input[type=radio]:checked+label:before { background-image: -webkit-radial-gradient(center,ellipse,<?php echo $accent; ?> 0,<?php echo $accent; ?> 40%,#fafafa 45%); background-image: radial-gradient(ellipse at center,<?php echo $accent; ?> 0,<?php echo $accent; ?> 40%,#fafafa 45%); } .llms-checkout-section, .llms-lesson-preview section.llms-main { padding-bottom: 0; padding-top: 0; } .llms-lesson-link .llms-pre-text, .llms-access-plan .llms-access-plan-title { margin-top: 0; } .llms-donut svg path { stroke: <?php echo $accent; ?>; } .llms-notification, .llms-instructor-info .llms-instructors .llms-author { border-top-color: <?php echo $accent; ?>; } .llms-pagination ul li:first-of-type, .llms-pagination ul { margin-left: 0; margin-right: 0; } .course .llms-meta-info { margin-left: auto; margin-right: auto; } <?php if ( 'llms_my_certificate' === $post_type || 'llms_certificate' === $post_type ) : ?> body { background-color: #fff; background-image: none; } #site-header, #site-footer { display: none; } <?php endif; ?> </style> <?php } /** * Add LifterLMS Elments to the array of Twenty Twenty elements. * * This is used to automatically generate inline CSS via the Twenty Twenty Theme. * * @since 3.37.0 * @since 3.37.2 Updated to use `background-color` property instead of `background` shorthand. * * @param array $elements Multidimensional array of CSS selectors. * @return array */ public static function add_elements( $elements ) { // Accent Background. $elements['content']['accent']['background-color'] = array_merge( $elements['content']['accent']['background-color'], self::add_elements_content_accent_background() ); // Accent Border Color. $elements['content']['accent']['border-color'] = array_merge( $elements['content']['accent']['border-color'], self::add_elements_content_accent_border() ); // Accent Color. $elements['content']['accent']['color'] = array_merge( $elements['content']['accent']['color'], self::add_elements_content_accent_color() ); // Background Text Color. $elements['content']['background']['color'] = array_merge( $elements['content']['background']['color'], self::add_elements_content_background_color() ); // Background Background Color. $elements['content']['background']['background-color'] = array_merge( $elements['content']['background']['background-color'], array( '.llms-checkout' ) ); // Text Color. $elements['content']['text']['color'] = array_merge( $elements['content']['text']['color'], array( '.llms-notice.llms-debug', '.llms-notice.llms-debug a', ) ); return $elements; } /** * Get an array of selectors for items that have the accent color as the background. * * @since 3.37.0 * @since 4.10.0 Use LLMS_Theme_Support utility classes. * * @return string[] */ protected static function add_elements_content_accent_background() { return LLMS_Theme_Support::get_selectors_primary_color_background(); } /** * Get an array of selectors for items that have the accent color as the border. * * @since 3.37.0 * @since 4.10.0 Use LLMS_Theme_Support utility classes. * * @return string[] */ protected static function add_elements_content_accent_border() { return LLMS_Theme_Support::get_selectors_primary_color_border(); } /** * Get an array of selectors for items that have the accent color as the text color. * * @since 3.37.0 * @since 4.10.0 Use LLMS_Theme_Support utility classes. * * @return string[] */ protected static function add_elements_content_accent_color() { return LLMS_Theme_Support::get_selectors_primary_color_text(); } /** * Get an array of selectors for items that have the background color as the text color. * * @since 3.37.0 * * @return string[] */ protected static function add_elements_content_background_color() { return array( // Buttons. '.llms-button-primary', '.llms-button-primary:hover', '.llms-button-primary.clicked', '.llms-button-primary:focus', '.llms-button-primary:active', '.llms-button-action', '.llms-button-action:hover', '.llms-button-action.clicked', '.llms-button-action:focus', '.llms-button-action:active', // Pricing Tables. '.llms-access-plan-title', '.llms-access-plan .stamp', '.llms-access-plan.featured .llms-access-plan-featured', // Checkout. '.llms-checkout-wrapper .llms-form-heading', // Notices. '.llms-notice', '.llms-notice a', // My Grades. '.llms-sd-widgets .llms-sd-widget .llms-sd-widget-title', ); } /** * Add Twenty Twenty's full-width template body class on catalogs where the page is set to use the Full Width template. * * @since 3.37.0 * * @param string[] $classes Array of body classes. * @return string[] */ public static function body_classes( $classes ) { $page_id = self::get_archive_page_id(); if ( $page_id && self::is_page_full_width( $page_id ) ) { $classes[] = 'template-full-width'; } return $classes; } /** * Retrieve the page ID of a a catalog page. * * @since 3.37.0 * * @return int|false */ protected static function get_archive_page_id() { $page_id = false; if ( is_courses() ) { $page_id = llms_get_page_id( 'courses' ); } elseif ( is_memberships() ) { $page_id = llms_get_page_id( 'memberships' ); } return $page_id; } /** * Get the twenty twenty theme's "width" class for use in wrapper elements. * * If the "Full Width" template is utilized, there's no class, otherwise the class `thin` is used. * * @since 3.37.0 * * @return string */ protected static function get_page_template_class() { $template_class = 'thin'; $page_id = self::get_archive_page_id(); if ( $page_id ) { $template_class = self::is_page_full_width( $page_id ) ? '' : 'thin'; } else { $template_class = is_page_template( 'templates/template-full-width.php' ) ? '' : 'thin'; } return $template_class; } /** * Prevent theme meta information from being output on LifterLMS Custom Post Types. * * @since 3.37.0 * * @param string[] $post_types Array of post type names. * @return string[] */ public static function hide_meta_output( $post_types ) { return array_merge( $post_types, array( 'course', 'llms_membership', 'lesson', 'llms_quiz' ) ); } /** * Determine if the given page is utilizing the twenty twenty full-width page template. * * @since 3.37.0 * * @param int $page_id WP_Post ID of the catalog page. * @return bool */ protected static function is_page_full_width( $page_id ) { return 'templates/template-full-width.php' === get_page_template_slug( $page_id ); } /** * Modify the number of catalog & checkout columns. * * If the default template is used, drop to a single column. * * @since 3.37.0 * * @param int $cols Number of columns. * @return int */ public static function modify_columns_count( $cols ) { if ( 'thin' === self::get_page_template_class() ) { return 1; } return $cols; } /** * Output the opening wrapper for the content description element in the theme's header. * * @since 3.37.0 * * @return void */ public static function output_archive_description_wrapper() { echo '<div class="archive-subtitle section-inner thin max-percentage intro-text">'; } /** * Output the closing wrapper for the content description element in the theme's header. * * @since 3.37.0 * * @return void */ public static function output_archive_description_wrapper_end() { echo '</div><!-- .archive-subtitle -->'; } /** * Output Twenty Twenty theme wrapper openers * * @since 3.37.0 * * @return void */ public static function output_content_wrapper() { $show_title = apply_filters( 'lifterlms_show_page_title', true ); $has_desc = has_action( 'lifterlms_archive_description' ); if ( $has_desc ) { add_action( 'lifterlms_archive_description', array( __CLASS__, 'output_archive_description_wrapper' ), -1 ); add_action( 'lifterlms_archive_description', array( __CLASS__, 'output_archive_description_wrapper_end' ), 99999999 ); } if ( $show_title ) { add_filter( 'lifterlms_show_page_title', '__return_false' ); } ?> <main id="site-content" role="main"> <?php if ( $show_title || $has_desc ) : ?> <header class="archive-header has-text-align-center header-footer-group"> <div class="archive-header-inner section-inner medium"> <?php if ( $show_title ) : ?> <h1 class="archive-title"><?php lifterlms_page_title(); ?></h1> <?php endif; ?> <?php endif; ?> <?php // If there's no description, output the end wrapper now. if ( $show_title && ! $has_desc ) { self::output_content_wrapper_part_two(); } else { // Otherwise output the wrapper after the end wrapper for the description wrapper div. add_action( 'lifterlms_archive_description', array( __CLASS__, 'output_content_wrapper_part_two' ), 99999999 ); } } /** * Outputs header closing wrappers and inner element opening wrappers for the theme wrappers. * * @since 3.37.0 * * @return void */ public static function output_content_wrapper_part_two() { ?> </div><!-- .archive-header-inner --> </header><!-- .archive-header --> <article <?php post_class(); ?> id="post-<?php the_ID(); ?>"> <div class="post-inner section-inner <?php echo self::get_page_template_class(); ?> "> <div class="entry-content"> <?php } /** * Output Twenty Twenty theme wrapper closers * * @since 3.37.0 * * @return void */ public static function output_content_wrapper_end() { ?> </div><!-- .entry-content --> </div><!-- .post-inner --> </article><!-- .post --> </main><!-- #site-content --> <?php } }
Expand full source code Collapse full source code View on GitHub
Methods Methods
- add_elements — Add LifterLMS Elments to the array of Twenty Twenty elements.
- add_elements_content_accent_background — Get an array of selectors for items that have the accent color as the background.
- add_elements_content_accent_border — Get an array of selectors for items that have the accent color as the border.
- add_elements_content_accent_color — Get an array of selectors for items that have the accent color as the text color.
- add_elements_content_background_color — Get an array of selectors for items that have the background color as the text color.
- add_inline_styles — Generate inline CSS using colors from the TwenyTwenty Theme settings.
- body_classes — Add Twenty Twenty's full-width template body class on catalogs where the page is set to use the Full Width template.
- get_archive_page_id — Retrieve the page ID of a a catalog page.
- get_page_template_class — Get the twenty twenty theme's "width" class for use in wrapper elements.
- hide_meta_output — Prevent theme meta information from being output on LifterLMS Custom Post Types.
- init — Constructor.
- is_page_full_width — Determine if the given page is utilizing the twenty twenty full-width page template.
- modify_columns_count — Modify the number of catalog & checkout columns.
- output_archive_description_wrapper — Output the opening wrapper for the content description element in the theme's header.
- output_archive_description_wrapper_end — Output the closing wrapper for the content description element in the theme's header.
- output_content_wrapper — Output Twenty Twenty theme wrapper openers
- output_content_wrapper_end — Output Twenty Twenty theme wrapper closers
- output_content_wrapper_part_two — Outputs header closing wrappers and inner element opening wrappers for the theme wrappers.
Changelog Changelog
Version | Description |
---|---|
3.37.3 | Hide site header and footer, and set a white body background in single certificates. |
3.37.2 | Updated to use background-color property instead of background shorthand when adding custom elements to style. |
3.37.1 | Fixed course information block misalignment. |
3.37.0 | Introduced. |