'; $page_title = $obj->get_page_title(); if ( $page_title ) { echo '

' . wp_kses_post( $page_title ) . '

'; } $page_subtitle = $obj->get_page_subtitle(); if ( $page_subtitle ) { echo '

' . wp_kses_post( $page_subtitle ) . '

'; } $quick_links = $obj->get_quick_links(); if ( ! empty( $quick_links ) ) { self::render_quick_links( $quick_links ); } echo ''; } /** * Render quick links. * * @since 1.0.0 * * @param array $links Links list. */ public static function render_quick_links( $links ) { if ( ! empty( $links ) ) { echo ''; } } /** * Render tab navigation. * * @since 1.0.0 * * @param array $tabs Tabs list. * @param Welcome $obj Instance of Welcome. */ public static function render_tab_navigation( $tabs, $obj ) { echo '
'; $slug = $obj->get_slug(); foreach ( $tabs as $tab ) { $attrs = array( 'href' => '#' . $slug . '-' . $tab['id'], 'class' => array( 'tab-nav', 'tab-' . $tab['id'] ), ); echo '

' . esc_html( $tab['title'] ) . '

'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } echo '
'; } /** * Render tabs content. * * @since 1.0.0 * * @param array $tabs Tabs list. * @param Welcome $obj Instance of Welcome. */ public static function render_tabs_content( $tabs, $obj ) { $slug = $obj->get_slug(); foreach ( $tabs as $tab ) { echo '
'; self::render_tab( $tab ); echo '
'; } } /** * Render tab content. * * @since 1.0.0 * * @param array $tab Tab detail. */ public static function render_tab( $tab ) { do_action( 'wp_welcome_before_tab_content', $tab ); switch ( $tab['type'] ) { case 'content': if ( isset( $tab['content'] ) ) { echo wp_kses_post( wpautop( $tab['content'] ) ); } break; case 'custom': if ( isset( $tab['render_callback'] ) && is_callable( $tab['render_callback'] ) ) { $tab['render_callback'](); } break; case 'grid': if ( isset( $tab['items'] ) && ! empty( $tab['items'] ) ) { self::render_grid_items( $tab['items'], array( 'grid_columns' => $tab['grid_columns'] ) ); } break; case 'plugin': if ( isset( $tab['items'] ) && ! empty( $tab['items'] ) ) { self::render_plugin_items( $tab['items'] ); } break; case 'comparison': if ( isset( $tab['items'] ) && ! empty( $tab['items'] ) ) { $headings = ( isset( $tab['headings'] ) && ! empty( $tab['headings'] ) ) ? $tab['headings'] : array(); $upgrade = ( isset( $tab['upgrade_button'] ) && ! empty( $tab['upgrade_button'] ) ) ? $tab['upgrade_button'] : array(); self::render_comparison_table( $tab['items'], $headings, $upgrade ); } break; default: break; } do_action( 'wp_welcome_after_tab_content', $tab ); } /** * Render grid items. * * @since 1.0.0 * * @param array $items Grid items list. * @param array $args Grid extra arguments. */ public static function render_grid_items( $items, $args = array() ) { $cols = ( isset( $args['grid_columns'] ) && absint( $args['grid_columns'] ) > 0 ) ? absint( $args['grid_columns'] ) : 2; echo '
'; foreach ( $items as $key => $item ) { self::render_grid_item( $item ); } echo '
'; } /** * Render grid item. * * @since 1.0.0 * * @param array $item Grid item detail. */ private static function render_grid_item( $item ) { echo '
'; if ( isset( $item['title'] ) && ! empty( $item['title'] ) ) { echo '

'; if ( isset( $item['icon'] ) && ! empty( $item['icon'] ) ) { echo ''; } echo esc_html( $item['title'] ); echo '

'; } if ( isset( $item['render_callback'] ) && is_callable( $item['render_callback'] ) ) { call_user_func( $item['render_callback'] ); } elseif ( isset( $item['description'] ) && ! empty( $item['description'] ) ) { echo '

' . wp_kses_post( $item['description'] ) . '

