308 lines
8.2 KiB
PHP
308 lines
8.2 KiB
PHP
<?php
|
|
/**
|
|
* Footer Widgets Markup
|
|
*
|
|
* @package Astra Addon
|
|
*/
|
|
|
|
if ( ! class_exists( 'Astra_Ext_Adv_Footer_Markup' ) ) {
|
|
|
|
/**
|
|
* Footer Widgets Markup Initial Setup
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
// @codingStandardsIgnoreStart
|
|
class Astra_Ext_Adv_Footer_Markup {
|
|
// @codingStandardsIgnoreEnd
|
|
|
|
/**
|
|
* Member Variable
|
|
*
|
|
* @var object instance
|
|
*/
|
|
private static $instance;
|
|
|
|
/**
|
|
* Initiator
|
|
*/
|
|
public static function get_instance() {
|
|
if ( ! isset( self::$instance ) ) {
|
|
self::$instance = new self();
|
|
}
|
|
return self::$instance;
|
|
}
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
public function __construct() {
|
|
|
|
/* Register Footer Widgets */
|
|
add_action( 'init', array( $this, 'register_advanced_footer_widget' ) );
|
|
|
|
remove_action( 'astra_footer_content', 'astra_advanced_footer_markup', 1 );
|
|
/* Add HTML Markup */
|
|
add_action( 'astra_footer_content', array( $this, 'html_markup_loader' ), 1 );
|
|
|
|
add_action( 'astra_addon_get_css_files', array( $this, 'add_styles' ) );
|
|
add_action( 'astra_get_fonts', array( $this, 'add_fonts' ), 1 );
|
|
|
|
/**
|
|
* Metabox setup
|
|
*/
|
|
add_filter( 'astra_meta_box_options', array( $this, 'add_options' ) );
|
|
add_action( 'astra_meta_box_markup_disable_sections_after', array( $this, 'add_options_markup' ) );
|
|
|
|
}
|
|
|
|
/**
|
|
* Add Meta Options
|
|
*
|
|
* @param array $meta_option Page Meta.
|
|
* @return array
|
|
*/
|
|
public function add_options( $meta_option ) {
|
|
|
|
if ( ! isset( $meta_option['footer-adv-display'] ) ) {
|
|
$meta_option['footer-adv-display'] = array(
|
|
'sanitize' => 'FILTER_SANITIZE_STRING',
|
|
);
|
|
}
|
|
return $meta_option;
|
|
}
|
|
|
|
/**
|
|
* Register Footer Widgets
|
|
*/
|
|
public function register_advanced_footer_widget() {
|
|
|
|
/**
|
|
* Register Footer Widgets area
|
|
*/
|
|
register_sidebar(
|
|
apply_filters(
|
|
'astra_advanced_footer_widget_1_args',
|
|
array(
|
|
'name' => esc_html__( 'Footer Widget Area 1', 'astra-addon' ),
|
|
'id' => 'advanced-footer-widget-1',
|
|
'before_widget' => '<div id="%1$s" class="widget %2$s">',
|
|
'after_widget' => '</div>',
|
|
'before_title' => '<h2 class="widget-title">',
|
|
'after_title' => '</h2>',
|
|
)
|
|
)
|
|
);
|
|
|
|
register_sidebar(
|
|
apply_filters(
|
|
'astra_advanced_footer_widget_2_args',
|
|
array(
|
|
'name' => esc_html__( 'Footer Widget Area 2', 'astra-addon' ),
|
|
'id' => 'advanced-footer-widget-2',
|
|
'before_widget' => '<div id="%1$s" class="widget %2$s">',
|
|
'after_widget' => '</div>',
|
|
'before_title' => '<h2 class="widget-title">',
|
|
'after_title' => '</h2>',
|
|
)
|
|
)
|
|
);
|
|
|
|
register_sidebar(
|
|
apply_filters(
|
|
'astra_advanced_footer_widget_3_args',
|
|
array(
|
|
'name' => esc_html__( 'Footer Widget Area 3', 'astra-addon' ),
|
|
'id' => 'advanced-footer-widget-3',
|
|
'before_widget' => '<div id="%1$s" class="widget %2$s">',
|
|
'after_widget' => '</div>',
|
|
'before_title' => '<h2 class="widget-title">',
|
|
'after_title' => '</h2>',
|
|
)
|
|
)
|
|
);
|
|
|
|
register_sidebar(
|
|
apply_filters(
|
|
'astra_advanced_footer_widget_4_args',
|
|
array(
|
|
'name' => esc_html__( 'Footer Widget Area 4', 'astra-addon' ),
|
|
'id' => 'advanced-footer-widget-4',
|
|
'before_widget' => '<div id="%1$s" class="widget %2$s">',
|
|
'after_widget' => '</div>',
|
|
'before_title' => '<h2 class="widget-title">',
|
|
'after_title' => '</h2>',
|
|
)
|
|
)
|
|
);
|
|
|
|
register_sidebar(
|
|
apply_filters(
|
|
'astra_advanced_footer_widget_5_args',
|
|
array(
|
|
'name' => esc_html__( 'Footer Widget Area 5', 'astra-addon' ),
|
|
'id' => 'advanced-footer-widget-5',
|
|
'before_widget' => '<div id="%1$s" class="widget %2$s">',
|
|
'after_widget' => '</div>',
|
|
'before_title' => '<h2 class="widget-title">',
|
|
'after_title' => '</h2>',
|
|
)
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Footer Widgets markup loader
|
|
*
|
|
* Loads appropriate template file based on the style option selected in options panel.
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function html_markup_loader() {
|
|
|
|
$advanced_footer_layout = astra_get_option( 'footer-adv' );
|
|
$advanced_footer_meta = astra_get_option_meta( 'footer-adv-display' );
|
|
|
|
if ( apply_filters( 'astra_advanced_footer_disable', false ) || 'disabled' == $advanced_footer_layout || 'disabled' == $advanced_footer_meta ) {
|
|
return;
|
|
}
|
|
|
|
// Add markup.
|
|
astra_addon_get_template( 'advanced-footer/template/' . esc_attr( $advanced_footer_layout ) . '.php' );
|
|
}
|
|
|
|
/**
|
|
* Footer Widgets Meta Field markup
|
|
*
|
|
* Loads appropriate template file based on the style option selected in options panel.
|
|
*
|
|
* @param array $meta Page Meta.
|
|
* @since 1.0.0
|
|
*/
|
|
public function add_options_markup( $meta ) {
|
|
|
|
if ( ! isset( $meta['footer-adv-display'] ) ) {
|
|
|
|
/**
|
|
* Get options
|
|
*/
|
|
$footer_adv = astra_get_option( 'footer-adv' );
|
|
if ( 'disabled' != $footer_adv ) {
|
|
$advanced_footer = ( isset( $meta['footer-adv-display']['default'] ) ) ? $meta['footer-adv-display']['default'] : 'default';
|
|
?>
|
|
<span>
|
|
<input type="checkbox" id="footer-adv-display" name="footer-adv-display" value="disabled" <?php checked( $advanced_footer, 'disabled' ); ?> />
|
|
<label for="footer-adv-display"><?php esc_html_e( 'Disable Footer Widgets', 'astra-addon' ); ?></label> <br />
|
|
</span>
|
|
<?php
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Add Styles Callback
|
|
*/
|
|
public function add_styles() {
|
|
|
|
$advanced_footer_layout = astra_get_option( 'footer-adv' );
|
|
if ( 'disabled' == $advanced_footer_layout ) {
|
|
return;
|
|
}
|
|
|
|
/*** Start Path Logic */
|
|
|
|
/* Define Variables */
|
|
$uri = ASTRA_ADDON_EXT_ADVANCED_FOOTER_URL . 'assets/css/';
|
|
$path = ASTRA_ADDON_EXT_ADVANCED_FOOTER_DIR . 'assets/css/';
|
|
$rtl = '';
|
|
|
|
if ( is_rtl() ) {
|
|
$rtl = '-rtl';
|
|
}
|
|
|
|
/* Directory and Extension */
|
|
$file_prefix = $rtl . '.min';
|
|
$dir_name = 'minified';
|
|
|
|
if ( SCRIPT_DEBUG ) {
|
|
$file_prefix = $rtl;
|
|
$dir_name = 'unminified';
|
|
}
|
|
|
|
$css_uri = $uri . $dir_name . '/';
|
|
$css_dir = $path . $dir_name . '/';
|
|
|
|
if ( defined( 'ASTRA_THEME_HTTP2' ) && ASTRA_THEME_HTTP2 ) {
|
|
$gen_path = $css_uri;
|
|
} else {
|
|
$gen_path = $css_dir;
|
|
}
|
|
|
|
/*** End Path Logic */
|
|
|
|
Astra_Minify::add_css( $gen_path . 'style' . $file_prefix . '.css' );
|
|
|
|
if ( 'layout-2' == $advanced_footer_layout ) {
|
|
return;
|
|
}
|
|
|
|
Astra_Minify::add_css( $gen_path . $advanced_footer_layout . $file_prefix . '.css' );
|
|
}
|
|
|
|
/**
|
|
* Add Font Family Callback
|
|
*/
|
|
public function add_fonts() {
|
|
|
|
$advanced_footer_layout = astra_get_option( 'footer-adv' );
|
|
if ( 'disabled' == $advanced_footer_layout ) {
|
|
return;
|
|
}
|
|
|
|
$font_family_advanced_footer_title = astra_get_option( 'footer-adv-wgt-title-font-family' );
|
|
$font_weight_advanced_footer_title = astra_get_option( 'footer-adv-wgt-title-font-weight' );
|
|
$font_family_advanced_footer_content = astra_get_option( 'footer-adv-wgt-content-font-family' );
|
|
$font_weight_advanced_footer_content = astra_get_option( 'footer-adv-wgt-content-font-weight' );
|
|
|
|
Astra_Fonts::add_font( $font_family_advanced_footer_title, $font_weight_advanced_footer_title );
|
|
Astra_Fonts::add_font( $font_family_advanced_footer_content, $font_weight_advanced_footer_content );
|
|
}
|
|
|
|
/**
|
|
* Get Footer Default Sidebar
|
|
*
|
|
* @param string $sidebar_id Sidebar Id..
|
|
* @return void
|
|
*/
|
|
public static function get_sidebar( $sidebar_id ) {
|
|
|
|
if ( is_active_sidebar( $sidebar_id ) ) {
|
|
dynamic_sidebar( $sidebar_id );
|
|
} elseif ( current_user_can( 'edit_theme_options' ) ) {
|
|
|
|
global $wp_registered_sidebars;
|
|
$sidebar_name = '';
|
|
if ( isset( $wp_registered_sidebars[ $sidebar_id ] ) ) {
|
|
$sidebar_name = $wp_registered_sidebars[ $sidebar_id ]['name'];
|
|
}
|
|
?>
|
|
<div class="widget ast-no-widget-row">
|
|
<h2 class='widget-title'><?php echo esc_html( $sidebar_name ); ?></h2>
|
|
|
|
<p class='no-widget-text'>
|
|
<a href='<?php echo esc_url( admin_url( 'widgets.php' ) ); ?>'>
|
|
<?php esc_html_e( 'Click here to assign a widget for this area.', 'astra-addon' ); ?>
|
|
</a>
|
|
</p>
|
|
</div>
|
|
<?php
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Kicking this off by calling 'get_instance()' method
|
|
*/
|
|
Astra_Ext_Adv_Footer_Markup::get_instance();
|