<?php
/**
* Button template function.
*
* @package xts
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Direct access not allowed.
}
if ( ! function_exists( 'woodmart_elementor_button_template' ) ) {
function woodmart_elementor_button_template( $settings ) {
$default_settings = [
'text' => 'Read more',
'link' => '',
'button_smooth_scroll' => 'no',
'button_smooth_scroll_time' => '100',
'button_smooth_scroll_offset' => '100',
'button_collapsible_content' => 'no',
// General.
'color' => 'default',
'style' => 'default',
'shape' => 'rectangle',
'size' => 'default',
// Layout.
'full_width' => 'no',
'align' => 'center',
// Icon.
'icon_type' => 'icon',
'icon_position' => 'right',
'icon' => '',
'image' => '',
// Colors.
'color_scheme' => 'light',
'color_scheme_hover' => 'light',
'bg_color' => '',
'bg_color_hover' => '',
'custom_classes' => '',
'inline_edit' => true,
];
$settings = wp_parse_args( $settings, $default_settings );
// Classes.
$wrapper_attrs = '';
$wrapper_classes = '';
$link_classes = '';
$text_classes = '';
$inline_editing_key = '';
$wrapper_classes .= 'wd-button-wrapper';
$wrapper_classes .= woodmart_get_old_classes( ' woodmart-button-wrapper' );
$wrapper_classes .= ' text-' . $settings['align'];
if ( 'yes' === $settings['button_collapsible_content'] ) {
woodmart_enqueue_js_script( 'button-show-more' );
$wrapper_classes .= ' wd-collapsible-button';
}
$link_classes .= 'btn';
$link_classes .= ' btn-style-' . $settings['style'];
$link_classes .= ' btn-shape-' . $settings['shape'];
$link_classes .= ' btn-size-' . $settings['size'];
$link_classes .= $settings['custom_classes'] ? ' ' . $settings['custom_classes'] : '';
// Link settings.
$link_attrs = woodmart_get_link_attrs( $settings['link'] );
// Wrapper.
if ( 'yes' === $settings['button_smooth_scroll'] ) {
woodmart_enqueue_js_script( 'button-element' );
$wrapper_classes .= ' wd-smooth-scroll';
$wrapper_attrs .= ' data-smooth-time="' . $settings['button_smooth_scroll_time'] . '"';
$wrapper_attrs .= ' data-smooth-offset="' . $settings['button_smooth_scroll_offset'] . '"';
}
// Link classes.
if ( 'custom' === $settings['color'] && ( $settings['bg_color'] || $settings['bg_color_hover'] ) ) {
$style_attr = '';
if ( in_array( $settings['color_scheme'], array( 'light', 'dark' ), true ) ) {
$style_attr .= '--btn-color:' . ( 'light' === $settings['color_scheme'] ? '#fff' : '#333' ) . ';';
}
if ( in_array( $settings['color_scheme_hover'], array( 'light', 'dark' ), true ) ) {
$style_attr .= '--btn-color-hover:' . ( 'light' === $settings['color_scheme_hover'] ? '#fff' : '#333' ) . ';';
}
if ( $style_attr ) {
$link_attrs .= ' style="' . $style_attr . '"';
}
} elseif ( 'default' !== $settings['color'] ) {
$link_classes .= ' btn-color-' . $settings['color'];
}
if ( 'yes' === $settings['full_width'] ) {
$link_classes .= ' btn-full-width';
}
// Icon settings.
$icon_output = '';
if ( 'icon' === $settings['icon_type'] && $settings['icon'] ) {
$link_classes .= ' btn-icon-pos-' . $settings['icon_position'];
$icon_output = woodmart_elementor_get_render_icon(
$settings['icon'],
[
'class' => 'wd-icon',
],
'span'
);
} elseif ( 'image' === $settings['icon_type'] && ! empty( $settings['image'] ) ) {
$link_classes .= ' btn-icon-pos-' . $settings['icon_position'];
$icon_output = woodmart_otf_get_image_html( $settings['image']['id'], $settings['image_size'], $settings['image_custom_dimension'] );
if ( woodmart_is_svg( $settings['image']['url'] ) ) {
if ( 'custom' === $settings['image_size'] && ! empty( $settings['image_custom_dimension'] ) ) {
$icon_output = woodmart_get_svg_html( $settings['image']['id'], $settings['image_custom_dimension'] );
} else {
$icon_output = woodmart_get_svg_html( $settings['image']['id'], $settings['image_size'] );
}
}
}
// Text classes.
if ( woodmart_elementor_is_edit_mode() && $settings['inline_edit'] ) {
$text_classes .= ' elementor-inline-editing';
}
if ( isset( $settings['inline_editing_key'] ) ) {
$inline_editing_key = $settings['inline_editing_key'];
}
woodmart_enqueue_inline_style( 'button' );
?>
<div class="<?php echo esc_attr( $wrapper_classes ); ?>" <?php echo $wrapper_attrs; ?>>
<a class="<?php echo esc_attr( $link_classes ); ?>" <?php echo $link_attrs; ?>>
<span class="wd-btn-text<?php echo esc_attr( $text_classes ); ?>" data-elementor-setting-key="<?php echo esc_attr( $inline_editing_key ); ?>text">
<?php echo esc_html( $settings['text'] ); ?>
</span>
<?php if ( $icon_output ) : ?>
<span class="wd-btn-icon">
<?php echo $icon_output; ?>
</span>
<?php endif; ?>
</a>
</div>
<?php
}
}