';
$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 '';
foreach ( $links as $link ) {
$button_classes = '';
if ( isset( $link['type'] ) ) {
if ( 'primary' === $link['type'] ) {
$button_classes = 'button button-primary';
} elseif ( 'secondary' === $link['type'] ) {
$button_classes = 'button button-secondary';
}
}
echo '
' . esc_html( $link['text'] ) . '';
}
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 '
'; // 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'] );
} else {
if ( 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 '
';
}
/**
* 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 '
';
}
}