'; } if ( isset( $item['button_text'] ) && ! empty( $item['button_text'] ) && isset( $item['button_url'] ) && ! empty( $item['button_url'] ) ) { $button_target = ( isset( $item['is_new_tab'] ) && ( true === wp_validate_boolean( $item['is_new_tab'] ) ) ) ? '_blank' : '_self'; $button_class = ''; if ( isset( $item['button_type'] ) && ! empty( $item['button_type'] ) ) { if ( 'primary' === $item['button_type'] ) { $button_class = 'button button-primary'; } elseif ( 'secondary' === $item['button_type'] ) { $button_class = 'button button-secondary'; } } echo '

' . esc_html( $item['button_text'] ) . '

'; } echo '
'; } /** * Render plugin items. * * @since 1.0.0 * * @param array $items Plugin items list. */ public static function render_plugin_items( $items ) { echo '
'; foreach ( $items as $key => $item ) { self::render_plugin_item( $item ); } echo '
'; } /** * Render plugin item. * * @since 1.0.0 * * @param array $item Plugin item detail. */ public static function render_plugin_item( $item ) { echo '
'; if ( isset( $item['name'] ) && ! empty( $item['name'] ) ) { echo '

' . esc_html( $item['name'] ) . '

'; } if ( isset( $item['description'] ) && ! empty( $item['description'] ) ) { echo '

' . wp_kses_post( $item['description'] ) . '

'; } $button_text = esc_html__( 'Install Now', 'wp-welcome' ); $button_classes = 'button button-primary install'; if ( Helper::is_plugin_installed( $item['slug'] ) && ! Helper::is_plugin_active( $item['slug'] ) ) { $button_text = esc_html__( 'Activate', 'wp-welcome' ); $button_classes = 'button activate'; } elseif ( Helper::is_plugin_active( $item['slug'] ) ) { $button_text = esc_html__( 'Activated', 'wp-welcome' ); $button_classes = 'button disabled'; } echo '
'; echo '' . esc_html( $button_text ) . ''; echo '' . esc_html__( 'View Details', 'wp-welcome' ) . ''; echo '
'; echo '
'; } /** * Render comparison table. * * @since 1.0.0 * * @param array $items Table items. * @param array $headings Headings detail. * @param array $upgrade Upgrade button detail. */ public static function render_comparison_table( $items, $headings, $upgrade ) { $headings = wp_parse_args( $headings, array( 'free' => esc_html__( 'Free', 'wp-welcome' ), 'pro' => esc_html__( 'Pro', 'wp-welcome' ), ) ); $upgrade = wp_parse_args( $upgrade, array( 'text' => esc_html__( 'Upgrade to Pro', 'wp-welcome' ), 'url' => '', ) ); ?>

'; } elseif ( 'no' === $item['free'] ) { echo ''; } else { echo esc_html( $item['free'] ); } ?> '; } elseif ( 'no' === $item['pro'] ) { echo ''; } else { echo esc_html( $item['pro'] ); } ?>
array( 'wpw-box' ), ); if ( ! empty( $args['class'] ) ) { $box_attrs['class'][] = $args['class']; } echo '
'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped if ( $args['title'] ) { echo '

'; if ( ! empty( $args['icon'] ) ) { echo ''; } echo esc_html( $args['title'] ); echo '

'; } if ( 'content' === $args['type'] ) { echo wp_kses_post( wpautop( $args['content'] ) ); } if ( 'custom' === $args['type'] ) { if ( is_callable( $args['render_callback'] ) ) { call_user_func( $args['render_callback'], $obj ); } } if ( ! empty( $args['button_text'] ) && ! empty( $args['button_url'] ) ) { $button_attrs = array( 'href' => $args['button_url'], ); if ( ! empty( $args['button_class'] ) ) { $button_attrs['class'] = $args['button_class']; } if ( true === $args['button_new_tab'] ) { $button_attrs['target'] = '_blank'; } echo '' . esc_html( $args['button_text'] ) . ''; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } echo '
'; } }