init commit
This commit is contained in:
75
inc/custom-header.php
Normal file
75
inc/custom-header.php
Normal file
@ -0,0 +1,75 @@
|
||||
<?php
|
||||
/**
|
||||
* Sample implementation of the Custom Header feature
|
||||
*
|
||||
* You can add an optional custom header image to header.php like so ...
|
||||
*
|
||||
*
|
||||
* @link https://developer.wordpress.org/themes/functionality/custom-headers/
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* Set up the WordPress core custom header feature.
|
||||
*
|
||||
* @uses sophia_after_dark_header_style()
|
||||
*/
|
||||
function sophia_after_dark_custom_header_setup() {
|
||||
add_theme_support( 'custom-header', apply_filters( 'sophia_after_dark_custom_header_args', array(
|
||||
'default-image' => '',
|
||||
'default-text-color' => '000000',
|
||||
'width' => 1000,
|
||||
'height' => 250,
|
||||
'flex-height' => true,
|
||||
'flex-width' => true,
|
||||
'wp-head-callback' => 'sophia_after_dark_header_style',
|
||||
) ) );
|
||||
}
|
||||
add_action( 'after_setup_theme', 'sophia_after_dark_custom_header_setup' );
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_header_style' ) ) :
|
||||
|
||||
/**
|
||||
* Styles the header image and text displayed on the blog.
|
||||
*
|
||||
* @see sophia_after_dark_custom_header_setup().
|
||||
*/
|
||||
function sophia_after_dark_header_style() {
|
||||
$header_text_color = get_header_textcolor();
|
||||
|
||||
/*
|
||||
* If no custom options for text are set, let's bail.
|
||||
* get_header_textcolor() options: Any hex value, 'blank' to hide text. Default: add_theme_support( 'custom-header' ).
|
||||
*/
|
||||
if ( get_theme_support( 'custom-header', 'default-text-color' ) === $header_text_color ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// If we get this far, we have custom styles. Let's do this.
|
||||
?>
|
||||
<style type="text/css">
|
||||
<?php
|
||||
// Has the text been hidden?
|
||||
if ( ! display_header_text() ) :
|
||||
?>
|
||||
.site-title,
|
||||
.site-description {
|
||||
position: absolute;
|
||||
clip: rect(1px, 1px, 1px, 1px);
|
||||
}
|
||||
<?php
|
||||
// If the user has set a custom color for the text use that.
|
||||
else :
|
||||
?>
|
||||
.site-title a,
|
||||
.site-description {
|
||||
color: #<?php echo esc_attr( $header_text_color ); ?>;
|
||||
}
|
||||
<?php endif; ?>
|
||||
</style>
|
||||
<?php
|
||||
}
|
||||
|
||||
endif;
|
176
inc/customizer/mt-callback.php
Normal file
176
inc/customizer/mt-callback.php
Normal file
@ -0,0 +1,176 @@
|
||||
<?php
|
||||
/**
|
||||
* Define callback functions for active_callback.
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_enable_top_header_active_callback' ) ) :
|
||||
|
||||
/**
|
||||
* Check if top header option is enabled.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @param WP_Customize_Control $control WP_Customize_Control instance.
|
||||
*
|
||||
* @return bool Whether the control is active to the current preview.
|
||||
*/
|
||||
function sophia_after_dark_enable_top_header_active_callback( $control ) {
|
||||
if ( false !== $control->manager->get_setting( 'sophia_after_dark_enable_top_header' )->value() ) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_enable_top_header_trending_active_callback' ) ) :
|
||||
|
||||
/**
|
||||
* Check if top header option and trending section option is enabled.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @param WP_Customize_Control $control WP_Customize_Control instance.
|
||||
*
|
||||
* @return bool Whether the control is active to the current preview.
|
||||
*/
|
||||
function sophia_after_dark_enable_top_header_trending_active_callback( $control ) {
|
||||
if ( false !== $control->manager->get_setting( 'sophia_after_dark_enable_top_header' )->value() && false !== $control->manager->get_setting( 'sophia_after_dark_enable_trending' )->value() ) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_enable_top_header_live_now_active_callback' ) ) :
|
||||
|
||||
/**
|
||||
* Check if top header option and trending section option is enabled.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @param WP_Customize_Control $control WP_Customize_Control instance.
|
||||
*
|
||||
* @return bool Whether the control is active to the current preview.
|
||||
*/
|
||||
function sophia_after_dark_enable_top_header_live_now_active_callback( $control ) {
|
||||
if ( false !== $control->manager->get_setting( 'sophia_after_dark_enable_top_header' )->value() && false !== $control->manager->get_setting( 'sophia_after_dark_enable_live_now' )->value() ) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_section_slider_option_active_callback' ) ) :
|
||||
|
||||
/**
|
||||
* Check if slider option is enabled.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @param WP_Customize_Control $control WP_Customize_Control instance.
|
||||
*
|
||||
* @return bool Whether the control is active to the current preview.
|
||||
*/
|
||||
function sophia_after_dark_section_slider_option_active_callback( $control ) {
|
||||
if ( false !== $control->manager->get_setting( 'sophia_after_dark_section_slider_option' )->value() ) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_section_top_featured_posts_option_active_callback' ) ) :
|
||||
|
||||
/**
|
||||
* Check if top featured posts option is enabled.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @param WP_Customize_Control $control WP_Customize_Control instance.
|
||||
*
|
||||
* @return bool Whether the control is active to the current preview.
|
||||
*/
|
||||
function sophia_after_dark_section_top_featured_posts_option_active_callback( $control ) {
|
||||
if ( false !== $control->manager->get_setting( 'sophia_after_dark_section_top_featured_posts_option' )->value() ) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_enable_footer_widget_area_active_callback' ) ) :
|
||||
|
||||
/**
|
||||
* Check if foooter menu option is enabled.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @param WP_Customize_Control $control WP_Customize_Control instance.
|
||||
*
|
||||
* @return bool Whether the control is active to the current preview.
|
||||
*/
|
||||
function sophia_after_dark_enable_footer_widget_area_active_callback( $control ) {
|
||||
if ( false !== $control->manager->get_setting( 'sophia_after_dark_enable_footer_widget_area' )->value() ) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_enable_footer_menu_active_callback' ) ) :
|
||||
|
||||
/**
|
||||
* Check if foooter menu option is enabled.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @param WP_Customize_Control $control WP_Customize_Control instance.
|
||||
*
|
||||
* @return bool Whether the control is active to the current preview.
|
||||
*/
|
||||
function sophia_after_dark_enable_footer_menu_active_callback( $control ) {
|
||||
if ( false !== $control->manager->get_setting( 'sophia_after_dark_enable_footer_menu' )->value() ) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_enable_pnf_latest_posts_active_callback' ) ) :
|
||||
|
||||
/**
|
||||
* Check if pnf latest posts option is enabled.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @param WP_Customize_Control $control WP_Customize_Control instance.
|
||||
*
|
||||
* @return bool Whether the control is active to the current preview.
|
||||
*/
|
||||
function sophia_after_dark_enable_pnf_latest_posts_active_callback( $control ) {
|
||||
if ( false !== $control->manager->get_setting( 'sophia_after_dark_enable_pnf_latest_posts' )->value() ) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
113
inc/customizer/mt-customizer-additional-panel-options.php
Normal file
113
inc/customizer/mt-customizer-additional-panel-options.php
Normal file
@ -0,0 +1,113 @@
|
||||
<?php
|
||||
/**
|
||||
* Sophia After Dark manage the Customizer options of additional panel.
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
add_action( 'customize_register', 'sophia_after_dark_customize_additinal_panels_sections_register' );
|
||||
/**
|
||||
* Add Additional panels in the theme customize
|
||||
*
|
||||
*/
|
||||
function sophia_after_dark_customize_additinal_panels_sections_register( $wp_customize ) {
|
||||
|
||||
/*------------------------------------------------ Social Icons Section ------------------------------------------------*/
|
||||
/**
|
||||
* Social Icons
|
||||
*/
|
||||
$wp_customize->add_section( 'sophia_after_dark_section_social_icons',
|
||||
array(
|
||||
'title' => esc_html__( 'Social Icons', 'sophia-after-dark' ),
|
||||
'panel' => 'sophia_after_dark_additional_panel',
|
||||
'capability' => 'edit_theme_options',
|
||||
'priority' => 5,
|
||||
'theme_supports' => '',
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Repeater field for social icons
|
||||
*/
|
||||
$wp_customize->add_setting(
|
||||
'sophia_after_dark_social_icons',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => json_encode( array(
|
||||
array(
|
||||
'social_icon' => 'fa fa-twitter',
|
||||
'social_url' => '#',
|
||||
),
|
||||
array(
|
||||
'social_icon' => 'fa fa-pinterest',
|
||||
'social_url' => '#',
|
||||
)
|
||||
)
|
||||
),
|
||||
'sanitize_callback' => 'wp_kses_post'
|
||||
)
|
||||
);
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Repeater(
|
||||
$wp_customize,
|
||||
'sophia_after_dark_social_icons',
|
||||
array(
|
||||
'label' => __( 'Social Media', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_social_icons',
|
||||
'settings' => 'sophia_after_dark_social_icons',
|
||||
'priority' => 5,
|
||||
'sophia_after_dark_box_label_text' => __( 'Social Media Icons','sophia-after-dark' ),
|
||||
'sophia_after_dark_box_add_control_text' => __( 'Add Icon','sophia-after-dark' )
|
||||
),
|
||||
array(
|
||||
'social_icon' => array(
|
||||
'type' => 'social_icon',
|
||||
'label' => esc_html__( 'Social Icon', 'sophia-after-dark' ),
|
||||
'description' => __( 'Choose social media icon.', 'sophia-after-dark' )
|
||||
),
|
||||
'social_url' => array(
|
||||
'type' => 'url',
|
||||
'label' => esc_html__( 'Social Link URL', 'sophia-after-dark' ),
|
||||
'description' => __( 'Enter social media url.', 'sophia-after-dark' )
|
||||
),
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/*------------------------------------------------ Breadcrumbs Section ------------------------------------------------*
|
||||
/**
|
||||
* Breadcrumbs
|
||||
*/
|
||||
$wp_customize->add_section( 'sophia_after_dark_section_breadcrumbs',
|
||||
array(
|
||||
'title' => esc_html__( 'Breadcrumbs', 'sophia-after-dark' ),
|
||||
'panel' => 'sophia_after_dark_additional_panel',
|
||||
'capability' => 'edit_theme_options',
|
||||
'priority' => 10,
|
||||
'theme_supports' => '',
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Toggle field for Enable/Disable breadcrumbs.
|
||||
*
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_enable_breadcrumb_option',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => true,
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_checkbox'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Toggle(
|
||||
$wp_customize, 'sophia_after_dark_enable_breadcrumb_option',
|
||||
array(
|
||||
'label' => __( 'Enable Breadcrumbs', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_breadcrumbs',
|
||||
'settings' => 'sophia_after_dark_enable_breadcrumb_option',
|
||||
'priority' => 5,
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
}
|
367
inc/customizer/mt-customizer-custom-classes.php
Normal file
367
inc/customizer/mt-customizer-custom-classes.php
Normal file
@ -0,0 +1,367 @@
|
||||
<?php
|
||||
/**
|
||||
* Sophia After Dark include the Customizer custom classes of customizer fields.
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
add_action( 'customize_register', 'sophia_after_dark_register_custom_controls' );
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_register_custom_controls' ) ) :
|
||||
/**
|
||||
* Register Custom Controls
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
function sophia_after_dark_register_custom_controls( $wp_customize ) {
|
||||
|
||||
if ( ! class_exists( 'sophia_after_dark_Control_Toggle' ) ) {
|
||||
/**
|
||||
* Toggle control (modified checkbox)
|
||||
*/
|
||||
class Sophia_After_Dark_Control_Toggle extends WP_Customize_Control {
|
||||
|
||||
/**
|
||||
* The control type.
|
||||
*
|
||||
* @access public
|
||||
* @var string
|
||||
*/
|
||||
public $type = 'mt-toggle';
|
||||
|
||||
public $tooltip = '';
|
||||
|
||||
public function to_json() {
|
||||
parent::to_json();
|
||||
|
||||
if ( isset( $this->default ) ) {
|
||||
$this->json['default'] = $this->default;
|
||||
} else{
|
||||
$this->json['default'] = $this->setting->default;
|
||||
}
|
||||
|
||||
$this->json['value'] = $this->value();
|
||||
$this->json['link'] = $this->get_link();
|
||||
$this->json['id'] = $this->id;
|
||||
$this->json['tooltip'] = $this->tooltip;
|
||||
|
||||
$this->json['inputAttrs'] = '';
|
||||
foreach ( $this->input_attrs as $attr => $value ) {
|
||||
$this->json['inputAttrs'] .= $attr . '="' . esc_attr( $value ) . '" ';
|
||||
}
|
||||
}
|
||||
|
||||
protected function content_template() {
|
||||
?>
|
||||
<# if ( data.tooltip ) { #>
|
||||
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
||||
<# } #>
|
||||
<label for="toggle_{{ data.id }}">
|
||||
<span class="customize-control-title">
|
||||
{{{ data.label }}}
|
||||
</span>
|
||||
<# if ( data.description ) { #>
|
||||
<span class="description customize-control-description">{{{ data.description }}}</span>
|
||||
<# } #>
|
||||
<input {{{ data.inputAttrs }}} name="toggle_{{ data.id }}" id="toggle_{{ data.id }}" type="checkbox" value="{{ data.value }}" {{{ data.link }}}<# if ( '1' == data.value ) { #> checked<# } #> hidden />
|
||||
<span class="switch"></span>
|
||||
</label>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
} //Ends sophia_after_dark_Control_Toggle
|
||||
|
||||
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
if ( ! class_exists( 'sophia_after_dark_Control_Radio_Image' ) ) {
|
||||
|
||||
/**
|
||||
* Radio Image control (modified radio).
|
||||
*/
|
||||
class Sophia_After_Dark_Control_Radio_Image extends WP_Customize_Control {
|
||||
|
||||
/**
|
||||
* The control type.
|
||||
*
|
||||
* @access public
|
||||
* @var string
|
||||
*/
|
||||
public $type = 'mt-radio-image';
|
||||
|
||||
public $tooltip = '';
|
||||
|
||||
public function to_json() {
|
||||
parent::to_json();
|
||||
|
||||
if ( isset( $this->default ) ) {
|
||||
$this->json['default'] = $this->default;
|
||||
} else {
|
||||
$this->json['default'] = $this->setting->default;
|
||||
}
|
||||
|
||||
$this->json['value'] = $this->value();
|
||||
$this->json['link'] = $this->get_link();
|
||||
$this->json['id'] = $this->id;
|
||||
$this->json['tooltip'] = $this->tooltip;
|
||||
$this->json['choices'] = $this->choices;
|
||||
|
||||
$this->json['inputAttrs'] = '';
|
||||
foreach ( $this->input_attrs as $attr => $value ) {
|
||||
$this->json['inputAttrs'] .= $attr . '="' . esc_attr( $value ) . '" ';
|
||||
}
|
||||
}
|
||||
|
||||
protected function content_template() {
|
||||
?>
|
||||
|
||||
<# if ( data.tooltip ) { #>
|
||||
<a href="#" class="tooltip hint--left" data-hint="{{ data.tooltip }}"><span class='dashicons dashicons-info'></span></a>
|
||||
<# } #>
|
||||
<label class="customizer-text">
|
||||
<# if ( data.label ) { #><span class="customize-control-title">{{{ data.label }}}</span><# } #>
|
||||
<# if ( data.description ) { #><span class="description customize-control-description">{{{ data.description }}}</span><# } #>
|
||||
</label>
|
||||
<div id="input_{{ data.id }}" class="image">
|
||||
<# for ( key in data.choices ) { #>
|
||||
<# dataAlt = ( _.isObject( data.choices[ key ] ) && ! _.isUndefined( data.choices[ key ].alt ) ) ? data.choices[ key ].alt : '' #>
|
||||
<input {{{ data.inputAttrs }}} class="image-select" type="radio" value="{{ key }}" name="_customize-radio-{{ data.id }}" id="{{ data.id }}{{ key }}" {{{ data.link }}}<# if ( data.value === key ) { #> checked="checked"<# } #> data-alt="{{ dataAlt }}">
|
||||
<label for="{{ data.id }}{{ key }}" {{{ data.labelStyle }}} class="{{{ data.id + key }}}">
|
||||
<# if ( _.isObject( data.choices[ key ] ) ) { #>
|
||||
<img src="{{ data.choices[ key ].src }}" alt="{{ data.choices[ key ].alt }}">
|
||||
<span class="image-label"><span class="inner">{{ data.choices[ key ].alt }}</span></span>
|
||||
<# } else { #>
|
||||
<img src="{{ data.choices[ key ] }}">
|
||||
<# } #>
|
||||
<span class="image-clickable"></span>
|
||||
</label>
|
||||
</input>
|
||||
<# } #>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
if ( ! class_exists( 'sophia_after_dark_Control_Repeater' ) ) {
|
||||
|
||||
/**
|
||||
* Repeater control
|
||||
*/
|
||||
class Sophia_After_Dark_Control_Repeater extends WP_Customize_Control {
|
||||
|
||||
/**
|
||||
* The control type.
|
||||
*
|
||||
* @access public
|
||||
* @var string
|
||||
*/
|
||||
public $type = 'mt-repeater';
|
||||
|
||||
public $sophia_after_dark_box_label = '';
|
||||
|
||||
public $sophia_after_dark_box_add_control = '';
|
||||
|
||||
/**
|
||||
* The fields that each container row will contain.
|
||||
*
|
||||
* @access public
|
||||
* @var array
|
||||
*/
|
||||
public $fields = array();
|
||||
|
||||
/**
|
||||
* Repeater drag and drop controller
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function __construct( $manager, $id, $args = array(), $fields = array() ) {
|
||||
|
||||
$this->fields = $fields;
|
||||
$this->sophia_after_dark_box_label = $args['sophia_after_dark_box_label_text'] ;
|
||||
$this->sophia_after_dark_box_add_control = $args['sophia_after_dark_box_add_control_text'];
|
||||
parent::__construct( $manager, $id, $args );
|
||||
}
|
||||
|
||||
protected function render_content() {
|
||||
|
||||
$values = json_decode( $this->value() );
|
||||
$repeater_id = $this->id;
|
||||
$field_count = count( $values );
|
||||
?>
|
||||
<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
|
||||
|
||||
<?php if ( $this->description ) { ?>
|
||||
<span class="description customize-control-description">
|
||||
<?php echo wp_kses_post( $this->description ); ?>
|
||||
</span>
|
||||
<?php } ?>
|
||||
|
||||
<ul class="mt-repeater-field-control-wrap">
|
||||
<?php $this->sophia_after_dark_get_fields(); ?>
|
||||
</ul>
|
||||
|
||||
<input type="hidden" <?php $this->link(); ?> class="mt-repeater-collector" value="<?php echo esc_attr( $this->value() ); ?>" />
|
||||
<input type="hidden" name="<?php echo esc_attr( $repeater_id ).'_count'; ?>" class="field-count" value="<?php echo absint( $field_count ); ?>">
|
||||
<input type="hidden" name="field_limit" class="field-limit" value="6">
|
||||
<button type="button" class="button mt-repeater-add-control-field"><?php echo esc_html( $this->sophia_after_dark_box_add_control ); ?></button>
|
||||
<?php
|
||||
}
|
||||
|
||||
private function sophia_after_dark_get_fields() {
|
||||
$fields = $this->fields;
|
||||
$values = json_decode( $this->value() );
|
||||
|
||||
if ( is_array( $values ) ) {
|
||||
foreach( $values as $value ) {
|
||||
?>
|
||||
<li class="mt-repeater-field-control">
|
||||
<h3 class="mt-repeater-field-title"><?php echo esc_html( $this->sophia_after_dark_box_label ); ?></h3>
|
||||
<div class="mt-repeater-fields">
|
||||
<?php
|
||||
foreach ( $fields as $key => $field ) {
|
||||
$class = isset( $field['class'] ) ? $field['class'] : '';
|
||||
?>
|
||||
<div class="mt-repeater-field mt-repeater-type-<?php echo esc_attr( $field['type'] ).' '.esc_attr( $class ); ?>">
|
||||
|
||||
<?php
|
||||
$label = isset( $field['label'] ) ? $field['label'] : '';
|
||||
$description = isset( $field['description'] ) ? $field['description'] : '';
|
||||
if ( $field['type'] != 'checkbox' ) {
|
||||
?>
|
||||
<span class="customize-control-title"><?php echo esc_html( $label ); ?></span>
|
||||
<span class="description customize-control-description"><?php echo esc_html( $description ); ?></span>
|
||||
<?php
|
||||
}
|
||||
|
||||
$new_value = isset( $value->$key ) ? $value->$key : '';
|
||||
$default = isset( $field['default'] ) ? $field['default'] : '';
|
||||
|
||||
switch ( $field['type'] ) {
|
||||
/**
|
||||
* Text field
|
||||
*/
|
||||
case 'text':
|
||||
echo '<input data-default="'.esc_attr( $default ).'" data-name="'.esc_attr( $key ).'" type="text" value="'.esc_attr( $new_value ).'"/>';
|
||||
break;
|
||||
|
||||
/**
|
||||
* Textarea field
|
||||
*/
|
||||
case 'textarea':
|
||||
echo '<textarea data-default="'.esc_attr( $default ).'" data-name="'.esc_attr( $key ).'">'.esc_attr( $new_value ).'</textarea>';
|
||||
break;
|
||||
|
||||
/**
|
||||
* URL field
|
||||
*/
|
||||
case 'url':
|
||||
echo '<input data-default="'.esc_attr( $default ).'" data-name="'.esc_attr( $key ).'" type="text" value="'.esc_url( $new_value ).'"/>';
|
||||
break;
|
||||
|
||||
/**
|
||||
* Icon field
|
||||
*/
|
||||
case 'icon':
|
||||
$sophia_after_dark_font_awesome_icon_array = sophia_after_dark_font_awesome_icon_array();
|
||||
echo '<div class="mt-repeater-selected-icon"><i class="'.esc_attr( $new_value ).'"></i><span><i class="fa fa-angle-down"></i></span></div><ul class="mt-repeater-icon-list mt-clearfix">';
|
||||
foreach ( $sophia_after_dark_font_awesome_icon_array as $sophia_after_dark_font_awesome_icon ) {
|
||||
$icon_class = $new_value == $sophia_after_dark_font_awesome_icon ? 'icon-active' : '';
|
||||
echo '<li class='.esc_attr( $icon_class ).'><i class="'.esc_attr( $sophia_after_dark_font_awesome_icon ).'"></i></li>';
|
||||
}
|
||||
echo '</ul><input data-default="'.esc_attr( $default ).'" type="hidden" value="'.esc_attr( $new_value ).'" data-name="'.esc_attr( $key ).'"/>';
|
||||
break;
|
||||
|
||||
/**
|
||||
* Social Icon field
|
||||
*/
|
||||
case 'social_icon':
|
||||
$sophia_after_dark_font_awesome_social_icon_array = sophia_after_dark_font_awesome_social_icon_array();
|
||||
echo '<div class="mt-repeater-selected-icon"><i class="'.esc_attr( $new_value ).'"></i><span><i class="fa fa-angle-down"></i></span></div><ul class="mt-repeater-icon-list mt-clearfix">';
|
||||
foreach ( $sophia_after_dark_font_awesome_social_icon_array as $sophia_after_dark_font_awesome_icon ) {
|
||||
$icon_class = $new_value == $sophia_after_dark_font_awesome_icon ? 'icon-active' : '';
|
||||
echo '<li class='.esc_attr( $icon_class ).'><i class="'.esc_attr( $sophia_after_dark_font_awesome_icon ).'"></i></li>';
|
||||
}
|
||||
echo '</ul><input data-default="'.esc_attr( $default ).'" type="hidden" value="'.esc_attr( $new_value ).'" data-name="'.esc_attr( $key ).'"/>';
|
||||
break;
|
||||
|
||||
/**
|
||||
* Select field
|
||||
*/
|
||||
case 'select':
|
||||
$options = $field['options'];
|
||||
echo '<select data-default="'.esc_attr( $default ).'" data-name="'.esc_attr( $key ).'">';
|
||||
foreach ( $options as $option => $val )
|
||||
{
|
||||
printf( '<option value="%1$s" %2$s>%3$s</option>', esc_attr( $option ), selected( $new_value, $option, false ), esc_html( $val ) );
|
||||
}
|
||||
echo '</select>';
|
||||
break;
|
||||
|
||||
/**
|
||||
* Dropdown field
|
||||
*/
|
||||
case 'dropdown_pages':
|
||||
$show_option_none = esc_html__( '— Select a page —', 'sophia-after-dark' );
|
||||
$select_field ='data-default="'.esc_attr( $default ).'" data-name="'.esc_attr( $key ).'"';
|
||||
$option_none_value = '';
|
||||
$dropdown = wp_dropdown_pages(
|
||||
array(
|
||||
'name' => esc_attr( $key ),
|
||||
'echo' => '',
|
||||
'show_option_none' => esc_html( $show_option_none ),
|
||||
'option_none_value' => esc_attr( $option_none_value ),
|
||||
'selected' => esc_attr( $new_value )
|
||||
)
|
||||
);
|
||||
|
||||
if ( empty( $dropdown ) ) {
|
||||
$dropdown = sprintf( '<select id="%1$s" name="%1$s">', esc_attr( $key ) );
|
||||
$dropdown .= sprintf( '<option value="%1$s">%2$s</option>', esc_attr( $option_none_value ), esc_html( $show_option_none ) );
|
||||
$dropdown .= '</select>';
|
||||
}
|
||||
|
||||
// Hackily add in the data link parameter.
|
||||
$dropdown = str_replace( '<select', '<select ' . $select_field, $dropdown );
|
||||
echo $dropdown;
|
||||
break;
|
||||
|
||||
/**
|
||||
* Upload field
|
||||
*/
|
||||
case 'upload':
|
||||
$image_class = "";
|
||||
$upload_btn_label = esc_html__( 'Select Image', 'sophia-after-dark' );
|
||||
$remove_btn_label = esc_html__( 'Remove', 'sophia-after-dark' );
|
||||
if ( $new_value ) {
|
||||
$image_class = ' hidden';
|
||||
}
|
||||
echo '<div class="mt-fields-wrap"><div class="attachment-media-view"><div class="placeholder'. esc_attr( $image_class ).'">';
|
||||
esc_html_e( 'No image selected', 'sophia-after-dark' );
|
||||
echo '</div><div class="thumbnail thumbnail-image"><img src="'.esc_url( $new_value ).'" style="max-width:100%;"/></div><div class="actions mt-clearfix"><button type="button" class="button mt-delete-button align-left">'. esc_html( $remove_btn_label ) .'</button><button type="button" class="button mt-upload-button alignright">'. esc_html( $upload_btn_label ) .'</button><input data-default="'.esc_attr( $default ).'" class="upload-id" data-name="'.esc_attr( $key ).'" type="hidden" value="'.esc_attr( $new_value ).'"/></div></div></div>';
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<div class="mt-clearfix mt-repeater-footer">
|
||||
<div class="alignright">
|
||||
<a class="mt-repeater-field-remove" href="#remove"><?php esc_html_e( 'Delete', 'sophia-after-dark' ) ?></a> |
|
||||
<a class="mt-repeater-field-close" href="#close"><?php esc_html_e( 'Close', 'sophia-after-dark' ) ?></a>
|
||||
</div>
|
||||
</div><!-- .mt-repeater-footer -->
|
||||
</div><!-- .mt-repeater-fields-->
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}// Ends sophia_after_dark_register_custom_controls
|
||||
endif;
|
||||
|
||||
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
303
inc/customizer/mt-customizer-design-panel-options.php
Normal file
303
inc/customizer/mt-customizer-design-panel-options.php
Normal file
@ -0,0 +1,303 @@
|
||||
<?php
|
||||
/**
|
||||
* Sophia After Dark manage the Customizer options of design settings panel.
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
add_action( 'customize_register', 'sophia_after_dark_customize_design_panels_sections_register' );
|
||||
/**
|
||||
* Add Additional panels in the theme customizer
|
||||
*
|
||||
*/
|
||||
|
||||
function sophia_after_dark_customize_design_panels_sections_register( $wp_customize ) {
|
||||
/*------------------------------------------------ Archive Section ------------------------------------------------------------*/
|
||||
/**
|
||||
* Archive Settings
|
||||
*/
|
||||
$wp_customize->add_section( 'sophia_after_dark_section_archive_settings',
|
||||
array(
|
||||
'title' => esc_html__( 'Archive Settings', 'sophia-after-dark' ),
|
||||
'panel' => 'sophia_after_dark_design_panel',
|
||||
'capability' => 'edit_theme_options',
|
||||
'priority' => 5,
|
||||
'theme_supports' => '',
|
||||
)
|
||||
);
|
||||
|
||||
/*
|
||||
* Radio Image field for archive/blog sidebar layout.
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_archive_sidebar_layout',
|
||||
array(
|
||||
'default' => 'no-sidebar',
|
||||
'sanitize_callback' => 'sanitize_key',
|
||||
)
|
||||
);
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Radio_Image(
|
||||
$wp_customize, 'sophia_after_dark_archive_sidebar_layout',
|
||||
array(
|
||||
'label' => esc_html__( 'Archive/Blog Sidebar Layout', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_archive_settings',
|
||||
'settings' => 'sophia_after_dark_archive_sidebar_layout',
|
||||
'priority' => 10,
|
||||
'choices' => array(
|
||||
'left-sidebar' => get_template_directory_uri() . '/assets/images/left-sidebar.png',
|
||||
'right-sidebar' => get_template_directory_uri() . '/assets/images/right-sidebar.png',
|
||||
'no-sidebar' => get_template_directory_uri() . '/assets/images/no-sidebar.png',
|
||||
'no-sidebar-center' => get_template_directory_uri() . '/assets/images/no-sidebar-center.png'
|
||||
),
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/*
|
||||
* Radio Image field for arvhive/blog style.
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_archive_style',
|
||||
array(
|
||||
'default' => 'mt-archive--masonry-style',
|
||||
'sanitize_callback' => 'sanitize_key',
|
||||
)
|
||||
);
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Radio_Image(
|
||||
$wp_customize, 'sophia_after_dark_archive_style',
|
||||
array(
|
||||
'label' => esc_html__( 'Archive/Blog Style', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_archive_settings',
|
||||
'settings' => 'sophia_after_dark_archive_style',
|
||||
'priority' => 10,
|
||||
'choices' => array(
|
||||
'mt-archive--block-grid-style' => get_template_directory_uri() . '/assets/images/archive-block-grid.png',
|
||||
'mt-archive--masonry-style' => get_template_directory_uri() . '/assets/images/archive-masonry.png',
|
||||
),
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/*
|
||||
* Text field for archive read more button.
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_archive_read_more',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => esc_html__( 'Discover', 'sophia-after-dark' ),
|
||||
'sanitize_callback' => 'sanitize_text_field'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( 'sophia_after_dark_archive_read_more',
|
||||
array(
|
||||
'type' => 'text',
|
||||
'label' => esc_html__( 'Read More Button', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_archive_settings',
|
||||
'settings' => 'sophia_after_dark_archive_read_more',
|
||||
'priority' => 15,
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Toggle field for Enable/Disable title prefix at category pages.
|
||||
*
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_enable_archive_title_prefix',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => true,
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_checkbox'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Toggle(
|
||||
$wp_customize, 'sophia_after_dark_enable_archive_title_prefix',
|
||||
array(
|
||||
'label' => __( 'Enable Title Prefix', 'sophia-after-dark' ),
|
||||
'description' => esc_html__( 'Show/Hide title prefix in archive pages.', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_archive_settings',
|
||||
'settings' => 'sophia_after_dark_enable_archive_title_prefix',
|
||||
'priority' => 20,
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/*------------------------------------------------------- Post Section ------------------------------------------------------------*/
|
||||
/**
|
||||
* Post Settings
|
||||
*/
|
||||
$wp_customize->add_section( 'sophia_after_dark_section_post_settings',
|
||||
array(
|
||||
'title' => esc_html__( 'Post Settings', 'sophia-after-dark' ),
|
||||
'panel' => 'sophia_after_dark_design_panel',
|
||||
'capability' => 'edit_theme_options',
|
||||
'priority' => 10,
|
||||
'theme_supports' => '',
|
||||
)
|
||||
);
|
||||
/*
|
||||
* Radio Image field for single posts sidebar layout.
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_posts_sidebar_layout',
|
||||
array(
|
||||
'default' => 'right-sidebar',
|
||||
'sanitize_callback' => 'sanitize_key',
|
||||
)
|
||||
);
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Radio_Image(
|
||||
$wp_customize, 'sophia_after_dark_posts_sidebar_layout',
|
||||
array(
|
||||
'label' => esc_html__( 'Posts Sidebar Layout', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_post_settings',
|
||||
'settings' => 'sophia_after_dark_posts_sidebar_layout',
|
||||
'priority' => 5,
|
||||
'choices' => array(
|
||||
'left-sidebar' => get_template_directory_uri() . '/assets/images/left-sidebar.png',
|
||||
'right-sidebar' => get_template_directory_uri() . '/assets/images/right-sidebar.png',
|
||||
'no-sidebar' => get_template_directory_uri() . '/assets/images/no-sidebar.png',
|
||||
'no-sidebar-center' => get_template_directory_uri() . '/assets/images/no-sidebar-center.png'
|
||||
),
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/*
|
||||
* Toggle field for Enable/Disable related posts.
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_enable_related_posts',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => true,
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_checkbox'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Toggle(
|
||||
$wp_customize, 'sophia_after_dark_enable_related_posts',
|
||||
array(
|
||||
'label' => esc_html__( 'Enable Related Posts', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_post_settings',
|
||||
'settings' => 'sophia_after_dark_enable_related_posts',
|
||||
'priority' => 15,
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/*------------------------------------------------------- Post Section ------------------------------------------------------------*/
|
||||
/**
|
||||
* Page Setting
|
||||
*/
|
||||
$wp_customize->add_section( 'sophia_after_dark_section_page_settings',
|
||||
array(
|
||||
'title' => esc_html__( 'Page Settings', 'sophia-after-dark' ),
|
||||
'panel' => 'sophia_after_dark_design_panel',
|
||||
'capability' => 'edit_theme_options',
|
||||
'priority' => 15,
|
||||
'theme_supports' => '',
|
||||
)
|
||||
);
|
||||
|
||||
/*
|
||||
* Radio Image field for single page sidebar layout.
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_pages_sidebar_layout',
|
||||
array(
|
||||
'default' => 'right-sidebar',
|
||||
'sanitize_callback' => 'sanitize_key',
|
||||
)
|
||||
);
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Radio_Image(
|
||||
$wp_customize, 'sophia_after_dark_pages_sidebar_layout',
|
||||
array(
|
||||
'label' => esc_html__( 'Pages Sidebar Layout', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_page_settings',
|
||||
'settings' => 'sophia_after_dark_pages_sidebar_layout',
|
||||
'priority' => 5,
|
||||
'choices' => array(
|
||||
'left-sidebar' => get_template_directory_uri() . '/assets/images/left-sidebar.png',
|
||||
'right-sidebar' => get_template_directory_uri() . '/assets/images/right-sidebar.png',
|
||||
'no-sidebar' => get_template_directory_uri() . '/assets/images/no-sidebar.png',
|
||||
'no-sidebar-center' => get_template_directory_uri() . '/assets/images/no-sidebar-center.png'
|
||||
),
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/*-------------------------------------------------------------------- 404 Page Settings Section ----------------------------------------------------------------*/
|
||||
/**
|
||||
* 404 Page Settings
|
||||
*/
|
||||
$wp_customize->add_section( 'sophia_after_dark_section_pnf_settings',
|
||||
array(
|
||||
'priority' => 20,
|
||||
'panel' => 'sophia_after_dark_design_panel',
|
||||
'capability' => 'edit_theme_options',
|
||||
'theme_supports' => '',
|
||||
'title' => __( '404 Page Settings', 'sophia-after-dark' )
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Toggle field for Enable/Disable latest posts section at 404 page
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_enable_pnf_latest_posts',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => true,
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_checkbox'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Toggle(
|
||||
$wp_customize, 'sophia_after_dark_enable_pnf_latest_posts',
|
||||
array(
|
||||
'label' => __( 'Enable Latest Posts', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_pnf_settings',
|
||||
'settings' => 'sophia_after_dark_enable_pnf_latest_posts',
|
||||
'priority' => 40,
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Text field for latest posts section title
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_pnf_latest_title',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => esc_html__( 'You May Like', 'sophia-after-dark' ),
|
||||
'sanitize_callback' => 'sanitize_text_field'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( 'sophia_after_dark_pnf_latest_title',
|
||||
array(
|
||||
'type' => 'text',
|
||||
'label' => esc_html__( 'Section Title', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_pnf_settings',
|
||||
'priority' => 45,
|
||||
'active_callback' => 'sophia_after_dark_enable_pnf_latest_posts_active_callback',
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Text field for latest posts count
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_pnf_latest_post_count',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => 3,
|
||||
'sanitize_callback' => 'absint',
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( 'sophia_after_dark_pnf_latest_post_count',
|
||||
array(
|
||||
'type' => 'number',
|
||||
'label' => esc_html__( 'Post count', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_pnf_settings',
|
||||
'priority' => 50,
|
||||
'active_callback' => 'sophia_after_dark_enable_pnf_latest_posts_active_callback',
|
||||
)
|
||||
);
|
||||
}
|
156
inc/customizer/mt-customizer-footer-panel-options.php
Normal file
156
inc/customizer/mt-customizer-footer-panel-options.php
Normal file
@ -0,0 +1,156 @@
|
||||
<?php
|
||||
/**
|
||||
* Sophia After Dark manage the Customizer options of footer settings panel.
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
add_action( 'customize_register', 'sophia_after_dark_customize_footer_panels_sections_register' );
|
||||
/**
|
||||
* Add Additional panels in the theme customizer
|
||||
*
|
||||
*/
|
||||
function sophia_after_dark_customize_footer_panels_sections_register( $wp_customize ) {
|
||||
/*------------------------------------------------------- Footer Widget Area Section --------------------------------------------------------------------------*/
|
||||
/**
|
||||
* Footer Widget Area
|
||||
*/
|
||||
$wp_customize->add_section( 'sophia_after_dark_section_footer_widget_area',
|
||||
array(
|
||||
'title' => esc_html__( 'Footer Widget Area', 'sophia-after-dark' ),
|
||||
'panel' => 'sophia_after_dark_footer_panel',
|
||||
'capability' => 'edit_theme_options',
|
||||
'priority' => 5,
|
||||
'theme_supports' => '',
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Toggle field for Enable/Disable footer widget area.
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_enable_footer_widget_area',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => true,
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_checkbox'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Toggle(
|
||||
$wp_customize, 'sophia_after_dark_enable_footer_widget_area',
|
||||
array(
|
||||
'label' => esc_html__( 'Enable Footer Widget Area', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_footer_widget_area',
|
||||
'settings' => 'sophia_after_dark_enable_footer_widget_area',
|
||||
'priority' => 5,
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Radio Image field for Widget Area layout
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_widget_area_layout',
|
||||
array(
|
||||
'default' => 'column-three',
|
||||
'sanitize_callback' => 'sanitize_key',
|
||||
)
|
||||
);
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Radio_Image(
|
||||
$wp_customize, 'sophia_after_dark_widget_area_layout',
|
||||
array(
|
||||
'label' => esc_html__( 'Widget Area Layout', 'sophia-after-dark' ),
|
||||
'description' => __( 'Choose widget layout from available layouts', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_footer_widget_area',
|
||||
'settings' => 'sophia_after_dark_widget_area_layout',
|
||||
'priority' => 15,
|
||||
'active_callback' => 'sophia_after_dark_enable_footer_widget_area_active_callback',
|
||||
'choices' => array(
|
||||
'column-four' => get_template_directory_uri() . '/assets/images/footer-4.png',
|
||||
'column-three' => get_template_directory_uri() . '/assets/images/footer-3.png',
|
||||
'column-two' => get_template_directory_uri() . '/assets/images/footer-2.png',
|
||||
'column-one' => get_template_directory_uri() . '/assets/images/footer-1.png'
|
||||
),
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/*------------------------------------------------------- Bottom Footer Section --------------------------------------------------------------------------*/
|
||||
/**
|
||||
* Bottom footer
|
||||
*/
|
||||
$wp_customize->add_section( 'sophia_after_dark_section_bottom_footer',
|
||||
array(
|
||||
'title' => esc_html__( 'Bottom Footer', 'sophia-after-dark' ),
|
||||
'panel' => 'sophia_after_dark_footer_panel',
|
||||
'capability' => 'edit_theme_options',
|
||||
'priority' => 10,
|
||||
'theme_supports' => '',
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Toggle field for Enable/Disable footer menu.
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_enable_footer_menu',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => true,
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_checkbox'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Toggle(
|
||||
$wp_customize, 'sophia_after_dark_enable_footer_menu',
|
||||
array(
|
||||
'label' => esc_html__( 'Enable Footer Menu', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_bottom_footer',
|
||||
'settings' => 'sophia_after_dark_enable_footer_menu',
|
||||
'priority' => 5,
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* Text filed for copyright
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_footer_copyright',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => esc_html__( '©1969 Sophia After Dark', 'sophia-after-dark' ),
|
||||
'sanitize_callback' => 'sanitize_text_field'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( 'sophia_after_dark_footer_copyright',
|
||||
array(
|
||||
'type' => 'text',
|
||||
'label' => esc_html__( 'Copyright Text', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_bottom_footer',
|
||||
'priority' => 25,
|
||||
'active_callback' => 'sophia_after_dark_enable_footer_menu_active_callback',
|
||||
)
|
||||
);
|
||||
/**
|
||||
* Text filed for disclaimer
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_footer_disclaimer',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => esc_html__( 'All trademarks are property of their respective owners', 'sophia-after-dark' ),
|
||||
'sanitize_callback' => 'sanitize_text_field'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( 'sophia_after_dark_footer_disclaimer',
|
||||
array(
|
||||
'type' => 'text',
|
||||
'label' => esc_html__( 'Disclaimer Text', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_bottom_footer',
|
||||
'priority' => 25,
|
||||
'active_callback' => 'sophia_after_dark_enable_footer_menu_active_callback',
|
||||
)
|
||||
);
|
||||
}
|
184
inc/customizer/mt-customizer-front-panel-options.php
Normal file
184
inc/customizer/mt-customizer-front-panel-options.php
Normal file
@ -0,0 +1,184 @@
|
||||
<?php
|
||||
/**
|
||||
* Customizer fields for front slider section
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
add_action( 'customize_register', 'sophia_after_dark_customize_slider_panels_sections_register' );
|
||||
/**
|
||||
* Add panels in the theme customizer
|
||||
*
|
||||
*/
|
||||
function sophia_after_dark_customize_slider_panels_sections_register( $wp_customize ) {
|
||||
|
||||
/*--------------------------------------------------------- Slider Section ------------------------------------------------ */
|
||||
/**
|
||||
* Slider Settings
|
||||
*/
|
||||
$wp_customize->add_section( 'sophia_after_dark_section_slider',
|
||||
array(
|
||||
'priority' => 10,
|
||||
'panel' => 'sophia_after_dark_front_section_panel',
|
||||
'capability' => 'edit_theme_options',
|
||||
'theme_supports' => '',
|
||||
'title' => __( 'Slider Settings', 'sophia-after-dark' )
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Toggle field for slider option
|
||||
*
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_section_slider_option',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => false,
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_checkbox'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Toggle(
|
||||
$wp_customize, 'sophia_after_dark_section_slider_option',
|
||||
array(
|
||||
'label' => __( 'Enable Slider Section', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_slider',
|
||||
'settings' => 'sophia_after_dark_section_slider_option',
|
||||
'priority' => 5,
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Select field for slider cat select
|
||||
*
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_section_slider_cat',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => '',
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_select',
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( 'sophia_after_dark_section_slider_cat',
|
||||
array(
|
||||
'type' => 'select',
|
||||
'label' => esc_html__( 'Slider category', 'sophia-after-dark' ),
|
||||
'description' => esc_html__( 'Choose default post category', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_slider',
|
||||
'default' => '',
|
||||
'priority' => 30,
|
||||
'choices' => sophia_after_dark_select_categories_list(),
|
||||
'active_callback' => 'sophia_after_dark_section_slider_option_active_callback',
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Image field for background image in slider section
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_slider_bg_image',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => '',
|
||||
'sanitize_callback' => 'esc_url_raw',
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( new WP_Customize_Image_Control(
|
||||
$wp_customize, 'sophia_after_dark_slider_bg_image',
|
||||
array(
|
||||
'label' => __( 'Slider Section Background Image', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_slider',
|
||||
'settings' => 'sophia_after_dark_slider_bg_image',
|
||||
'priority' => 40,
|
||||
'active_callback' => 'sophia_after_dark_section_slider_option_active_callback'
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/*--------------------------------------------------------- Featured Posts Section ------------------------------------------------ */
|
||||
/**
|
||||
* Featured Slider Settings
|
||||
*/
|
||||
$wp_customize->add_section( 'sophia_after_dark_section_top_featured_post',
|
||||
array(
|
||||
'priority' => 20,
|
||||
'panel' => 'sophia_after_dark_front_section_panel',
|
||||
'capability' => 'edit_theme_options',
|
||||
'theme_supports' => '',
|
||||
'title' => esc_html__( 'Featured Posts Settings', 'sophia-after-dark' ),
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Toggle field for featured slider option
|
||||
*
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_section_top_featured_posts_option',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => true,
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_checkbox'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Toggle(
|
||||
$wp_customize, 'sophia_after_dark_section_top_featured_posts_option',
|
||||
array(
|
||||
'label' => esc_html__( 'Enable Featured Posts Section', 'sophia-after-dark' ),
|
||||
'description' => 'This section is displayed after the slider content at the right side minimizing the slider width.',
|
||||
'section' => 'sophia_after_dark_section_top_featured_post',
|
||||
'settings' => 'sophia_after_dark_section_top_featured_posts_option',
|
||||
'priority' => 5,
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Text field for Featured Posts Title
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_top_featured_posts_title',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => esc_html__( 'Featured News', 'sophia-after-dark' ),
|
||||
'sanitize_callback' => 'sanitize_text_field'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( 'sophia_after_dark_top_featured_posts_title',
|
||||
array(
|
||||
'type' => 'text',
|
||||
'label' => esc_html__( 'Featured News', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_top_featured_post',
|
||||
'priority' => 10,
|
||||
'active_callback' => 'sophia_after_dark_section_top_featured_posts_option_active_callback',
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Select field for featured posts type.
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_top_featured_post_order',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => 'default',
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_select',
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( 'sophia_after_dark_top_featured_post_order',
|
||||
array(
|
||||
'type' => 'select',
|
||||
'label' => esc_html__( 'Featured Post Order', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_top_featured_post',
|
||||
'priority' => 15,
|
||||
'choices' => array(
|
||||
'default' => __( 'Latest Posts', 'sophia-after-dark' ),
|
||||
'random' => __( 'Random Posts', 'sophia-after-dark' ),
|
||||
),
|
||||
'active_callback' => 'sophia_after_dark_section_top_featured_posts_option_active_callback',
|
||||
)
|
||||
);
|
||||
}
|
125
inc/customizer/mt-customizer-general-panel-options.php
Normal file
125
inc/customizer/mt-customizer-general-panel-options.php
Normal file
@ -0,0 +1,125 @@
|
||||
<?php
|
||||
/**
|
||||
* Sophia After Dark manage the Customizer options of general panel.
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
add_action( 'customize_register', 'sophia_after_dark_customize_general_panels_sections_register' );
|
||||
/**
|
||||
* Add panels in the theme customizer
|
||||
*
|
||||
*/
|
||||
function sophia_after_dark_customize_general_panels_sections_register( $wp_customize ) {
|
||||
/*------------------------------------------- Site Settings Section -----------------------------------------------*/
|
||||
/**
|
||||
* Site Settings Section
|
||||
*/
|
||||
$wp_customize->add_section( 'sophia_after_dark_section_site',
|
||||
array(
|
||||
'priority' => 40,
|
||||
'panel' => 'sophia_after_dark_general_panel',
|
||||
'capability' => 'edit_theme_options',
|
||||
'theme_supports' => '',
|
||||
'title' => __( 'Site Settings', 'sophia-after-dark' )
|
||||
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Toggle field for Enable/Disable preloader.
|
||||
*
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_enable_preloader',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => true,
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_checkbox'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Toggle(
|
||||
$wp_customize, 'sophia_after_dark_enable_preloader',
|
||||
array(
|
||||
'label' => __( 'Enable Preloader', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_site',
|
||||
'settings' => 'sophia_after_dark_enable_preloader',
|
||||
'priority' => 5,
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Toggle field for Enable/Disable wow animation.
|
||||
*
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_enable_wow_animation',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => true,
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_checkbox'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Toggle(
|
||||
$wp_customize, 'sophia_after_dark_enable_wow_animation',
|
||||
array(
|
||||
'label' => __( 'Enable Wow Animation', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_site',
|
||||
'settings' => 'sophia_after_dark_enable_wow_animation',
|
||||
'priority' => 10,
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Radio image field for Archive Sidebar
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_site_layout',
|
||||
array(
|
||||
'default' => 'site-layout--wide',
|
||||
'sanitize_callback' => 'sanitize_key',
|
||||
)
|
||||
);
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Radio_Image(
|
||||
$wp_customize, 'sophia_after_dark_site_layout',
|
||||
array(
|
||||
'label' => __( 'Site Layout', 'sophia-after-dark' ),
|
||||
'description' => __( 'Choose site layout from available layouts', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_site',
|
||||
'settings' => 'sophia_after_dark_site_layout',
|
||||
'priority' => 15,
|
||||
'choices' => array(
|
||||
'site-layout--wide' => get_template_directory_uri() . '/assets/images/full-width.png',
|
||||
'site-layout--boxed' => get_template_directory_uri() . '/assets/images/boxed-layout.png'
|
||||
),
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Toggle field for block based widget editor.
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_enable_widgets_editor',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => false,
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_checkbox'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Toggle(
|
||||
$wp_customize, 'sophia_after_dark_enable_widgets_editor',
|
||||
array(
|
||||
'label' => __( 'Enable Widgets Editor', 'sophia-after-dark' ),
|
||||
'description' => __( 'Enable/disable Block-based Widgets Editor(since WordPress 5.8).', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_site',
|
||||
'settings' => 'sophia_after_dark_enable_widgets_editor',
|
||||
'priority' => 15,
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
327
inc/customizer/mt-customizer-header-panel-options.php
Normal file
327
inc/customizer/mt-customizer-header-panel-options.php
Normal file
@ -0,0 +1,327 @@
|
||||
<?php
|
||||
/**
|
||||
* Sophia After Dark manage the Customizer options of header panel.
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
add_action( 'customize_register', 'sophia_after_dark_customize_header_panels_sections_register' );
|
||||
/**
|
||||
* Add panels in the theme customizer
|
||||
*
|
||||
*/
|
||||
function sophia_after_dark_customize_header_panels_sections_register( $wp_customize ) {
|
||||
|
||||
/*------------------------------------------ Top Header Section ----------------------------------------*/
|
||||
/**
|
||||
* Top Header Section
|
||||
*/
|
||||
$wp_customize->add_section( 'sophia_after_dark_section_top_header',
|
||||
array(
|
||||
'priority' => 10,
|
||||
'panel' => 'sophia_after_dark_header_panel',
|
||||
'capability' => 'edit_theme_options',
|
||||
'theme_supports' => '',
|
||||
'title' => __( 'Top Header Settings', 'sophia-after-dark' )
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Toggle field for Enable/Disable Top Header section
|
||||
*
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_enable_top_header',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => true,
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_checkbox'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Toggle(
|
||||
$wp_customize, 'sophia_after_dark_enable_top_header',
|
||||
array(
|
||||
'label' => __( 'Enable Top Header', 'sophia-after-dark' ),
|
||||
'description' => esc_html__( 'Show/Hide top header section.', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_top_header',
|
||||
'settings' => 'sophia_after_dark_enable_top_header',
|
||||
'priority' => 10,
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Toggle field for Enable/Disable trending section.
|
||||
*
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_enable_trending',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => false,
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_checkbox'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Toggle(
|
||||
$wp_customize, 'sophia_after_dark_enable_trending',
|
||||
array(
|
||||
'label' => esc_html__( 'Enable Trending Section', 'sophia-after-dark' ),
|
||||
'description' => esc_html__( 'Trending section shows the popular tags.', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_top_header',
|
||||
'settings' => 'sophia_after_dark_enable_trending',
|
||||
'priority' => 10,
|
||||
'active_callback' => 'sophia_after_dark_enable_top_header_active_callback',
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* checkox for before icon in tags.
|
||||
*
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_enable_trending_tag_before_icon',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => true,
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_checkbox'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( 'sophia_after_dark_enable_trending_tag_before_icon',
|
||||
array(
|
||||
'type' => 'checkbox',
|
||||
'label' => esc_html__( 'Add Icon Before Tag', 'sophia-after-dark' ),
|
||||
'description' => esc_html__( 'Show/Hide Hash Icon before tag.', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_top_header',
|
||||
'priority' => 20,
|
||||
'active_callback' => 'sophia_after_dark_enable_top_header_trending_active_callback',
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Text field for trending label.
|
||||
*
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_trending_label',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => esc_html__( 'Trending Now', 'sophia-after-dark' ),
|
||||
'sanitize_callback' => 'sanitize_text_field'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( 'sophia_after_dark_trending_label',
|
||||
array(
|
||||
'type' => 'text',
|
||||
'label' => esc_html__( 'Trending Label', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_top_header',
|
||||
'priority' => 25,
|
||||
'active_callback' => 'sophia_after_dark_enable_top_header_trending_active_callback',
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Select field of trending tags orderby.
|
||||
*
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_trending_tags_orderby',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => '',
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_select',
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( 'sophia_after_dark_trending_tags_orderby',
|
||||
array(
|
||||
'type' => 'select',
|
||||
'label' => esc_html__( 'Tags Orderby', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_top_header',
|
||||
'default' => '',
|
||||
'priority' => 30,
|
||||
'choices' => array(
|
||||
'' => esc_html__( 'Default', 'sophia-after-dark' ),
|
||||
'count' => esc_html__( 'Count', 'sophia-after-dark' ),
|
||||
),
|
||||
'active_callback' => 'sophia_after_dark_enable_top_header_trending_active_callback',
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Number field of trending tags count.
|
||||
*
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_trending_tags_count',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => '5',
|
||||
'sanitize_callback' => 'absint',
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( 'sophia_after_dark_trending_tags_count',
|
||||
array(
|
||||
'type' => 'number',
|
||||
'label' => esc_html__( 'Tags Count', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_top_header',
|
||||
'priority' => 35,
|
||||
'active_callback' => 'sophia_after_dark_enable_top_header_trending_active_callback',
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Toggle field for Enable/Disable live now button.
|
||||
*
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_enable_live_now',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => false,
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_checkbox'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Toggle(
|
||||
$wp_customize, 'sophia_after_dark_enable_live_now',
|
||||
array(
|
||||
'label' => esc_html__( 'Enable Live Now Button', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_top_header',
|
||||
'settings' => 'sophia_after_dark_enable_live_now',
|
||||
'priority' => 40,
|
||||
'active_callback' => 'sophia_after_dark_enable_top_header_active_callback',
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Text field for live now button label.
|
||||
*
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_live_now_label',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => esc_html__( 'Live Now', 'sophia-after-dark' ),
|
||||
'sanitize_callback' => 'sanitize_text_field'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( 'sophia_after_dark_live_now_label',
|
||||
array(
|
||||
'type' => 'text',
|
||||
'label' => esc_html__( 'Button Label', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_top_header',
|
||||
'settings' => 'sophia_after_dark_live_now_label',
|
||||
'priority' => 45,
|
||||
'active_callback' => 'sophia_after_dark_enable_top_header_live_now_active_callback',
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Text field for live now button link.
|
||||
*
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_live_now_link',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'sanitize_callback' => 'esc_url_raw'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( 'sophia_after_dark_live_now_link',
|
||||
array(
|
||||
'type' => 'text',
|
||||
'label' => esc_html__( 'Button Link', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_top_header',
|
||||
'settings' => 'sophia_after_dark_live_now_link',
|
||||
'priority' => 50,
|
||||
'active_callback' => 'sophia_after_dark_enable_top_header_live_now_active_callback',
|
||||
'input_attrs' => array(
|
||||
'placeholder' => "https://www.youtube.com/channel/UCnGp3UHMB4DH8W_KmSmrCEw"
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/*------------------------------------------ Header: Extra Options ----------------------------------------*/
|
||||
/**
|
||||
* Header Extra Options
|
||||
*/
|
||||
$wp_customize->add_section( 'sophia_after_dark_section_header_extra',
|
||||
array(
|
||||
'priority' => 30,
|
||||
'panel' => 'sophia_after_dark_header_panel',
|
||||
'capability' => 'edit_theme_options',
|
||||
'theme_supports' => '',
|
||||
'title' => __( 'Extra Options', 'sophia-after-dark' )
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Toggle field for Enable/Disable sticky menu.
|
||||
*
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_enable_sticky_menu',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => true,
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_checkbox'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Toggle(
|
||||
$wp_customize, 'sophia_after_dark_enable_sticky_menu',
|
||||
array(
|
||||
'label' => esc_html__( 'Enable Sticky Menu', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_header_extra',
|
||||
'settings' => 'sophia_after_dark_enable_sticky_menu',
|
||||
'priority' => 5,
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Toggle field for Enable/Disable social icons.
|
||||
*
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_enable_header_social_icons',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => false,
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_checkbox'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Toggle(
|
||||
$wp_customize, 'sophia_after_dark_enable_header_social_icons',
|
||||
array(
|
||||
'label' => esc_html__( 'Enable Social Icons', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_header_extra',
|
||||
'settings' => 'sophia_after_dark_enable_header_social_icons',
|
||||
'priority' => 10,
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Toggle field for Enable/Disable search icon.
|
||||
*
|
||||
*/
|
||||
$wp_customize->add_setting( 'sophia_after_dark_enable_search_icon',
|
||||
array(
|
||||
'capability' => 'edit_theme_options',
|
||||
'default' => true,
|
||||
'sanitize_callback' => 'sophia_after_dark_sanitize_checkbox'
|
||||
)
|
||||
);
|
||||
|
||||
$wp_customize->add_control( new Sophia_After_Dark_Control_Toggle(
|
||||
$wp_customize, 'sophia_after_dark_enable_search_icon',
|
||||
array(
|
||||
'label' => esc_html__( 'Enable Search Icon', 'sophia-after-dark' ),
|
||||
'section' => 'sophia_after_dark_section_header_extra',
|
||||
'settings' => 'sophia_after_dark_enable_search_icon',
|
||||
'priority' => 15,
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
86
inc/customizer/mt-customizer-panels.php
Normal file
86
inc/customizer/mt-customizer-panels.php
Normal file
@ -0,0 +1,86 @@
|
||||
<?php
|
||||
/**
|
||||
* Sophia After Dark manage the Customizer panels
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
add_action( 'customize_register', 'sophia_after_dark_customize_panels_register' );
|
||||
|
||||
/**
|
||||
* Add panels in the theme customizer
|
||||
*
|
||||
*/
|
||||
function sophia_after_dark_customize_panels_register( $wp_customize ) {
|
||||
/**
|
||||
* General Settings Panel
|
||||
*/
|
||||
$wp_customize->add_panel( 'sophia_after_dark_general_panel',
|
||||
array(
|
||||
'priority' => 10,
|
||||
'capability' => 'edit_theme_options',
|
||||
'theme_supports' => '',
|
||||
'title' => __( 'General Settings', 'sophia-after-dark' ),
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Header Settings Panel
|
||||
*/
|
||||
$wp_customize->add_panel( 'sophia_after_dark_header_panel',
|
||||
array(
|
||||
'priority' => 15,
|
||||
'capability' => 'edit_theme_options',
|
||||
'theme_supports' => '',
|
||||
'title' => __( 'Header Settings', 'sophia-after-dark' ),
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Front Settings Panel
|
||||
*/
|
||||
$wp_customize->add_panel( 'sophia_after_dark_front_section_panel',
|
||||
array(
|
||||
'priority' => 20,
|
||||
'capability' => 'edit_theme_options',
|
||||
'theme_supports' => '',
|
||||
'title' => __( 'Front Sections', 'sophia-after-dark' ),
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Design Settings Panel
|
||||
*/
|
||||
$wp_customize->add_panel( 'sophia_after_dark_design_panel',
|
||||
array(
|
||||
'priority' => 35,
|
||||
'capability' => 'edit_theme_options',
|
||||
'theme_supports' => '',
|
||||
'title' => __( 'Design Settings', 'sophia-after-dark' ),
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Additional Features Panel
|
||||
*/
|
||||
$wp_customize->add_panel( 'sophia_after_dark_additional_panel',
|
||||
array(
|
||||
'priority' => 40,
|
||||
'capability' => 'edit_theme_options',
|
||||
'theme_supports' => '',
|
||||
'title' => __( 'Additional Features', 'sophia-after-dark' ),
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Footer Settings Panel
|
||||
*/
|
||||
$wp_customize->add_panel( 'sophia_after_dark_footer_panel',
|
||||
array(
|
||||
'priority' => 45,
|
||||
'capability' => 'edit_theme_options',
|
||||
'theme_supports' => '',
|
||||
'title' => __( 'Footer Settings', 'sophia-after-dark' ),
|
||||
)
|
||||
);
|
||||
}
|
103
inc/customizer/mt-customizer.php
Normal file
103
inc/customizer/mt-customizer.php
Normal file
@ -0,0 +1,103 @@
|
||||
<?php
|
||||
/**
|
||||
* Sophia After Dark Theme Customizer
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* Add postMessage support for site title and description for the Theme Customizer.
|
||||
*
|
||||
* @param WP_Customize_Manager $wp_customize Theme Customizer object.
|
||||
*/
|
||||
function sophia_after_dark_customize_register( $wp_customize ) {
|
||||
|
||||
$wp_customize->get_setting( 'blogname' )->transport = 'postMessage';
|
||||
$wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage';
|
||||
$wp_customize->get_section( 'title_tagline' )->panel = 'sophia_after_dark_general_panel';
|
||||
$wp_customize->get_section( 'title_tagline' )->priority = '5'; $wp_customize->get_section( 'background_image' )->panel = 'sophia_after_dark_general_panel';
|
||||
$wp_customize->get_section( 'background_image' )->priority = '15';
|
||||
$wp_customize->get_section( 'static_front_page' )->panel = 'sophia_after_dark_general_panel';
|
||||
$wp_customize->get_section( 'static_front_page' )->priority = '20';
|
||||
|
||||
$wp_customize->get_section( 'header_image' )->panel = 'sophia_after_dark_header_panel';
|
||||
$wp_customize->get_section( 'header_image' )->priority = '5';
|
||||
$wp_customize->get_section( 'header_image' )->description = __( 'Header Image for only Innerpages', 'sophia-after-dark' );
|
||||
|
||||
if ( isset( $wp_customize->selective_refresh ) ) {
|
||||
$wp_customize->selective_refresh->add_partial( 'blogname', array(
|
||||
'selector' => '.site-title a',
|
||||
'render_callback' => 'sophia_after_dark_customize_partial_blogname',
|
||||
) );
|
||||
$wp_customize->selective_refresh->add_partial( 'blogdescription', array(
|
||||
'selector' => '.site-description',
|
||||
'render_callback' => 'sophia_after_dark_customize_partial_blogdescription',
|
||||
) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Load customizer custom classes.
|
||||
*/
|
||||
$wp_customize->register_control_type( 'sophia_after_dark_Control_Toggle' );
|
||||
$wp_customize->register_control_type( 'sophia_after_dark_Control_Radio_Image' );
|
||||
}
|
||||
add_action( 'customize_register', 'sophia_after_dark_customize_register' );
|
||||
|
||||
/**
|
||||
* Render the site title for the selective refresh partial.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function sophia_after_dark_customize_partial_blogname() {
|
||||
bloginfo( 'name' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the site tagline for the selective refresh partial.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function sophia_after_dark_customize_partial_blogdescription() {
|
||||
bloginfo( 'description' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Binds JS handlers to make Theme Customizer preview reload changes asynchronously.
|
||||
*/
|
||||
function sophia_after_dark_customize_preview_js() {
|
||||
wp_enqueue_script( 'sophia-after-dark-customizer', get_template_directory_uri() . '/assets/js/customizer.js', array( 'customize-preview' ), '20151215', true );
|
||||
}
|
||||
add_action( 'customize_preview_init', 'sophia_after_dark_customize_preview_js' );
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
/**
|
||||
* Enqueue required scripts/styles for customizer panel
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
function sophia_after_dark_customize_backend_scripts() {
|
||||
global $sophia_after_dark_theme_version;
|
||||
|
||||
wp_enqueue_style( 'sophia-after-dark--admin-customizer-style', get_template_directory_uri() . '/assets/css/mt-customizer-styles.css', array(), esc_attr( esc_attr( $sophia_after_dark_theme_version ) ) );
|
||||
wp_enqueue_style( 'jquery-ui', esc_url( get_template_directory_uri() . '/assets/css/jquery-ui.css' ) );
|
||||
wp_enqueue_style( 'font-awesome-customize', get_template_directory_uri() . '/assets/library/font-awesome/css/font-awesome.min.css', array(), '4.7.0' );
|
||||
|
||||
wp_enqueue_script( 'sophia-after-dark--admin-customizer-script', get_template_directory_uri() . '/assets/js/mt-customizer-controls.js', array( 'jquery', 'customize-controls' ), esc_attr( $sophia_after_dark_theme_version ), true );
|
||||
}
|
||||
add_action( 'customize_controls_enqueue_scripts', 'sophia_after_dark_customize_backend_scripts', 10 );
|
||||
|
||||
/**
|
||||
* Add Kirki required file for custom fields
|
||||
*/
|
||||
require get_template_directory() . '/inc/customizer/mt-customizer-custom-classes.php';
|
||||
require get_template_directory() . '/inc/customizer/mt-customizer-panels.php';
|
||||
require get_template_directory() . '/inc/customizer/mt-sanitize.php';
|
||||
require get_template_directory() . '/inc/customizer/mt-callback.php';
|
||||
|
||||
require get_template_directory() . '/inc/customizer/mt-customizer-general-panel-options.php';
|
||||
require get_template_directory() . '/inc/customizer/mt-customizer-header-panel-options.php';
|
||||
require get_template_directory() . '/inc/customizer/mt-customizer-front-panel-options.php';
|
||||
require get_template_directory() . '/inc/customizer/mt-customizer-additional-panel-options.php';
|
||||
require get_template_directory() . '/inc/customizer/mt-customizer-design-panel-options.php';
|
||||
require get_template_directory() . '/inc/customizer/mt-customizer-footer-panel-options.php';
|
47
inc/customizer/mt-sanitize.php
Normal file
47
inc/customizer/mt-sanitize.php
Normal file
@ -0,0 +1,47 @@
|
||||
<?php
|
||||
/**
|
||||
* Sanitize customizer field
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_sanitize_checkbox' ) ) :
|
||||
|
||||
/**
|
||||
* Sanitize checkbox.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @param bool $checked Whether the checkbox is checked.
|
||||
* @return bool Whether the checkbox is checked.
|
||||
*/
|
||||
function sophia_after_dark_sanitize_checkbox( $checked ) {
|
||||
return ( ( isset( $checked ) && true === $checked ) ? true : false );
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_sanitize_select' ) ) :
|
||||
|
||||
/**
|
||||
* Sanitize select.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @param mixed $input The value to sanitize.
|
||||
* @param WP_Customize_Setting $setting WP_Customize_Setting instance.
|
||||
* @return mixed Sanitized value.
|
||||
*/
|
||||
function sophia_after_dark_sanitize_select( $input, $setting ) {
|
||||
// Ensure input is a slug.
|
||||
$input = sanitize_key( $input );
|
||||
|
||||
// Get list of choices from the control associated with the setting.
|
||||
$choices = $setting->manager->get_control( $setting->id )->choices;
|
||||
|
||||
// If the input is a valid key, return it; otherwise, return the default.
|
||||
return ( array_key_exists( $input, $choices ) ? $input : $setting->default );
|
||||
}
|
||||
|
||||
endif;
|
594
inc/hooks/mt-custom-hooks.php
Normal file
594
inc/hooks/mt-custom-hooks.php
Normal file
@ -0,0 +1,594 @@
|
||||
<?php
|
||||
/**
|
||||
* Managed the custom functions and hooks for entire theme.
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------*/
|
||||
if ( ! function_exists( 'sophia_after_dark_main_header_start' ) ) :
|
||||
|
||||
/**
|
||||
* function to start header section
|
||||
*/
|
||||
function sophia_after_dark_main_header_start() {
|
||||
echo '<header id="masthead" class="site-header">';
|
||||
echo '<div class="mt-logo-row-wrapper mt-clearfix">';
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_site_branding' ) ) :
|
||||
|
||||
/**
|
||||
* function to display site branding
|
||||
*/
|
||||
function sophia_after_dark_site_branding() {
|
||||
?>
|
||||
<div class="logo-ads-wrap">
|
||||
<div class="mt-container">
|
||||
<div class="site-branding">
|
||||
<?php
|
||||
the_custom_logo();
|
||||
if ( is_front_page() || is_home() ) :
|
||||
?>
|
||||
<h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1>
|
||||
<?php else : ?>
|
||||
<p class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></p>
|
||||
<?php
|
||||
endif;
|
||||
$sophia_after_dark_description = get_bloginfo( 'description', 'display' );
|
||||
if ( $sophia_after_dark_description || is_customize_preview() ) :
|
||||
?>
|
||||
<p class="site-description"><?php echo $sophia_after_dark_description; /* WPCS: xss ok. */ ?></p>
|
||||
<?php endif; ?>
|
||||
</div><!-- .site-branding -->
|
||||
<div class="header-widget-wrapper">
|
||||
<?php
|
||||
if ( is_active_sidebar( 'header-ads-section' ) ) {
|
||||
dynamic_sidebar( 'header-ads-section' );
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div> <!-- mt-container -->
|
||||
</div><!-- .logo-ads-wrap -->
|
||||
<?php
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_menu_wrapper_start' ) ) :
|
||||
|
||||
/**
|
||||
* function to start menu wrapper
|
||||
*/
|
||||
function sophia_after_dark_menu_wrapper_start() {
|
||||
echo '<div class="mt-social-menu-wrapper">';
|
||||
echo '<div class="mt-container">';
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_header_main_menu' ) ) :
|
||||
|
||||
/**
|
||||
* function to display primary menu
|
||||
*/
|
||||
function sophia_after_dark_header_main_menu() {
|
||||
$sophia_after_dark_menu_toggle_text = apply_filters( 'sophia_after_dark_menu_toggle_text', __( 'Menu', 'sophia-after-dark' ) );
|
||||
?>
|
||||
<div class="mt-header-menu-wrap">
|
||||
<div class="menu-toggle"><a href="javascript:void(0)"><i class="fa fa-navicon"></i><?php echo esc_html( $sophia_after_dark_menu_toggle_text ); ?></a></div>
|
||||
<nav itemscope id="site-navigation" class="main-navigation">
|
||||
<?php
|
||||
wp_nav_menu( array(
|
||||
'theme_location' => 'primary_menu',
|
||||
'menu_id' => 'primary-menu',
|
||||
) );
|
||||
?>
|
||||
</nav><!-- #site-navigation -->
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_menu_icon_wrapper_start' ) ) :
|
||||
|
||||
/**
|
||||
* function to start icon wrapper
|
||||
*/
|
||||
function sophia_after_dark_menu_icon_wrapper_start() {
|
||||
echo '<div class="mt-social-search-wrapper">';
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_menu_social_icons' ) ) :
|
||||
|
||||
/**
|
||||
* function to display social icons at menu section
|
||||
*/
|
||||
function sophia_after_dark_menu_social_icons() {
|
||||
$sophia_after_dark_enable_header_social_icons = get_theme_mod( 'sophia_after_dark_enable_header_social_icons', false );
|
||||
if ( false === $sophia_after_dark_enable_header_social_icons ) {
|
||||
return;
|
||||
}
|
||||
$sophia_after_dark_menu_social_icons_label = apply_filters( 'sophia_after_dark_menu_social_icons_label', __( 'Follow Us: ', 'sophia-after-dark' ) );
|
||||
?>
|
||||
<div class="mt-social-wrapper">
|
||||
<span class="mt-follow-title"><?php echo esc_html( $sophia_after_dark_menu_social_icons_label ); ?></span>
|
||||
<?php sophia_after_dark_social_media_content(); ?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_menu_search_icon' ) ) :
|
||||
|
||||
/**
|
||||
* function to display search icon at menu section
|
||||
*/
|
||||
function sophia_after_dark_menu_search_icon() {
|
||||
$sophia_after_dark_enable_search_icon = get_theme_mod( 'sophia_after_dark_enable_search_icon', true );
|
||||
if ( false === $sophia_after_dark_enable_search_icon ) {
|
||||
return;
|
||||
}
|
||||
$sophia_after_dark_menu_search_icon_lable = apply_filters( 'sophia_after_dark_menu_search_icon_lable', __( 'Search', 'sophia-after-dark' ) );
|
||||
?>
|
||||
<div class="mt-menu-search">
|
||||
<div class="mt-search-icon"><a href="javascript:void(0)"><?php echo esc_html( $sophia_after_dark_menu_search_icon_lable ); ?><i class="fa fa-search"></i></a></div>
|
||||
<div class="mt-form-wrap">
|
||||
|
||||
<?php get_search_form(); ?>
|
||||
|
||||
<div class="mt-form-close"><a href="javascript:void(0)"><i class="fa fa-close"></i></a></div>
|
||||
</div><!-- .mt-form-wrap -->
|
||||
</div><!-- .mt-menu-search -->
|
||||
<?php
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_menu_icon_wrapper_end' ) ) :
|
||||
|
||||
/**
|
||||
* function to end icon wrapper
|
||||
*/
|
||||
function sophia_after_dark_menu_icon_wrapper_end() {
|
||||
echo '</div><!-- .mt-social-search-wrapper -->';
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_menu_wrapper_end' ) ) :
|
||||
|
||||
/**
|
||||
* function to end menu wrapper
|
||||
*/
|
||||
function sophia_after_dark_menu_wrapper_end() {
|
||||
echo '</div><!--.mt-container -->';
|
||||
echo '</div><!--.mt-social-menu-wrapper -->';
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_main_header_end' ) ) :
|
||||
|
||||
/**
|
||||
* function to end header section
|
||||
*/
|
||||
function sophia_after_dark_main_header_end() {
|
||||
echo '</div><!--.mt-logo-row-wrapper -->';
|
||||
echo '</header><!-- #masthead -->';
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
/**
|
||||
* manage functions at sophia_after_dark_main_header hook
|
||||
*/
|
||||
add_action( 'sophia_after_dark_main_header', 'sophia_after_dark_main_header_start', 5 );
|
||||
add_action( 'sophia_after_dark_main_header', 'sophia_after_dark_site_branding', 10 );
|
||||
add_action( 'sophia_after_dark_main_header', 'sophia_after_dark_menu_wrapper_start', 15 );
|
||||
add_action( 'sophia_after_dark_main_header', 'sophia_after_dark_header_main_menu', 20 );
|
||||
add_action( 'sophia_after_dark_main_header', 'sophia_after_dark_menu_icon_wrapper_start', 25 );
|
||||
add_action( 'sophia_after_dark_main_header', 'sophia_after_dark_menu_social_icons', 30 );
|
||||
add_action( 'sophia_after_dark_main_header', 'sophia_after_dark_menu_search_icon', 35 );
|
||||
add_action( 'sophia_after_dark_main_header', 'sophia_after_dark_menu_icon_wrapper_end', 40 );
|
||||
add_action( 'sophia_after_dark_main_header', 'sophia_after_dark_menu_wrapper_end', 45 );
|
||||
add_action( 'sophia_after_dark_main_header', 'sophia_after_dark_main_header_end', 50 );
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------*/
|
||||
if ( ! function_exists( 'sophia_after_dark_header_categories_lists_content' ) ) :
|
||||
|
||||
/**
|
||||
* function to display categories lists
|
||||
*/
|
||||
function sophia_after_dark_header_categories_lists_content() {
|
||||
$get_categories = get_categories( array( 'orderby' => 'name', 'order' => 'ASC' ) );
|
||||
?>
|
||||
<div class="mt-header-cat-list-wrapper">
|
||||
<ul class="sticky-header-sidebar-menu mt-slide-cat-lists">
|
||||
<?php
|
||||
$count = 1;
|
||||
$cat_list_items = apply_filters( 'sophia_after_dark_menu_cat_list_items', 5 );
|
||||
foreach ( $get_categories as $category ) {
|
||||
$cat_link = get_category_link( $category->term_id );
|
||||
$cat_name = $category->name;
|
||||
$cat_count = $category->count;
|
||||
if ( $count <= $cat_list_items ) {
|
||||
?>
|
||||
<li class="cat-item">
|
||||
<a href="<?php echo esc_url( $cat_link ); ?>">
|
||||
<?php
|
||||
echo esc_html( $cat_name );
|
||||
echo '<span>'. esc_html( $cat_count ) .'</span>';
|
||||
?>
|
||||
</a>
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul><!-- .mt-slide-cat-lists -->
|
||||
</div><!-- .mt-header-cat-list-wrapper -->
|
||||
<?php
|
||||
}
|
||||
|
||||
endif;
|
||||
add_action( 'sophia_after_dark_header_categories_lists', 'sophia_after_dark_header_categories_lists_content', 10 );
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------*/
|
||||
if ( ! function_exists( 'sophia_after_dark_header_author_box_content' ) ) :
|
||||
|
||||
/**
|
||||
* function to display author info
|
||||
*/
|
||||
function sophia_after_dark_header_author_box_content() {
|
||||
$sophia_after_dark_user_id = apply_filters( 'sophia_after_dark_header_user_id', 1 );
|
||||
?>
|
||||
<div itemscope itemtype="http://schema.org/Person" class="sticky-header-sidebar-author author-bio-wrap">
|
||||
<div class="author-avatar"><?php echo get_avatar( $sophia_after_dark_user_id, '150' ); ?></div>
|
||||
<h3 itemprop="name" class="author-name"><?php echo esc_html( get_the_author_meta( 'nicename', $sophia_after_dark_user_id ) ); ?></h3>
|
||||
<div class="author-description"><?php echo wp_kses_post( wpautop( get_the_author_meta( 'description', $sophia_after_dark_user_id ) ) ); ?></div>
|
||||
<div class="author-social">
|
||||
<?php sophia_after_dark_social_media_content(); ?>
|
||||
</div><!-- .author-social -->
|
||||
</div><!-- .author-bio-wrap -->
|
||||
<?php
|
||||
}
|
||||
|
||||
endif;
|
||||
add_action( 'sophia_after_dark_header_author_box', 'sophia_after_dark_header_author_box_content', 10 );
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------*/
|
||||
add_action( 'sophia_after_dark_scroll_top', 'sophia_after_dark_scroll_top_content', 10 );
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_scroll_top_content' ) ) :
|
||||
|
||||
/**
|
||||
* Function for scroll top
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
function sophia_after_dark_scroll_top_content() {
|
||||
$sophia_after_dark_scroll_top_text = apply_filters( 'sophia_after_dark_scroll_top_text', __( 'Back To Top', 'sophia-after-dark' ) );
|
||||
echo '<div id="mt-scrollup" class="animated arrow-hide">'. esc_html( $sophia_after_dark_scroll_top_text ) .'</div>';
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------*/
|
||||
if ( ! function_exists( 'sophia_after_dark_innerpage_header_start' ) ) :
|
||||
|
||||
/**
|
||||
* function to manage starting div of section
|
||||
*/
|
||||
function sophia_after_dark_innerpage_header_start() {
|
||||
$inner_header_attribute = '';
|
||||
$inner_header_attribute = apply_filters( 'sophia_after_dark_inner_header_style_attribute', $inner_header_attribute );
|
||||
if ( !empty( $inner_header_attribute ) ) {
|
||||
$header_class = 'has-bg-img';
|
||||
} else {
|
||||
$header_class = 'no-bg-img';
|
||||
}
|
||||
?>
|
||||
<div class="custom-header <?php echo esc_attr( $header_class ); ?>" <?php echo ( ! empty( $inner_header_attribute ) ) ? ' style="' . esc_attr( $inner_header_attribute ) . '" ' : ''; ?>>
|
||||
<div class="mt-container">
|
||||
<?php
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_innerpage_header_title' ) ) :
|
||||
|
||||
/**
|
||||
* function to display the page title
|
||||
*/
|
||||
function sophia_after_dark_innerpage_header_title() {
|
||||
if ( is_single() || is_page() ) {
|
||||
the_title( '<h1 class="entry-title">', '</h1>' );
|
||||
} elseif ( is_archive() ) {
|
||||
the_archive_title( '<h1 class="page-title">', '</h1>' );
|
||||
the_archive_description( '<div class="taxonomy-description">', '</div>' );
|
||||
} elseif ( is_search() ) {
|
||||
?>
|
||||
<h1 class="page-title"><?php printf( esc_html__( 'Search Results for: %s', 'sophia-after-dark' ), '<span>' . get_search_query() . '</span>' ); ?></h1>
|
||||
<?php
|
||||
} elseif ( is_404() ) {
|
||||
echo '<h1 class="entry-title">'. esc_html( 'Error 404', 'sophia-after-dark' ) .'</h1>';
|
||||
} elseif ( is_home() ) {
|
||||
$page_for_posts_id = get_option( 'page_for_posts' );
|
||||
$page_title = get_the_title( $page_for_posts_id );
|
||||
?>
|
||||
<h1 class="entry-title"><?php echo esc_html( $page_title ); ?></h1>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_breadcrumb_content' ) ) :
|
||||
|
||||
/**
|
||||
* function to manage the breadcrumbs content
|
||||
*/
|
||||
function sophia_after_dark_breadcrumb_content() {
|
||||
$sophia_after_dark_breadcrumb_option = get_theme_mod( 'sophia_after_dark_enable_breadcrumb_option', true );
|
||||
if ( false === $sophia_after_dark_breadcrumb_option ) {
|
||||
return;
|
||||
}
|
||||
?>
|
||||
<nav id="breadcrumb" class="mt-breadcrumb">
|
||||
<?php
|
||||
breadcrumb_trail( array(
|
||||
'container' => 'div',
|
||||
'before' => '<div class="mt-container">',
|
||||
'after' => '</div>',
|
||||
'show_browse' => false,
|
||||
) );
|
||||
?>
|
||||
</nav>
|
||||
<?php
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_innerpage_header_end' ) ) :
|
||||
|
||||
/**
|
||||
* function to manage ending div of section
|
||||
*/
|
||||
function sophia_after_dark_innerpage_header_end() {
|
||||
?>
|
||||
</div><!-- .mt-container -->
|
||||
</div><!-- .custom-header -->
|
||||
<?php
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
/**
|
||||
* manage the function at sophia_after_dark_innerpage_header hook
|
||||
*/
|
||||
|
||||
add_action( 'sophia_after_dark_innerpage_header', 'sophia_after_dark_innerpage_header_start', 5 );
|
||||
add_action( 'sophia_after_dark_innerpage_header', 'sophia_after_dark_innerpage_header_title', 10 );
|
||||
add_action( 'sophia_after_dark_innerpage_header', 'sophia_after_dark_breadcrumb_content', 15 );
|
||||
add_action( 'sophia_after_dark_innerpage_header', 'sophia_after_dark_innerpage_header_end', 20 );
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------*/
|
||||
if ( ! function_exists( 'sophia_after_dark_front_slider' ) ) :
|
||||
|
||||
/**
|
||||
* Function displaying front slider section
|
||||
*
|
||||
*/
|
||||
function sophia_after_dark_front_slider() {
|
||||
$sophia_after_dark_section_slider_option = get_theme_mod( 'sophia_after_dark_section_slider_option', false );
|
||||
if ( false == $sophia_after_dark_section_slider_option ) {
|
||||
return;
|
||||
}
|
||||
$sophia_after_dark_section_top_featured_posts_option = get_theme_mod( 'sophia_after_dark_section_top_featured_posts_option', true );
|
||||
if ( true === $sophia_after_dark_section_top_featured_posts_option ) {
|
||||
$slider_class = 'has-featured-slider default-width--slider';
|
||||
} else {
|
||||
$slider_class = 'no-featured-slider full-width--slider';
|
||||
}
|
||||
?>
|
||||
<div class="front-slider-wrapper <?php echo esc_attr( $slider_class ); ?>">
|
||||
<div class="mt-container">
|
||||
<div class="front-slider-block">
|
||||
<div class="front-slider cS-hidden">
|
||||
<?php
|
||||
$slider_cat_slug = get_theme_mod( 'sophia_after_dark_section_slider_cat', '' );
|
||||
$slide_post_count = apply_filters( 'sophia_after_dark_slider_post_count', 3 );
|
||||
$slider_args = array(
|
||||
'category_name' => esc_attr( $slider_cat_slug ),
|
||||
'meta_key' => '_thumbnail_id',
|
||||
'posts_per_page' => absint( $slide_post_count )
|
||||
);
|
||||
$slider_post_query = new WP_Query( $slider_args );
|
||||
if ( $slider_post_query->have_posts() ) :
|
||||
while ( $slider_post_query-> have_posts() ) :
|
||||
$slider_post_query -> the_post();
|
||||
$post_id = get_the_ID();
|
||||
$image_url = get_the_post_thumbnail_url( $post_id, 'large' );
|
||||
if ( ! empty( $image_url ) ) {
|
||||
$slider_style = 'style="background:url('. esc_url( $image_url ) .') no-repeat scroll center center; background-size:cover"';
|
||||
} else {
|
||||
$slider_style = '';
|
||||
}
|
||||
?>
|
||||
<div class="slider-post-wrap" <?php echo $slider_style; ?>>
|
||||
<div class="post-thumbnail">
|
||||
<a href="<?php the_permalink(); ?>"></a>
|
||||
</div>
|
||||
<div class="post-info-wrap">
|
||||
<div class="post-cat"><?php sophia_after_dark_article_categories_list(); ?></div>
|
||||
<div class="entry-meta">
|
||||
<?php
|
||||
sophia_after_dark_posted_on();
|
||||
sophia_after_dark_posted_by();
|
||||
?>
|
||||
</div>
|
||||
<?php the_title( '<h3 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h3>' ); ?>
|
||||
</div><!--.post-info-wrap -->
|
||||
</div><!-- .slider-post-wrap -->
|
||||
<?php
|
||||
endwhile;
|
||||
endif;
|
||||
?>
|
||||
</div><!-- .front-slider -->
|
||||
</div> <!-- .front-slider-block -->
|
||||
<?php
|
||||
if ( true == $sophia_after_dark_section_top_featured_posts_option ) {
|
||||
$sophia_after_dark_top_featured_posts_title = get_theme_mod( 'sophia_after_dark_top_featured_posts_title', __( 'Featured News', 'sophia-after-dark' ) );
|
||||
echo '<div class="top-featured-post-main-wrapper">';
|
||||
if ( ! empty( $sophia_after_dark_top_featured_posts_title ) ) {
|
||||
echo '<div class="features-post-title">'.esc_html( $sophia_after_dark_top_featured_posts_title ).'</div><!-- .features-post-title -->';
|
||||
}
|
||||
|
||||
$sophia_after_dark_top_featured_post_order = get_theme_mod( 'sophia_after_dark_top_featured_post_order', 'default' );
|
||||
$featured_posts_per_page = apply_filters( 'sophia_after_dark_featured_post_count', 5 );
|
||||
$top_featured_post_args = array(
|
||||
'post_type' => 'post',
|
||||
'posts_per_page' => absint( $featured_posts_per_page ),
|
||||
);
|
||||
if ( 'random' == $sophia_after_dark_top_featured_post_order ) {
|
||||
$top_featured_post_args['orderby'] = 'rand';
|
||||
}
|
||||
$top_featured_post_query = new WP_Query( $top_featured_post_args );
|
||||
if ( $top_featured_post_query -> have_posts() ) :
|
||||
echo '<div class="top-featured-post-wrap">';
|
||||
$featured_post_count = 1;
|
||||
while ( $top_featured_post_query -> have_posts() ) : $top_featured_post_query -> the_post();
|
||||
?>
|
||||
<div id="post-<?php the_ID(); ?>" class="mt-single-post-wrap mt-clearfix">
|
||||
<div class="post-thumbnail">
|
||||
<span class="post-number"><?php echo absint( $featured_post_count ); ?></span>
|
||||
<figure style="background: no-repeat center top url(<?php echo get_the_post_thumbnail_url(); ?>); background-size: cover; height: 100px;">
|
||||
</figure>
|
||||
</div>
|
||||
<div class="mt-post-content">
|
||||
<div class="entry-meta">
|
||||
<?php
|
||||
sophia_after_dark_posted_on();
|
||||
sophia_after_dark_posted_by();
|
||||
?>
|
||||
</div>
|
||||
<header class="entry-header">
|
||||
<?php the_title( '<h3 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h3>' ); ?>
|
||||
</header><!-- .entry-header -->
|
||||
</div>
|
||||
</div><!-- #post-<?php the_ID(); ?> -->
|
||||
<?php
|
||||
$featured_post_count ++;
|
||||
endwhile;
|
||||
echo '</div><!-- .top-featured-post-wrap -->';
|
||||
endif;
|
||||
echo '</div><!-- .top-featured-post-main-wrapper -->';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div><!-- .front-slider-wrapper -->
|
||||
<?php
|
||||
}
|
||||
|
||||
endif;
|
||||
add_action( 'sophia_after_dark_front_slider_section', 'sophia_after_dark_front_slider' );
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------*/
|
||||
if ( ! function_exists( 'sophia_after_dark_footer_start' ) ) :
|
||||
|
||||
/**
|
||||
* function to start footer wrapper
|
||||
*/
|
||||
function sophia_after_dark_footer_start() {
|
||||
echo '<footer itemscope id="colophon" class="site-footer">';
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_footer_sidebar' ) ) :
|
||||
|
||||
/**
|
||||
* function to display footer widget area
|
||||
*/
|
||||
function sophia_after_dark_footer_sidebar() {
|
||||
$sophia_after_dark_footer_widget_option = get_theme_mod( 'sophia_after_dark_enable_footer_widget_area', true );
|
||||
if ( true === $sophia_after_dark_footer_widget_option ) {
|
||||
get_sidebar( 'footer' );
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_bottom_footer' ) ) :
|
||||
|
||||
/**
|
||||
* function to display bottom footer section
|
||||
*/
|
||||
function sophia_after_dark_bottom_footer() {
|
||||
?>
|
||||
<div id="bottom-footer">
|
||||
<div class="mt-container">
|
||||
<?php
|
||||
$sophia_after_dark_enable_footer_menu = get_theme_mod( 'sophia_after_dark_enable_footer_menu', true );
|
||||
if ( true === $sophia_after_dark_enable_footer_menu ) {
|
||||
?>
|
||||
<nav id="footer-navigation" class="footer-navigation">
|
||||
<?php
|
||||
wp_nav_menu( array(
|
||||
'theme_location' => 'footer_menu',
|
||||
'menu_id' => 'footer-menu',
|
||||
'fallback_cb' => false,
|
||||
'depth' => 1
|
||||
) );
|
||||
?>
|
||||
</nav><!-- #footer-navigation -->
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="site-info">
|
||||
<span class="mt-copyright-text">
|
||||
<?php
|
||||
$sophia_after_dark_footer_copyright = get_theme_mod( 'sophia_after_dark_footer_copyright', __( 'Sophia After Dark', 'sophia-after-dark' ) );
|
||||
echo esc_html( $sophia_after_dark_footer_copyright );
|
||||
?>
|
||||
</span>
|
||||
<br>
|
||||
<span class="mt-disclaimer-text">
|
||||
<?php
|
||||
$sophia_after_dark_footer_disclaimer = get_theme_mod( 'sophia_after_dark_footer_disclaimer', __( 'Sophia After Dark', 'sophia-after-dark' ) );
|
||||
echo esc_html( $sophia_after_dark_footer_disclaimer );
|
||||
?>
|
||||
</span>
|
||||
</div><!-- .site-info -->
|
||||
</div><!-- .mt-container -->
|
||||
</div><!-- #bottom-footer -->
|
||||
<?php
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_footer_end' ) ) :
|
||||
|
||||
/**
|
||||
* function to end footer wrapper
|
||||
*/
|
||||
function sophia_after_dark_footer_end() {
|
||||
echo '</footer><!-- #colophon -->';
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
/**
|
||||
* manage the function at sophia_after_dark_footer hook
|
||||
*/
|
||||
add_action( 'sophia_after_dark_footer', 'sophia_after_dark_footer_start', 5 );
|
||||
add_action( 'sophia_after_dark_footer', 'sophia_after_dark_footer_sidebar', 10 );
|
||||
add_action( 'sophia_after_dark_footer', 'sophia_after_dark_bottom_footer', 15 );
|
||||
add_action( 'sophia_after_dark_footer', 'sophia_after_dark_footer_end', 20 );
|
116
inc/hooks/mt-top-header-hooks.php
Normal file
116
inc/hooks/mt-top-header-hooks.php
Normal file
@ -0,0 +1,116 @@
|
||||
<?php
|
||||
/**
|
||||
* Managed the custom functions and hooks for top header of theme.
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------*/
|
||||
if ( ! function_exists( 'sophia_after_dark_top_header_start' ) ) :
|
||||
|
||||
/**
|
||||
* function to start top header section
|
||||
*/
|
||||
function sophia_after_dark_top_header_start() {
|
||||
echo '<div id="top-header" class="top-header-wrap mt-clearfix">';
|
||||
echo '<div class="mt-container">';
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_top_header_end' ) ) :
|
||||
|
||||
/**
|
||||
* function to end top header section
|
||||
*/
|
||||
function sophia_after_dark_top_header_end() {
|
||||
echo '</div><!-- mt-container -->';
|
||||
echo '</div><!-- #top-header -->';
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_trending_section' ) ) :
|
||||
|
||||
/**
|
||||
* function to display the trending tags sections
|
||||
*
|
||||
*/
|
||||
function sophia_after_dark_trending_section() {
|
||||
$sophia_after_dark_enable_trending = get_theme_mod( 'sophia_after_dark_enable_trending', false );
|
||||
if ( false === $sophia_after_dark_enable_trending ){
|
||||
return;
|
||||
}
|
||||
$sophia_after_dark_enable_trending_tag_before_icon = get_theme_mod( 'sophia_after_dark_enable_trending_tag_before_icon', true );
|
||||
if ( $sophia_after_dark_enable_trending_tag_before_icon === true ){
|
||||
$before_icon = 'tag-before-icon';
|
||||
}else{
|
||||
$before_icon = '';
|
||||
}
|
||||
$trending_label = get_theme_mod( 'sophia_after_dark_trending_label', __( 'Trending Now', 'sophia-after-dark' ) );
|
||||
?>
|
||||
<div class="trending-wrapper <?php echo esc_html( $before_icon ); ?>">
|
||||
<span class="wrap-label"><i class="fa fa-bolt" aria-hidden="true"></i> <?php echo esc_html( $trending_label ); ?></span>
|
||||
<div class="tags-wrapper">
|
||||
<?php
|
||||
$sophia_after_dark_trending_tags_orderby = get_theme_mod( 'sophia_after_dark_trending_tags_orderby', '' );
|
||||
$sophia_after_dark_trending_tags_count = get_theme_mod( 'sophia_after_dark_trending_tags_count', '5' );
|
||||
$get_tags_lists = get_tags( array(
|
||||
'order' => 'DESC',
|
||||
'orderby'=> esc_attr( $sophia_after_dark_trending_tags_orderby ),
|
||||
'number' => absint( $sophia_after_dark_trending_tags_count ),
|
||||
));
|
||||
if ( !empty( $get_tags_lists ) ) {
|
||||
echo '<span class="head-tags-links">';
|
||||
foreach( $get_tags_lists as $tag ) {
|
||||
echo '<a href="'.esc_html( get_tag_link( $tag->term_id ) ).'" rel="tag">'. esc_html( $tag->name ) .'</a>';
|
||||
}
|
||||
echo '</span>';
|
||||
}
|
||||
?>
|
||||
</div><!-- .tags-wrapper -->
|
||||
</div><!-- .trending-wrapper -->
|
||||
<?php
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_top_header_nav' ) ) :
|
||||
|
||||
/**
|
||||
* function to display top nav menu.
|
||||
*/
|
||||
function sophia_after_dark_top_header_nav() {
|
||||
|
||||
$sophia_after_dark_enable_live_now = get_theme_mod( 'sophia_after_dark_enable_live_now', false );
|
||||
|
||||
if ( true === $sophia_after_dark_enable_live_now ) {
|
||||
$sophia_after_dark_live_now_label = get_theme_mod( 'sophia_after_dark_live_now_label', __( 'Live Now', 'sophia-after-dark' ) );
|
||||
$sophia_after_dark_live_now_link = get_theme_mod( 'sophia_after_dark_live_now_link' );
|
||||
?>
|
||||
<div class="mt-live-link">
|
||||
<a href="<?php echo esc_url( $sophia_after_dark_live_now_link ); ?>" target="_blank"> <i class="fa fa-play-circle-o" aria-hidden="true"></i><?php echo esc_html( $sophia_after_dark_live_now_label ); ?></a>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<div class="top-header-nav">
|
||||
<nav itemscope id="top-navigation" class="main-navigation">
|
||||
<?php
|
||||
wp_nav_menu( array(
|
||||
'theme_location' => 'top_header_menu',
|
||||
'menu_id' => 'top-header-menu',
|
||||
'fallback_cb' => false,
|
||||
) );
|
||||
?>
|
||||
</nav><!-- #site-navigation -->
|
||||
</div><!-- .top-header-nav -->
|
||||
<?php
|
||||
}
|
||||
|
||||
endif;
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------*/
|
||||
add_action( 'sophia_after_dark_top_header', 'sophia_after_dark_top_header_start', 5 );
|
||||
add_action( 'sophia_after_dark_top_header', 'sophia_after_dark_trending_section', 10 );
|
||||
add_action( 'sophia_after_dark_top_header', 'sophia_after_dark_top_header_nav', 20 );
|
||||
add_action( 'sophia_after_dark_top_header', 'sophia_after_dark_top_header_end', 50 );
|
60
inc/jetpack.php
Normal file
60
inc/jetpack.php
Normal file
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
/**
|
||||
* Jetpack Compatibility File
|
||||
*
|
||||
* @link https://jetpack.com
|
||||
*
|
||||
* @package Color Blo Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* Jetpack setup function.
|
||||
*
|
||||
* See: https://jetpack.com/support/infinite-scroll
|
||||
* See: https://jetpack.com/support/responsive-videos/
|
||||
* See: https://jetpack.com/support/content-options/
|
||||
*/
|
||||
function sophia_after_dark_jetpack_setup() {
|
||||
// Add theme support for Infinite Scroll.
|
||||
add_theme_support( 'infinite-scroll', array(
|
||||
'container' => 'main',
|
||||
'render' => 'sophia_after_dark_infinite_scroll_render',
|
||||
'footer' => 'page'
|
||||
) );
|
||||
|
||||
// Add theme support for Responsive Videos.
|
||||
add_theme_support( 'jetpack-responsive-videos' );
|
||||
|
||||
// Add theme support for Content Options
|
||||
add_theme_support( 'jetpack-content-options', array(
|
||||
'post-details' => array(
|
||||
'stylesheet' => 'sophia-after-dark-style',
|
||||
'date' => '.posted-on',
|
||||
'categories' => '.cat-links',
|
||||
'tags' => '.tags-links',
|
||||
'author' => '.byline',
|
||||
'comment' => '.comments-link',
|
||||
),
|
||||
'featured-images' => array(
|
||||
'archive' => true,
|
||||
'post' => true,
|
||||
'page' => true,
|
||||
),
|
||||
) );
|
||||
}
|
||||
add_action( 'after_setup_theme', 'sophia_after_dark_jetpack_setup' );
|
||||
|
||||
/**
|
||||
* Custom render function for Infinite Scroll
|
||||
*/
|
||||
function sophia_after_dark_infinite_scroll_render() {
|
||||
while ( have_posts() ) {
|
||||
the_post();
|
||||
if ( is_search() ) :
|
||||
get_template_part( 'template-parts/content', 'search' );
|
||||
else :
|
||||
get_template_part( 'template-parts/content', get_post_type() );
|
||||
endif;
|
||||
}
|
||||
}
|
116
inc/metaboxes/mt-post-sidebar-meta.php
Normal file
116
inc/metaboxes/mt-post-sidebar-meta.php
Normal file
@ -0,0 +1,116 @@
|
||||
<?php
|
||||
/**
|
||||
* Functions for rendering meta boxes in post/page
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
add_action( 'add_meta_boxes', 'sophia_after_dark_sidebar_metaboxes', 10, 2 );
|
||||
|
||||
function sophia_after_dark_sidebar_metaboxes() {
|
||||
|
||||
add_meta_box(
|
||||
'sophia_after_dark_post_sidebar',
|
||||
__( 'Sidebar Layout', 'sophia-after-dark' ),
|
||||
'sophia_after_dark_sidebar_callback',
|
||||
'post',
|
||||
'normal',
|
||||
'default'
|
||||
);
|
||||
|
||||
add_meta_box(
|
||||
'sophia_after_dark_post_sidebar',
|
||||
__( 'Sidebar Layout', 'sophia-after-dark' ),
|
||||
'sophia_after_dark_sidebar_callback',
|
||||
'page',
|
||||
'normal',
|
||||
'default'
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
function sophia_after_dark_sidebar_callback( $post ) {
|
||||
|
||||
// Setup our options.
|
||||
$sophia_after_dark_page_sidebar_option = array(
|
||||
'default-sidebar' => array(
|
||||
'id' => 'post-default-sidebar',
|
||||
'value' => 'layout--default-sidebar',
|
||||
'label' => __( 'Default Sidebar', 'sophia-after-dark' ),
|
||||
'thumbnail' => get_template_directory_uri() . '/assets/images/default-sidebar.png'
|
||||
),
|
||||
'left-sidebar' => array(
|
||||
'id' => 'post-left-sidebar',
|
||||
'value' => 'left-sidebar',
|
||||
'label' => __( 'Left sidebar', 'sophia-after-dark' ),
|
||||
'thumbnail' => get_template_directory_uri() . '/assets/images/left-sidebar.png'
|
||||
),
|
||||
'right-sidebar' => array(
|
||||
'id' => 'post-right-sidebar',
|
||||
'value' => 'right-sidebar',
|
||||
'label' => __( 'Right sidebar', 'sophia-after-dark' ),
|
||||
'thumbnail' => get_template_directory_uri() . '/assets/images/right-sidebar.png'
|
||||
),
|
||||
'no-sidebar' => array(
|
||||
'id' => 'post-no-sidebar',
|
||||
'value' => 'no-sidebar',
|
||||
'label' => __( 'No sidebar Full width', 'sophia-after-dark' ),
|
||||
'thumbnail' => get_template_directory_uri() . '/assets/images/no-sidebar.png'
|
||||
),
|
||||
'no-sidebar-center' => array(
|
||||
'id' => 'post-no-sidebar-center',
|
||||
'value' => 'no-sidebar-center',
|
||||
'label' => __( 'No sidebar Content Centered', 'sophia-after-dark' ),
|
||||
'thumbnail' => get_template_directory_uri() . '/assets/images/no-sidebar-center.png'
|
||||
)
|
||||
);
|
||||
|
||||
// Check for previously set.
|
||||
$post_sidebar_layout = get_post_meta( $post->ID, 'sophia_after_dark_post_sidebar_layout', true );
|
||||
|
||||
// If it is then we use it otherwise set to default.
|
||||
$post_sidebar_layout = ( $post_sidebar_layout ) ? $post_sidebar_layout : 'layout--default-sidebar';
|
||||
|
||||
// Create our nonce field.
|
||||
wp_nonce_field( 'sophia_after_dark_nonce_' . basename( __FILE__ ) , 'sophia_after_dark_sidebar_layout_nonce' );
|
||||
?>
|
||||
<div class="mt-meta-options-wrap">
|
||||
<div class="buttonset">
|
||||
<?php foreach ( $sophia_after_dark_page_sidebar_option as $field ) { ?>
|
||||
<input type="radio" id="<?php echo esc_attr( $field['id'] ); ?>" value="<?php echo esc_attr( $field['value'] ); ?>" name="sophia_after_dark_post_sidebar_layout" <?php checked( $field['value'], $post_sidebar_layout ); ?> />
|
||||
<label for="<?php echo esc_attr( $field['id'] ); ?>">
|
||||
<span class="screen-reader-text"><?php echo esc_html( $field['label'] ); ?></span>
|
||||
<img src="<?php echo esc_url( $field['thumbnail'] ); ?>" title="<?php echo esc_attr( $field['label'] ); ?>" alt="<?php echo esc_attr( $field['label'] ); ?>" />
|
||||
</label>
|
||||
<?php } ?>
|
||||
</div><!-- .buttonset -->
|
||||
</div><!-- .mt-meta-options-wrap -->
|
||||
<?php
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
add_action( 'save_post', 'sophia_after_dark_save_post_meta' );
|
||||
|
||||
function sophia_after_dark_save_post_meta( $post_id ) {
|
||||
// Checks save status
|
||||
$is_autosave = wp_is_post_autosave( $post_id );
|
||||
$is_revision = wp_is_post_revision( $post_id );
|
||||
$is_valid_nonce = ( isset( $_POST['sophia_after_dark_sidebar_layout_nonce'] ) && wp_verify_nonce( $_POST['sophia_after_dark_sidebar_layout_nonce'], 'sophia_after_dark_nonce_' . basename( __FILE__ ) ) ) ? 'true' : 'false';
|
||||
|
||||
// Exits script depending on save status
|
||||
if ( $is_autosave || $is_revision || ! $is_valid_nonce ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check for out input value.
|
||||
if ( isset( $_POST['sophia_after_dark_post_sidebar_layout'] ) ) {
|
||||
// We validate making sure that the option is something we can expect.
|
||||
$value = in_array( $_POST['sophia_after_dark_post_sidebar_layout'], array( 'no-sidebar', 'left-sidebar', 'right-sidebar', 'no-sidebar-center', 'layout--default-sidebar' ) ) ? $_POST['sophia_after_dark_post_sidebar_layout'] : 'layout--default-sidebar';
|
||||
// We update our post meta.
|
||||
update_post_meta( $post_id, 'sophia_after_dark_post_sidebar_layout', $value );
|
||||
}
|
||||
}
|
1237
inc/mt-class-breadcrumbs.php
Normal file
1237
inc/mt-class-breadcrumbs.php
Normal file
File diff suppressed because it is too large
Load Diff
51
inc/mt-dynamic-styles.php
Normal file
51
inc/mt-dynamic-styles.php
Normal file
@ -0,0 +1,51 @@
|
||||
<?php
|
||||
/**
|
||||
* Dynamic styles
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*
|
||||
*/
|
||||
|
||||
add_action( 'wp_enqueue_scripts', 'sophia_after_dark_dynamic_styles' );
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_dynamic_styles' ) ) :
|
||||
|
||||
function sophia_after_dark_dynamic_styles() {
|
||||
|
||||
$sophia_after_dark_primary_color = get_theme_mod( 'sophia_after_dark_primary_color', '#dd3333' );
|
||||
$get_categories = get_categories( array( 'hide_empty' => 1 ) );
|
||||
|
||||
$output_css = '';
|
||||
|
||||
foreach ( $get_categories as $category ) {
|
||||
|
||||
$cat_color = get_theme_mod( 'sophia_after_dark_category_color_'.$category->slug, '#3b2d1b' );
|
||||
$cat_hover_color = sophia_after_dark_hover_color( $cat_color, '-50' );
|
||||
$cat_id = $category->term_id;
|
||||
|
||||
if ( !empty( $cat_color ) ) {
|
||||
$output_css .= ".category-button.cbd-cat-". esc_attr( $cat_id ) ." a { background: ". esc_attr( $cat_color ) ."}\n";
|
||||
$output_css .= ".category-button.cbd-cat-". esc_attr( $cat_id ) ." a:hover { background: ". esc_attr( $cat_hover_color ) ."}\n";
|
||||
$output_css .= "#site-navigation ul li.cbd-cat-". esc_attr( $cat_id ) ." .menu-item-description { background: ". esc_attr( $cat_color ) ."}\n";
|
||||
$output_css .= "#site-navigation ul li.cbd-cat-". esc_attr( $cat_id ) ." .menu-item-description:after { border-top-color: ". esc_attr( $cat_color ) ."}\n";
|
||||
}
|
||||
}
|
||||
|
||||
$output_css .= "a,a:hover,a:focus,a:active,.entry-cat .cat-links a:hover,.entry-cat a:hover,.entry-footer a:hover,.comment-author .fn .url:hover,.commentmetadata .comment-edit-link, #cancel-comment-reply-link, #cancel-comment-reply-link:before, .logged-in-as a,.widget a:hover, .widget a:hover::before, .widget li:hover::before,.mt-social-icon-wrap li a:hover,.mt-social-icon-wrap li a:focus,#site-navigation ul li:hover>a,#site-navigation ul li.current-menu-item>a,#site-navigation ul li.current_page_ancestor>a,#site-navigation ul li.current-menu-ancestor>a,#site-navigation ul li.current_page_item>a,#site-navigation ul li.current-menu-parent>a,#site-navigation ul li.focus>a,.banner-sub-title,.entry-title a:hover,.cat-links a:hover,.entry-footer .mt-readmore-btn:hover,.btn-wrapper a:hover,.mt-readmore-btn:hover,.navigation.pagination .nav-links .page-numbers.current, .navigation.pagination .nav-links a.page-numbers:hover,#footer-menu li a:hover,.sophia_after_dark_latest_posts .mt-post-title a:hover,#mt-scrollup:hover,.menu-toggle:hover, #top-navigation ul li a:hover,.mt-search-icon:hover, .entry-meta a:hover, .front-slider-block .banner-title a:hover, .post-info-wrap .entry-meta a:hover, .single .mt-single-related-posts .entry-title a:hover, .breadcrumbs .trail-items li a:hover, .wrap-label i,.has-thumbnail .post-info-wrap .entry-title a:hover,.front-slider-block .post-info-wrap .entry-title a:hover,#top-footer a:hover{ color: ". esc_attr( $sophia_after_dark_primary_color ) ."}\n";
|
||||
$output_css .= ".widget_search .search-submit,.widget_search .search-submit:hover,.navigation.pagination .nav-links .page-numbers.current, .navigation.pagination .nav-links a.page-numbers:hover, .error-404.not-found, .sophia_after_dark_social_media a:hover, .custom-header,.widget_tag_cloud .tagcloud a:hover,.widget.widget_tag_cloud a:hover { border-color: ". esc_attr( $sophia_after_dark_primary_color ) ."}\n";
|
||||
$output_css .= ".front-slider-block .lSAction > a:hover, .top-featured-post-wrap .post-thumbnail .post-number, .post-cats-list a, #site-navigation .menu-item-description, article .post-thumbnail::before, #secondary .widget .widget-title::before, .mt-related-post-title::before, #colophon .widget .widget-title::before, .features-post-title::before, .mt-menu-search .mt-form-wrap .search-form .search-submit,.mt-live-link a,.widget_tag_cloud .tagcloud a:hover,.widget.widget_tag_cloud a:hover { background: ". esc_attr( $sophia_after_dark_primary_color ) ."}\n";
|
||||
$output_css .= ".edit-link .post-edit-link,.reply .comment-reply-link,.widget_search .search-submit, .mt-menu-search .mt-form-wrap .search-form .search-submit:hover, article.sticky::before{ background: ". esc_attr( $sophia_after_dark_primary_color ) ."}\n";
|
||||
|
||||
$output_css .= ".mt-menu-search .mt-form-wrap .search-form .search-field:focus{ outline-color: ". esc_attr( $sophia_after_dark_primary_color ) ."}\n";
|
||||
|
||||
$slider_bg_image = get_theme_mod( 'sophia_after_dark_slider_bg_image' );
|
||||
|
||||
if ( !empty( $slider_bg_image ) ) {
|
||||
$output_css .= ".front-slider-wrapper{background: url(". esc_url( $slider_bg_image ) .") no-repeat fixed center center/cover}\n";
|
||||
}
|
||||
|
||||
$refine_output_css = sophia_after_dark_css_strip_whitespace( $output_css );
|
||||
wp_add_inline_style( 'sophia-after-dark-style', $refine_output_css );
|
||||
}
|
||||
endif;
|
431
inc/template-functions.php
Normal file
431
inc/template-functions.php
Normal file
@ -0,0 +1,431 @@
|
||||
<?php
|
||||
/**
|
||||
* Functions which enhance the theme by hooking into WordPress
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* Adds custom classes to the array of body classes.
|
||||
*
|
||||
* @param array $classes Classes for the body element.
|
||||
* @return array
|
||||
*/
|
||||
function sophia_after_dark_body_classes( $classes ) {
|
||||
global $post;
|
||||
|
||||
// Adds a class of hfeed to non-singular pages.
|
||||
if ( ! is_singular() ) {
|
||||
$classes[] = 'hfeed';
|
||||
}
|
||||
|
||||
// Adds a class of no-sidebar when there is no sidebar present.
|
||||
if ( ! is_active_sidebar( 'sidebar-1' ) ) {
|
||||
$classes[] = 'no-sidebar';
|
||||
}
|
||||
|
||||
$sophia_after_dark_site_layout = get_theme_mod( 'sophia_after_dark_site_layout', 'site-layout--wide' );
|
||||
$classes[] = esc_attr( $sophia_after_dark_site_layout );
|
||||
|
||||
/**
|
||||
* Add classes about style and sidebar layout for archive, post and page
|
||||
*/
|
||||
if ( is_archive() || is_home() || is_search()) {
|
||||
$archive_sidebar_layout = get_theme_mod( 'sophia_after_dark_archive_sidebar_layout', 'no-sidebar' );
|
||||
$archive_style = get_theme_mod( 'sophia_after_dark_archive_style', 'mt-archive--masonry-style' );
|
||||
$classes[] = esc_attr( $archive_sidebar_layout );
|
||||
$classes[] = esc_attr( $archive_style );
|
||||
} elseif ( is_single() ) {
|
||||
$single_post_sidebar_layout = get_post_meta( $post->ID, 'sophia_after_dark_post_sidebar_layout', true );
|
||||
if ( 'layout--default-sidebar' !== $single_post_sidebar_layout && !empty( $single_post_sidebar_layout ) ) {
|
||||
$classes[] = esc_attr( $single_post_sidebar_layout );
|
||||
} else {
|
||||
$posts_sidebar_layout = get_theme_mod( 'sophia_after_dark_posts_sidebar_layout', 'right-sidebar' );
|
||||
$classes[] = esc_attr( $posts_sidebar_layout );
|
||||
}
|
||||
} elseif ( is_page() ) {
|
||||
$single_page_sidebar_layout = get_post_meta( $post->ID, 'sophia_after_dark_post_sidebar_layout', true );
|
||||
if ( 'layout--default-sidebar' !== $single_page_sidebar_layout && !empty( $single_page_sidebar_layout ) ) {
|
||||
$classes[] = esc_attr( $single_page_sidebar_layout );
|
||||
} else {
|
||||
$pages_sidebar_layout = get_theme_mod( 'sophia_after_dark_pages_sidebar_layout', 'right-sidebar' );
|
||||
$classes[] = esc_attr( $pages_sidebar_layout );
|
||||
}
|
||||
}
|
||||
return $classes;
|
||||
}
|
||||
add_filter( 'body_class', 'sophia_after_dark_body_classes' );
|
||||
|
||||
/**
|
||||
* Add a pingback url auto-discovery header for single posts, pages, or attachments.
|
||||
*/
|
||||
function sophia_after_dark_pingback_header() {
|
||||
|
||||
if ( is_singular() && pings_open() ) {
|
||||
echo '<link rel="pingback" href="', esc_url( get_bloginfo( 'pingback_url' ) ), '">';
|
||||
}
|
||||
|
||||
}
|
||||
add_action( 'wp_head', 'sophia_after_dark_pingback_header' );
|
||||
/*-----------------------------------------------------------------------------------------------------------------------*/
|
||||
if ( ! function_exists( 'sophia_after_dark_fonts_url' ) ) :
|
||||
|
||||
/**
|
||||
* Register Google fonts for Sophia After Dark.
|
||||
*
|
||||
* @return string Google fonts URL for the theme.
|
||||
* @since 1.0.0
|
||||
*/
|
||||
function sophia_after_dark_fonts_url() {
|
||||
$fonts_url = '';
|
||||
$font_families = array();
|
||||
|
||||
/*
|
||||
* Translators: If there are characters in your language that are not supported
|
||||
* byJosefin Sans translate this to 'off'. Do not translate into your own language.
|
||||
*/
|
||||
if ( 'off' !== _x( 'on', 'Josefin Sans font: on or off', 'sophia-after-dark' ) ) {
|
||||
$font_families[] = 'Josefin Sans:400,700';
|
||||
}
|
||||
|
||||
/*
|
||||
* Translators: If there are characters in your language that are not supported
|
||||
* by Poppins, translate this to 'off'. Do not translate into your own language.
|
||||
*/
|
||||
if ( 'off' !== _x( 'on', 'Poppins font: on or off', 'sophia-after-dark' ) ) {
|
||||
$font_families[] = 'Poppins:300,400,400i,500,700';
|
||||
}
|
||||
|
||||
if ( $font_families ) {
|
||||
$query_args = array(
|
||||
'family' => urlencode( implode( '|', $font_families ) ),
|
||||
'subset' => urlencode( 'latin,latin-ext' ),
|
||||
);
|
||||
$fonts_url = add_query_arg( $query_args, 'https://fonts.bunny.net/css' );
|
||||
}
|
||||
return $fonts_url;
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
/*-----------------------------------------------------------------------------------------------------------------------*/
|
||||
/**
|
||||
* Enqueue scripts and styles for only admin
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
add_action( 'admin_enqueue_scripts', 'sophia_after_dark_admin_scripts' );
|
||||
|
||||
function sophia_after_dark_admin_scripts( $hook ) {
|
||||
global $sophia_after_dark_theme_version;
|
||||
|
||||
if ( 'widgets.php' != $hook && 'customize.php' != $hook && 'edit.php' != $hook && 'post.php' != $hook && 'post-new.php' != $hook ) {
|
||||
return;
|
||||
}
|
||||
|
||||
wp_enqueue_script( 'jquery-ui-button' );
|
||||
wp_enqueue_script( 'sophia-after-dark--admin-script', get_template_directory_uri() .'/assets/js/mt-admin-scripts.js', array( 'jquery' ), esc_attr( $sophia_after_dark_theme_version ), true );
|
||||
wp_enqueue_style( 'sophia-after-dark--admin-style', get_template_directory_uri() . '/assets/css/mt-admin-styles.css', array(), esc_attr( $sophia_after_dark_theme_version ) );
|
||||
}
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
/**
|
||||
* Enqueue scripts and styles.
|
||||
*/
|
||||
function sophia_after_dark_scripts() {
|
||||
global $sophia_after_dark_theme_version;
|
||||
|
||||
wp_enqueue_style( 'sophia-after-dark-fonts', sophia_after_dark_fonts_url(), array(), null );
|
||||
wp_enqueue_style( 'lightslider-style', get_template_directory_uri() .'/assets/library/lightslider/css/lightslider.min.css', array(), '' );
|
||||
wp_enqueue_style( 'animate', get_template_directory_uri(). '/assets/library/animate/animate.min.css', array(), '3.5.1' );
|
||||
wp_enqueue_style( 'preloader', get_template_directory_uri() .'/assets/css/mt-preloader.css', array(), esc_attr( $sophia_after_dark_theme_version ) );
|
||||
wp_enqueue_style( 'sophia-after-dark-style', get_stylesheet_uri(), array(), esc_attr( $sophia_after_dark_theme_version) );
|
||||
wp_enqueue_style( 'sophia-after-dark-responsive-style', get_template_directory_uri(). '/assets/css/mt-responsive.css', array(), esc_attr( $sophia_after_dark_theme_version ) );
|
||||
|
||||
wp_enqueue_script( 'sophia-after-dark-combine-scripts', get_template_directory_uri() .'/assets/js/mt-combine-scripts.js', array('jquery'), esc_attr( $sophia_after_dark_theme_version ), true );
|
||||
wp_enqueue_script( 'sophia-after-dark-navigation', get_template_directory_uri() . '/assets/js/navigation.js', array(), esc_attr( $sophia_after_dark_theme_version ), true );
|
||||
wp_enqueue_script( 'sophia-after-dark-skip-link-focus-fix', get_template_directory_uri() . '/assets/js/skip-link-focus-fix.js', array(), esc_attr( $sophia_after_dark_theme_version ), true );
|
||||
wp_enqueue_script( 'sophia-after-dark-custom-scripts', get_template_directory_uri() .'/assets/js/mt-custom-scripts.js', array('jquery'), esc_attr( $sophia_after_dark_theme_version ), true );
|
||||
|
||||
$sophia_after_dark_enable_sticky_menu = get_theme_mod( 'sophia_after_dark_enable_sticky_menu', true );
|
||||
if ( true === $sophia_after_dark_enable_sticky_menu ) {
|
||||
$sticky_value = 'on';
|
||||
} else {
|
||||
$sticky_value = 'off';
|
||||
}
|
||||
|
||||
$sophia_after_dark_enable_wow_animation = get_theme_mod( 'sophia_after_dark_enable_wow_animation', true );
|
||||
if ( true === $sophia_after_dark_enable_wow_animation ) {
|
||||
$wow_value = 'on';
|
||||
} else {
|
||||
$wow_value = 'off';
|
||||
}
|
||||
|
||||
wp_localize_script( 'sophia-after-dark-custom-scripts', 'sophia_after_darkObject', array(
|
||||
'menu_sticky' => $sticky_value,
|
||||
'wow_effect' => $wow_value
|
||||
) );
|
||||
|
||||
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
|
||||
wp_enqueue_script( 'comment-reply' );
|
||||
}
|
||||
}
|
||||
add_action( 'wp_enqueue_scripts', 'sophia_after_dark_scripts' );
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
if ( ! function_exists( 'sophia_after_dark_preloader' ) ) :
|
||||
|
||||
/**
|
||||
* preloader function
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
function sophia_after_dark_preloader() {
|
||||
$sophia_after_dark_enable_preloader = get_theme_mod( 'sophia_after_dark_enable_preloader', true );
|
||||
if ( false === $sophia_after_dark_enable_preloader ){
|
||||
return;
|
||||
}
|
||||
?>
|
||||
<div id="preloader-background">
|
||||
<div class="preloader-wrapper">
|
||||
<div class="sk-spinner sk-spinner-pulse"></div>
|
||||
</div><!-- .preloader-wrapper -->
|
||||
</div><!-- #preloader-background -->
|
||||
<?php
|
||||
}
|
||||
|
||||
endif;
|
||||
add_action( 'sophia_after_dark_before_page', 'sophia_after_dark_preloader', 5 );
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_font_awesome_social_icon_array' ) ) :
|
||||
|
||||
/**
|
||||
* Define font awesome social media icons
|
||||
*
|
||||
* @return array();
|
||||
* @since 1.0.0
|
||||
*/
|
||||
function sophia_after_dark_font_awesome_social_icon_array() {
|
||||
return array(
|
||||
"fa fa-facebook-square","fa fa-facebook-f","fa fa-facebook","fa fa-facebook-official","fa fa-twitter-square","fa fa-twitter","fa fa-yahoo","fa fa-google","fa fa-google-wallet","fa fa-google-plus-circle","fa fa-google-plus-official","fa fa-instagram","fa fa-linkedin-square","fa fa-linkedin","fa fa-pinterest-p","fa fa-pinterest","fa fa-pinterest-square","fa fa-google-plus-square","fa fa-google-plus","fa fa-youtube-square","fa fa-youtube","fa fa-youtube-play","fa fa-vimeo","fa fa-vimeo-square",
|
||||
);
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
if ( ! function_exists( 'sophia_after_dark_social_media_content' ) ) :
|
||||
|
||||
/**
|
||||
* function to display the social icons
|
||||
*/
|
||||
function sophia_after_dark_social_media_content() {
|
||||
$defaults_icons = json_encode( array(
|
||||
array(
|
||||
'social_icon' => 'fa fa-twitter',
|
||||
'social_url' => '#',
|
||||
),
|
||||
array(
|
||||
'social_icon' => 'fa fa-pinterest',
|
||||
'social_url' => '#',
|
||||
)
|
||||
)
|
||||
);
|
||||
$sophia_after_dark_social_icons = get_theme_mod( 'sophia_after_dark_social_icons', $defaults_icons );
|
||||
$social_icons = json_decode( $sophia_after_dark_social_icons );
|
||||
|
||||
if ( ! empty( $social_icons ) ) {
|
||||
?>
|
||||
<ul class="mt-social-icon-wrap">
|
||||
<?php
|
||||
foreach ( $social_icons as $social_icon ) {
|
||||
if ( ! empty( $social_icon->social_url ) ) {
|
||||
?>
|
||||
<li class="mt-social-icon">
|
||||
<a href="<?php echo esc_url( $social_icon->social_url ); ?>" target="_blank">
|
||||
<i class="<?php echo esc_attr( $social_icon->social_icon ); ?>"></i>
|
||||
</a>
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
/*-----------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_hover_color' ) ) :
|
||||
|
||||
/**
|
||||
* Generate darker color
|
||||
* Source: http://stackoverflow.com/questions/3512311/how-to-generate-lighter-darker-color-with-php
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
function sophia_after_dark_hover_color( $hex, $steps ) {
|
||||
// Steps should be between -255 and 255. Negative = darker, positive = lighter
|
||||
$steps = max( -255, min( 255, $steps ) );
|
||||
|
||||
// Normalize into a six character long hex string
|
||||
$hex = str_replace( '#', '', $hex );
|
||||
if ( strlen( $hex ) == 3) {
|
||||
$hex = str_repeat( substr( $hex,0,1 ), 2 ).str_repeat( substr( $hex, 1, 1 ), 2 ).str_repeat( substr( $hex,2,1 ), 2 );
|
||||
}
|
||||
|
||||
// Split into three parts: R, G and B
|
||||
$color_parts = str_split( $hex, 2 );
|
||||
$return = '#';
|
||||
|
||||
foreach ( $color_parts as $color ) {
|
||||
$color = hexdec( $color ); // Convert to decimal
|
||||
$color = max( 0, min( 255, $color + $steps ) ); // Adjust color
|
||||
$return .= str_pad( dechex( $color ), 2, '0', STR_PAD_LEFT ); // Make two char hex code
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
if ( ! function_exists( 'sophia_after_dark_select_categories_list' ) ) :
|
||||
|
||||
/**
|
||||
* function to return category lists
|
||||
*
|
||||
* @return $sophia_after_dark_categories_list in array
|
||||
*/
|
||||
function sophia_after_dark_select_categories_list() {
|
||||
$sophia_after_dark_get_categories = get_categories( array( 'hide_empty' => 0 ) );
|
||||
$sophia_after_dark_categories_list[''] = __( 'Select Category', 'sophia-after-dark' );
|
||||
foreach ( $sophia_after_dark_get_categories as $category ) {
|
||||
$sophia_after_dark_categories_list[esc_attr( $category->slug )] = esc_html( $category->cat_name );
|
||||
}
|
||||
return $sophia_after_dark_categories_list;
|
||||
}
|
||||
|
||||
endif;
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
if ( ! function_exists( 'sophia_after_dark_is_sidebar_layout' ) ) :
|
||||
|
||||
/**
|
||||
* Checks if the current page matches the given layout
|
||||
*
|
||||
* @return string $layout layout of current page.
|
||||
*/
|
||||
function sophia_after_dark_is_sidebar_layout() {
|
||||
global $post;
|
||||
$layout = '';
|
||||
if ( is_archive() || is_home() ) {
|
||||
$layout = get_theme_mod( 'sophia_after_dark_archive_sidebar_layout', 'no-sidebar' );
|
||||
} elseif ( is_single() ) {
|
||||
$single_post_layout = get_post_meta( $post->ID, 'sophia_after_dark_post_sidebar_layout', true );
|
||||
if ( 'layout--default-sidebar' !== $single_post_layout ) {
|
||||
$layout = $single_post_layout;
|
||||
} else {
|
||||
$layout = get_theme_mod( 'sophia_after_dark_posts_sidebar_layout', 'right-sidebar' );
|
||||
}
|
||||
} elseif ( is_page() ) {
|
||||
$single_page_layout = get_post_meta( $post->ID, 'sophia_after_dark_post_sidebar_layout', true );
|
||||
if ( 'layout--default-sidebar' !== $single_page_layout ) {
|
||||
$layout = $single_page_layout;
|
||||
} else {
|
||||
$layout = get_theme_mod( 'sophia_after_dark_pages_sidebar_layout', 'right-sidebar' );
|
||||
}
|
||||
}
|
||||
return $layout;
|
||||
}
|
||||
|
||||
endif;
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
if ( ! function_exists( 'sophia_after_dark_inner_header_bg_image' ) ) :
|
||||
|
||||
/**
|
||||
* Background image for inner page header
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
function sophia_after_dark_inner_header_bg_image( $input ) {
|
||||
|
||||
$image_attr = array();
|
||||
|
||||
if ( empty( $image_attr ) ) {
|
||||
|
||||
// Fetch from Custom Header Image.
|
||||
$image = get_header_image();
|
||||
if ( ! empty( $image ) ) {
|
||||
$image_attr['url'] = $image;
|
||||
$image_attr['width'] = get_custom_header()->width;
|
||||
$image_attr['height'] = get_custom_header()->height;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! empty( $image_attr ) ) {
|
||||
$input .= 'background-image:url(' . esc_url( $image_attr['url'] ) . ');';
|
||||
$input .= 'background-size:cover;';
|
||||
}
|
||||
|
||||
return $input;
|
||||
}
|
||||
|
||||
endif;
|
||||
add_filter( 'sophia_after_dark_inner_header_style_attribute', 'sophia_after_dark_inner_header_bg_image' );
|
||||
/*-----------------------------------------------------------------------------------------------------------------------*/
|
||||
if ( ! function_exists( 'sophia_after_dark_css_strip_whitespace' ) ) :
|
||||
|
||||
/**
|
||||
* Get minified css and removed space
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
function sophia_after_dark_css_strip_whitespace( $css ){
|
||||
$replace = array(
|
||||
"#/\*.*?\*/#s" => "", // Strip C style comments.
|
||||
"#\s\s+#" => " ", // Strip excess whitespace.
|
||||
);
|
||||
$search = array_keys( $replace );
|
||||
$css = preg_replace( $search, $replace, $css );
|
||||
|
||||
$replace = array(
|
||||
": " => ":",
|
||||
"; " => ";",
|
||||
" {" => "{",
|
||||
" }" => "}",
|
||||
", " => ",",
|
||||
"{ " => "{",
|
||||
";}" => "}", // Strip optional semicolons.
|
||||
",\n" => ",", // Don't wrap multiple selectors.
|
||||
"\n}" => "}", // Don't wrap closing braces.
|
||||
"} " => "}\n", // Put each rule on it's own line.
|
||||
);
|
||||
$search = array_keys( $replace );
|
||||
$css = str_replace( $search, $replace, $css );
|
||||
|
||||
return trim( $css );
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
/*-----------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* Archive title prefix
|
||||
*
|
||||
*/
|
||||
$archive_title_prefix_option = get_theme_mod( 'sophia_after_dark_enable_archive_title_prefix', true );
|
||||
|
||||
if ( false === $archive_title_prefix_option ) {
|
||||
add_filter( 'get_the_archive_title', 'sophia_after_dark_archive_title_prefix' );
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_archive_title_prefix' ) ) :
|
||||
|
||||
function sophia_after_dark_archive_title_prefix( $title ) {
|
||||
return preg_replace( '/^\w+: /', '', $title );
|
||||
}
|
||||
|
||||
endif;
|
264
inc/template-tags.php
Normal file
264
inc/template-tags.php
Normal file
@ -0,0 +1,264 @@
|
||||
<?php
|
||||
/**
|
||||
* Custom template tags for this theme
|
||||
*
|
||||
* Eventually, some of the functionality here could be replaced by core features.
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
if ( ! function_exists( 'sophia_after_dark_posted_on' ) ) :
|
||||
|
||||
/**
|
||||
* Prints HTML with meta information for the current post-date/time.
|
||||
*/
|
||||
function sophia_after_dark_posted_on() {
|
||||
$time_string = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>';
|
||||
if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) {
|
||||
$time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s">%4$s</time>';
|
||||
}
|
||||
|
||||
$time_string = sprintf( $time_string,
|
||||
esc_attr( get_the_date( DATE_W3C ) ),
|
||||
esc_html( get_the_date() ),
|
||||
esc_attr( get_the_modified_date( DATE_W3C ) ),
|
||||
esc_html( get_the_modified_date() )
|
||||
);
|
||||
|
||||
$posted_on = sprintf(
|
||||
'%s',
|
||||
'<a href="' . esc_url( get_permalink() ) . '" rel="bookmark">' . $time_string . '</a>'
|
||||
);
|
||||
|
||||
echo '<span class="posted-on">' . $posted_on . '</span>'; // WPCS: XSS OK.
|
||||
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_posted_by' ) ) :
|
||||
|
||||
/**
|
||||
* Prints HTML with meta information for the current author.
|
||||
*/
|
||||
function sophia_after_dark_posted_by() {
|
||||
|
||||
echo '<span class="byline"><span class="author vcard"><a class="url fn n" href="'. esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ) .'">'. esc_html( get_the_author() ) .'</a></span></span>'; // WPCS: XSS OK.
|
||||
|
||||
}
|
||||
|
||||
endif;
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_posted_comments' ) ) :
|
||||
|
||||
/**
|
||||
* Show comment count and leave comment link if no comments are posted
|
||||
*/
|
||||
function sophia_after_dark_posted_comments() {
|
||||
if ( ! post_password_required() && ( comments_open() || get_comments_number() ) ) {
|
||||
echo '<span class="comments-link">';
|
||||
comments_popup_link(
|
||||
sprintf(
|
||||
wp_kses(
|
||||
/* translators: %s: post title */
|
||||
__( 'Leave a Comment<span class="screen-reader-text"> on %s</span>', 'sophia-after-dark' ),
|
||||
array(
|
||||
'span' => array(
|
||||
'class' => array(),
|
||||
),
|
||||
)
|
||||
),
|
||||
get_the_title()
|
||||
)
|
||||
);
|
||||
echo '</span>';
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_entry_footer' ) ) :
|
||||
|
||||
/**
|
||||
* Prints HTML with meta information for the categories, tags and comments.
|
||||
*/
|
||||
function sophia_after_dark_entry_footer() {
|
||||
// Hide tag text for pages.
|
||||
if ( 'post' === get_post_type() ) {
|
||||
/* translators: used between list items, there is a space after the comma */
|
||||
$tags_list = get_the_tag_list( '', esc_html_x( ', ', 'list item separator', 'sophia-after-dark' ) );
|
||||
if ( $tags_list ) {
|
||||
/* translators: 1: list of tags. */
|
||||
printf( '<span class="tags-links">' . esc_html__( 'Tagged: %1$s', 'sophia-after-dark' ) . '</span>', $tags_list ); // WPCS: XSS OK.
|
||||
}
|
||||
}
|
||||
|
||||
if ( 'post' === get_post_type() && ! is_single() ) {
|
||||
|
||||
$sophia_after_dark_archive_read_more = get_theme_mod( 'sophia_after_dark_archive_read_more', __( 'Discover', 'sophia-after-dark' ) );
|
||||
?>
|
||||
<a href="<?php the_permalink(); ?>" class="mt-readmore-btn"><?php echo esc_html( $sophia_after_dark_archive_read_more ); ?> <i class="fa fa-long-arrow-right"> </i></a>
|
||||
<?php
|
||||
}
|
||||
|
||||
edit_post_link(
|
||||
sprintf(
|
||||
wp_kses(
|
||||
/* translators: %s: Name of current post. Only visible to screen readers */
|
||||
__( 'Edit <span class="screen-reader-text">%s</span>', 'sophia-after-dark' ),
|
||||
array(
|
||||
'span' => array(
|
||||
'class' => array(),
|
||||
),
|
||||
)
|
||||
),
|
||||
get_the_title()
|
||||
),
|
||||
'<span class="edit-link">',
|
||||
'</span>'
|
||||
);
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
if ( ! function_exists( 'sophia_after_dark_widget_entry_footer' ) ) :
|
||||
|
||||
/**
|
||||
* Prints HTML with meta information for the categories, tags and comments.
|
||||
*/
|
||||
function sophia_after_dark_widget_entry_footer() {
|
||||
// Hide tag text for pages.
|
||||
if ( 'post' === get_post_type() ) {
|
||||
/* translators: used between list items, there is a space after the comma */
|
||||
$tags_list = get_the_tag_list( '', esc_html_x( ', ', 'list item separator', 'sophia-after-dark' ) );
|
||||
if ( $tags_list ) {
|
||||
/* translators: 1: list of tags. */
|
||||
printf( '<span class="tags-links">' . esc_html__( 'Tagged: %1$s', 'sophia-after-dark' ) . '</span>', $tags_list ); // WPCS: XSS OK.
|
||||
}
|
||||
}
|
||||
|
||||
edit_post_link(
|
||||
sprintf(
|
||||
wp_kses(
|
||||
/* translators: %s: Name of current post. Only visible to screen readers */
|
||||
__( 'Edit <span class="screen-reader-text">%s</span>', 'sophia-after-dark' ),
|
||||
array(
|
||||
'span' => array(
|
||||
'class' => array(),
|
||||
),
|
||||
)
|
||||
),
|
||||
get_the_title()
|
||||
),
|
||||
'<span class="edit-link">',
|
||||
'</span>'
|
||||
);
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_post_thumbnail' ) ) :
|
||||
|
||||
/**
|
||||
* Displays an optional post thumbnail.
|
||||
*
|
||||
* Wraps the post thumbnail in an anchor element on index views, or a div
|
||||
* element when on single views.
|
||||
*/
|
||||
function sophia_after_dark_post_thumbnail() {
|
||||
|
||||
global $wp_query;
|
||||
$current_post = $wp_query->current_post;
|
||||
|
||||
$thumbnail_size = 'post-thumbnail';
|
||||
$archive_style = get_theme_mod( 'sophia_after_dark_archive_style', 'mt-archive--masonry-style' );
|
||||
$sidebar_layout = sophia_after_dark_is_sidebar_layout();
|
||||
|
||||
if ( post_password_required() || is_attachment() || ! has_post_thumbnail() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// define image size in various section
|
||||
if ( 'mt-archive--masonry-style' === $archive_style ) {
|
||||
$thumbnail_size = 'sophia-after-dark-post-auto';
|
||||
}elseif ( 'mt-archive--block-grid-style' === $archive_style ) {
|
||||
$thumbnail_size = 'sophia-after-dark-full-width';
|
||||
}
|
||||
|
||||
if ( is_singular() ) :
|
||||
?>
|
||||
|
||||
<div class="post-thumbnail">
|
||||
<?php the_post_thumbnail( 'sophia-after-dark-full-width' ); ?>
|
||||
</div><!-- .post-thumbnail -->
|
||||
|
||||
<?php else : ?>
|
||||
|
||||
<a class="post-thumbnail" href="<?php the_permalink(); ?>" aria-hidden="true" tabindex="-1">
|
||||
<?php
|
||||
the_post_thumbnail( $thumbnail_size, array(
|
||||
'alt' => the_title_attribute( array(
|
||||
'echo' => false,
|
||||
) ),
|
||||
) );
|
||||
?>
|
||||
</a>
|
||||
|
||||
<?php
|
||||
endif; // End is_singular().
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
if ( ! function_exists( 'sophia_after_dark_article_categories_list' ) ) :
|
||||
|
||||
/**
|
||||
* Display the lists of categories at only articles
|
||||
*/
|
||||
function sophia_after_dark_article_categories_list() {
|
||||
global $post;
|
||||
$post_id = $post->ID;
|
||||
$categories_list = get_the_category( $post_id );
|
||||
if ( !empty( $categories_list ) ) {
|
||||
?>
|
||||
<div class="post-cats-list">
|
||||
<?php
|
||||
foreach ( $categories_list as $cat_data ) {
|
||||
$cat_name = $cat_data->name;
|
||||
$cat_id = $cat_data->term_id;
|
||||
$cat_link = get_category_link( $cat_id );
|
||||
?>
|
||||
<span class="category-button cbd-cat-<?php echo esc_attr( $cat_id ); ?>"><a href="<?php echo esc_url( $cat_link ); ?>"><?php echo esc_html( $cat_name ); ?></a></span>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div><!-- .post-cats-list --><?php
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
/*
|
||||
*
|
||||
* Add cat id in menu class
|
||||
*/
|
||||
function sophia_after_dark_category_nav_class( $classes, $item ) {
|
||||
if ( 'category' == $item->object ){
|
||||
$category = get_category( $item->object_id );
|
||||
$classes[] = 'cbd-cat-' . $category->term_id;
|
||||
}
|
||||
return $classes;
|
||||
}
|
||||
add_filter( 'nav_menu_css_class', 'sophia_after_dark_category_nav_class', 10, 2 );
|
3760
inc/tgm/class-tgm-plugin-activation.php
Normal file
3760
inc/tgm/class-tgm-plugin-activation.php
Normal file
File diff suppressed because it is too large
Load Diff
104
inc/tgm/mt-recommend-plugins.php
Normal file
104
inc/tgm/mt-recommend-plugins.php
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
/**
|
||||
* This file represents an example of the code that themes would use to register
|
||||
* the required plugins.
|
||||
*
|
||||
* It is expected that theme authors would copy and paste this code into their
|
||||
* functions.php file, and amend to suit.
|
||||
*
|
||||
* @see http://tgmpluginactivation.com/configuration/ for detailed documentation.
|
||||
*
|
||||
* @package TGM-Plugin-Activation
|
||||
* @subpackage Example
|
||||
* @version 2.6.1 for parent theme Sophia After Dark for publication on WordPress.org
|
||||
* @author Thomas Griffin, Gary Jones, Juliette Reinders Folmer
|
||||
* @copyright Copyright (c) 2011, Thomas Griffin
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GPL v2 or later
|
||||
* @link https://github.com/TGMPA/TGM-Plugin-Activation
|
||||
*/
|
||||
|
||||
/**
|
||||
* Include the TGM_Plugin_Activation class.
|
||||
*
|
||||
* Depending on your implementation, you may want to change the include call:
|
||||
*
|
||||
* Parent Theme:
|
||||
* require_once get_template_directory() . '/path/to/class-tgm-plugin-activation.php';
|
||||
*
|
||||
* Child Theme:
|
||||
* require_once get_stylesheet_directory() . '/path/to/class-tgm-plugin-activation.php';
|
||||
*
|
||||
* Plugin:
|
||||
* require_once dirname( __FILE__ ) . '/path/to/class-tgm-plugin-activation.php';
|
||||
*/
|
||||
require_once get_template_directory() . '/inc/tgm/class-tgm-plugin-activation.php';
|
||||
|
||||
add_action( 'tgmpa_register', 'sophia_after_dark_register_required_plugins' );
|
||||
|
||||
/**
|
||||
* Register the required plugins for this theme.
|
||||
*
|
||||
* In this example, we register five plugins:
|
||||
* - one included with the TGMPA library
|
||||
* - two from an external source, one from an arbitrary source, one from a GitHub repository
|
||||
* - two from the .org repo, where one demonstrates the use of the `is_callable` argument
|
||||
*
|
||||
* The variables passed to the `tgmpa()` function should be:
|
||||
* - an array of plugin arrays;
|
||||
* - optionally a configuration array.
|
||||
* If you are not changing anything in the configuration array, you can remove the array and remove the
|
||||
* variable from the function call: `tgmpa( $plugins );`.
|
||||
* In that case, the TGMPA default settings will be used.
|
||||
*
|
||||
* This function is hooked into `tgmpa_register`, which is fired on the WP `init` action on priority 10.
|
||||
*/
|
||||
function sophia_after_dark_register_required_plugins() {
|
||||
/*
|
||||
* Array of plugin arrays. Required keys are name and slug.
|
||||
* If the source is NOT from the .org repo, then source is also required.
|
||||
*/
|
||||
$plugins = array(
|
||||
|
||||
// recommend wp blog post layouts
|
||||
array(
|
||||
'name' => __( 'WP Blog Post Layouts', 'sophia-after-dark' ),
|
||||
'slug' => 'wp-blog-post-layouts',
|
||||
'required' => false,
|
||||
'force_activation' => false,
|
||||
'force_deactivation' => false,
|
||||
),
|
||||
|
||||
// recommend maintenance mode
|
||||
array(
|
||||
'name' => __( 'Maintenance Notice', 'sophia-after-dark' ),
|
||||
'slug' => 'maintenance-notice',
|
||||
'required' => false,
|
||||
'force_activation' => false,
|
||||
'force_deactivation' => false,
|
||||
),
|
||||
|
||||
|
||||
);
|
||||
|
||||
/*
|
||||
* Array of configuration settings. Amend each line as needed.
|
||||
*
|
||||
* TGMPA will start providing localized text strings soon. If you already have translations of our standard
|
||||
* strings available, please help us make TGMPA even better by giving us access to these translations or by
|
||||
* sending in a pull-request with .po file(s) with the translations.
|
||||
*
|
||||
* Only uncomment the strings in the config array if you want to customize the strings.
|
||||
*/
|
||||
$config = array(
|
||||
'id' => 'sophia-after-dark', // Unique ID for hashing notices for multiple instances of TGMPA.
|
||||
'default_path' => '', // Default absolute path to bundled plugins.
|
||||
'menu' => 'tgmpa-install-plugins', // Menu slug.
|
||||
'has_notices' => true, // Show admin notices or not.
|
||||
'dismissable' => true, // If false, a user cannot dismiss the nag message.
|
||||
'dismiss_msg' => '', // If 'dismissable' is false, this message will be output at top of nag.
|
||||
'is_automatic' => false, // Automatically activate plugins after installation or not.
|
||||
'message' => '', // Message to output right before the plugins table.
|
||||
);
|
||||
|
||||
tgmpa( $plugins, $config );
|
||||
}
|
609
inc/theme-settings/assets/css/settings.css
Normal file
609
inc/theme-settings/assets/css/settings.css
Normal file
@ -0,0 +1,609 @@
|
||||
/*====================================
|
||||
About Page Style
|
||||
====================================*/
|
||||
|
||||
pre.changelog {
|
||||
background-color: #f5f5f5;
|
||||
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(50%, #f5f5f5), color-stop(50%, #e6e6e6));
|
||||
background-image: -webkit-linear-gradient(#f5f5f5 50%, #e6e6e6 50%);
|
||||
background-image: linear-gradient(#f5f5f5 50%, #e6e6e6 50%);
|
||||
background-size: 50px 54.35px;
|
||||
border: 1px solid #d4d4d4;
|
||||
display: block;
|
||||
line-height: 19px;
|
||||
margin-bottom: 10px;
|
||||
overflow: visible;
|
||||
overflow-y: hidden;
|
||||
padding: 0 0 0 4px;
|
||||
font-size: 16px;
|
||||
line-height: 1.7;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
pre.changelog span {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.return-to-dashboard.sophia-after-dark {
|
||||
clear: both;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
p.sophia-after-dark-actions a.skip {
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
td {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.about-wrap {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.about-wrap table td h3 {
|
||||
margin: 15px 20px;
|
||||
padding-left: 20px;
|
||||
text-align: left;
|
||||
font-size: 16px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.mt-nav-content-wrap table th h3 {
|
||||
margin: 10px 0;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
table td {
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.wrap table td .dashicons {
|
||||
font-size: 44px;
|
||||
text-align: center;
|
||||
line-height: 20px;
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.wrap table {
|
||||
border: 1px solid #e1e1e1;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.wrap table th {
|
||||
width: 33%;
|
||||
}
|
||||
|
||||
.wrap table th:first-child {
|
||||
background-color: rgba(0, 0, 0, 0.03);
|
||||
}
|
||||
|
||||
.about-wrap table .table-feature-title>h3 {
|
||||
color: #404040;
|
||||
}
|
||||
|
||||
.mt-nav-content-wrap table th {
|
||||
background: #f3f3f3;
|
||||
}
|
||||
|
||||
tr:nth-child(2n) {
|
||||
background-color: #f8f8f8;
|
||||
}
|
||||
|
||||
.wrap table td span {
|
||||
font-size: 25px;
|
||||
}
|
||||
|
||||
.wrap table td .dashicons.dashicons-no {
|
||||
color: #CE2D2D;
|
||||
}
|
||||
|
||||
.wrap table td .dashicons.dashicons-yes {
|
||||
color: #24B37E;
|
||||
}
|
||||
|
||||
table tr .btn-wrapper {
|
||||
padding: 10px 0;
|
||||
}
|
||||
|
||||
.theme-browser {
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.theme-browser .theme .theme-actions,
|
||||
.theme-browser .theme.active .theme-actions {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
top: auto;
|
||||
-webkit-transform: none;
|
||||
transform: none;
|
||||
right: 0;
|
||||
padding: 9px 15px;
|
||||
box-shadow: inset 0 1px 0 rgba(0, 0, 0, .1);
|
||||
}
|
||||
|
||||
.author-credit .theme-version {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.author-credit .author-link a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.author-credit .author-link {
|
||||
margin: 15px 0 25px;
|
||||
color: #72777c;
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* RTL Ready
|
||||
*/
|
||||
|
||||
.rtl .about-wrap .about-text {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.rtl .theme-browser .theme .theme-name,
|
||||
.rtl .theme-browser .theme.active .theme-name {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.rtl .theme-browser .theme.active .theme-name {
|
||||
padding-left: 5%;
|
||||
}
|
||||
|
||||
.rtl .theme-browser .theme.active .theme-actions {
|
||||
left: 90%;
|
||||
}
|
||||
|
||||
.rtl .theme-browser .theme .theme-actions {
|
||||
left: 35%;
|
||||
}
|
||||
|
||||
@media (max-width: 1400px) {
|
||||
.about-wrap h1 {
|
||||
font-size: 30px;
|
||||
}
|
||||
.about-wrap .about-text {
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1200px) {
|
||||
.about-wrap .about-text {
|
||||
font-size: 14px;
|
||||
}
|
||||
.about-wrap table td h3,
|
||||
.about-wrap table td {
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 980px) {
|
||||
.about-wrap h1 {
|
||||
font-size: 25px;
|
||||
}
|
||||
.about-wrap .about-text,
|
||||
.sophia-after-dark-screenshot {
|
||||
float: none;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Welcome new css */
|
||||
|
||||
.mt-clearfix:after {
|
||||
clear: both;
|
||||
content: "";
|
||||
display: block;
|
||||
}
|
||||
|
||||
.mt-theme-info {
|
||||
background: #fff;
|
||||
padding: 10px 20px;
|
||||
}
|
||||
|
||||
.mt-welcome-screenshot {
|
||||
width: 42%;
|
||||
float: right;
|
||||
border: 1px solid #e1e1e1;
|
||||
padding: 10px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.welcome-description-wrap {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.about-wrap .mt-about-title {
|
||||
display: block;
|
||||
float: left;
|
||||
width: auto;
|
||||
font-size: 24px;
|
||||
font-weight: 700;
|
||||
margin: 0;
|
||||
text-transform: uppercase;
|
||||
vertical-align: middle;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.about-wrap .author-credit {
|
||||
display: block;
|
||||
font-size: 13px;
|
||||
float: right;
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
.author-credit .author-link {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.about-wrap .about-text {
|
||||
font-size: 14px;
|
||||
margin: 10px 0 0;
|
||||
}
|
||||
|
||||
.about-wrap .mt-nav-tab-content-wrapper .nav-tab-wrapper a {
|
||||
display: block;
|
||||
float: none;
|
||||
}
|
||||
|
||||
.mt-nav-tab-content-wrapper {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.nav-tab-wrapper {
|
||||
width: 18%;
|
||||
padding: 0;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.mt-nav-content-wrap {
|
||||
width: 82%;
|
||||
background: #fff;
|
||||
padding: 0px 40px 30px;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
min-height: 500px;
|
||||
}
|
||||
|
||||
.about-wrap .mt-nav-tab-content-wrapper .nav-tab-wrapper a {
|
||||
display: block;
|
||||
float: none;
|
||||
background: #fff;
|
||||
border: none;
|
||||
padding: 20px 20px;
|
||||
border-top: 1px solid #e1e1e1;
|
||||
border-left: 5px solid transparent;
|
||||
margin-left: 0;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.about-wrap .mt-nav-tab-content-wrapper .nav-tab-wrapper a:first-child {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.about-wrap .mt-nav-tab-content-wrapper .nav-tab-wrapper a.nav-tab.nav-tab-active,
|
||||
.about-wrap .mt-nav-tab-content-wrapper .nav-tab-wrapper a:hover {
|
||||
border-left: 5px solid #0071A1;
|
||||
color: #0071A1;
|
||||
}
|
||||
|
||||
.about-wrap .mt-nav-tab-content-wrapper .nav-tab-wrapper a .dashicons {
|
||||
font-size: 26px;
|
||||
margin: 0 15px 0px 0;
|
||||
vertical-align: top;
|
||||
position: relative;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.about-wrap .theme-features-wrap .two-col {
|
||||
margin-left: -3%;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.about-wrap .theme-features-wrap .two-col .col {
|
||||
border: 1px solid #e1e1e1;
|
||||
width: 47%;
|
||||
margin-left: 3%;
|
||||
padding: 20px;
|
||||
margin-right: 0;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.about-wrap .theme-features-wrap .two-col .col h3 {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.mt-theme-demos .mt-each-demo {
|
||||
width: 30.33%;
|
||||
margin-left: 3%;
|
||||
margin-top: 3%;
|
||||
margin-right: 0;
|
||||
box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.mt-demo-pro::after {
|
||||
content: "Premium";
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 0px;
|
||||
background: #B71C1C;
|
||||
width: 90px;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding: 8px 0;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.mt-theme-demos .themes {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-left: -3%;
|
||||
}
|
||||
|
||||
.theme-id-container h2 {
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
height: 18px;
|
||||
margin: 0;
|
||||
padding: 15px;
|
||||
box-shadow: inset 0 1px 0 rgba(0, 0, 0, .1);
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
background: #F6F6F6;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.theme-id-container .theme-actions {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
top: auto;
|
||||
-webkit-transform: none;
|
||||
transform: none;
|
||||
right: 0;
|
||||
padding: 9px 15px;
|
||||
box-shadow: inset 0 1px 0 rgba(0, 0, 0, .1);
|
||||
}
|
||||
|
||||
.theme-id-container .theme-actions a {
|
||||
display: inline-block;
|
||||
margin: 0 5px;
|
||||
float: none;
|
||||
}
|
||||
|
||||
table tr .btn-wrapper .button {
|
||||
font-size: 16px;
|
||||
padding: 5px 50px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.about-wrap .mt-upgrader-title {
|
||||
margin: 0 0 10px;
|
||||
font-size: 22px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.mt-upgrader-pro {
|
||||
background: #fff;
|
||||
padding: 20px;
|
||||
margin-top: 30px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.mt-upgrade-title-wrap {
|
||||
width: 85%;
|
||||
}
|
||||
|
||||
.mt-upgrader-btn {
|
||||
width: 15%;
|
||||
}
|
||||
|
||||
.wp-core-ui .mt-upgrader-btn a {
|
||||
font-size: 18px;
|
||||
width: 100%;
|
||||
display: block;
|
||||
text-align: center;
|
||||
padding: 10px 0;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.welcome-panel h4 {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.mt-popup-inner-wrap {
|
||||
padding: 4px 30px;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.mt-dashicons-no::before,
|
||||
.mt-dashicons-yes::before {
|
||||
display: inline-block;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
content: '';
|
||||
background-image: url(../images/cross.png);
|
||||
background-size: 30px auto;
|
||||
position: relative;
|
||||
top: -6px;
|
||||
}
|
||||
|
||||
.mt-dashicons-yes::before {
|
||||
background-image: url(../images/tick.png);
|
||||
}
|
||||
|
||||
.theme-features-wrap.welcome-panel {
|
||||
border: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.about-wrap .about-description {
|
||||
margin-top: 0;
|
||||
font-weight: 700;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.about-wrap .theme-features-wrap .two-col .col li {
|
||||
display: inline-block;
|
||||
width: 48%;
|
||||
vertical-align: top;
|
||||
margin: 8px 0;
|
||||
}
|
||||
|
||||
.about-wrap .changelog {
|
||||
background-size: 0;
|
||||
background: #fafafa;
|
||||
border: none;
|
||||
padding: 20px 20px;
|
||||
}
|
||||
|
||||
a.notice-dismiss {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.mt-get-started.updating-message::before {
|
||||
margin-top: 12px !important;
|
||||
}
|
||||
|
||||
.configure-msg {
|
||||
font-weight: 700;
|
||||
font-size: 20px;
|
||||
margin-top: 80px;
|
||||
text-align: center;
|
||||
display: block;
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
||||
.theme-features-wrap.welcome-panel,
|
||||
.theme-features-wrap.welcome-panel::before {
|
||||
background: none;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
@media (max-width: 1400px) {
|
||||
.about-wrap .theme-features-wrap .two-col .col {
|
||||
border: 1px solid #e1e1e1;
|
||||
width: 47%;
|
||||
}
|
||||
.nav-tab-wrapper {
|
||||
width: 20%;
|
||||
}
|
||||
.mt-nav-content-wrap {
|
||||
width: 80%;
|
||||
}
|
||||
.mt-theme-demos .mt-each-demo {
|
||||
width: 47%;
|
||||
}
|
||||
.mt-upgrade-title-wrap {
|
||||
width: 75%;
|
||||
}
|
||||
.mt-upgrader-btn {
|
||||
width: 25%;
|
||||
}
|
||||
.about-wrap .theme-features-wrap .two-col .col li {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1200px) {
|
||||
.mt-upgrade-title-wrap {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
.mt-upgrader-btn {
|
||||
margin: 20px auto 0;
|
||||
width: auto;
|
||||
}
|
||||
.wp-core-ui .mt-upgrader-btn a {
|
||||
padding: 8px 20px;
|
||||
}
|
||||
.theme-id-container {
|
||||
position: relative;
|
||||
padding: 10px 0px;
|
||||
background: #F6F6F6;
|
||||
}
|
||||
.theme-id-container h2 {
|
||||
display: block;
|
||||
text-align: center;
|
||||
padding: 10px 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
.theme-id-container .theme-actions {
|
||||
position: static;
|
||||
text-align: center;
|
||||
background: #F6F6F6;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.mt-theme-demos .mt-each-demo {
|
||||
width: 100%;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.nav-tab-wrapper {
|
||||
width: 100%;
|
||||
}
|
||||
.mt-nav-content-wrap {
|
||||
width: 100%;
|
||||
padding: 0 30px;
|
||||
}
|
||||
.about-wrap .mt-nav-tab-content-wrapper .nav-tab-wrapper a {
|
||||
display: inline-block;
|
||||
margin-right: -4px;
|
||||
font-size: 14px;
|
||||
padding: 12px 10px;
|
||||
border-top: none;
|
||||
border-left: none;
|
||||
border-bottom: 5px solid transparent;
|
||||
}
|
||||
.about-wrap .mt-nav-tab-content-wrapper .nav-tab-wrapper a.nav-tab.nav-tab-active,
|
||||
.about-wrap .mt-nav-tab-content-wrapper .nav-tab-wrapper a:hover {
|
||||
border-left: none;
|
||||
border-bottom: 5px solid #0071A1;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.about-wrap .mt-nav-tab-content-wrapper .nav-tab-wrapper a {
|
||||
font: 0/0 a;
|
||||
}
|
||||
.mt-each-demo.theme:focus .more-details,
|
||||
.mt-each-demo.theme:hover .more-details,
|
||||
.mt-each-demo.theme:not(.active):focus .theme-actions,
|
||||
.mt-each-demo.theme:not(.active):hover .theme-actions {
|
||||
display: block;
|
||||
}
|
||||
.about-wrap .mt-nav-tab-content-wrapper .theme-features-wrap .two-col .col {
|
||||
width: 100%;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.wp-core-ui .mt-upgrader-btn a {
|
||||
padding: 0 20px;
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
42
inc/theme-settings/assets/css/theme-review-notice.css
Normal file
42
inc/theme-settings/assets/css/theme-review-notice.css
Normal file
@ -0,0 +1,42 @@
|
||||
.theme-review-notice {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.theme-review-notice .links {
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
.theme-review-notice .links a {
|
||||
height: auto;
|
||||
padding: 3px 15px;
|
||||
margin-left: 10px;
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
||||
.theme-review-notice .links a .dashicons {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.theme-review-notice .links a.button-primary {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.theme-review-notice a.notice-dismiss {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#mt-theme-message {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.sophia-after-dark-message-close .notice-dismiss {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
a.notice-dismiss {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.mt-get-started.updating-message::before {
|
||||
margin-top: 12px !important;
|
||||
}
|
BIN
inc/theme-settings/assets/images/cross.png
Normal file
BIN
inc/theme-settings/assets/images/cross.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.3 KiB |
BIN
inc/theme-settings/assets/images/tick.png
Normal file
BIN
inc/theme-settings/assets/images/tick.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.7 KiB |
53
inc/theme-settings/assets/js/settings.js
Normal file
53
inc/theme-settings/assets/js/settings.js
Normal file
@ -0,0 +1,53 @@
|
||||
/**
|
||||
* Handles event for theme about page.
|
||||
*/
|
||||
|
||||
jQuery(document).ready(function($) {
|
||||
var WpAjaxurl = mtaboutObject.ajax_url;
|
||||
var _wpnonce = mtaboutObject._wpnonce;
|
||||
var action = mtaboutObject.action;
|
||||
|
||||
/**
|
||||
* Popup on click demo import if mysterythemes demo importer plugin is not activated.
|
||||
*/
|
||||
$( '.mtdi-demo-import' ).addClass( 'disabled' );
|
||||
|
||||
switch( action ) {
|
||||
case 'activate' : $( '.mt-activate-demo-import-plugin' ).on( 'click', function() {
|
||||
var _this = $( this );
|
||||
sophia_after_dark_do_plugin( 'activate_demo_importer_plugin', _this );
|
||||
});
|
||||
break;
|
||||
case 'install' : $( '.mt-install-demo-import-plugin' ).on( 'click', function() {
|
||||
var _this = $( this );
|
||||
sophia_after_dark_do_plugin( 'install_demo_importer_plugin', _this );
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
sophia_after_dark_do_plugin = function ( ajax_action, _this ) {
|
||||
$.ajax({
|
||||
method : "POST",
|
||||
url : WpAjaxurl,
|
||||
data : ({
|
||||
'action' : ajax_action,
|
||||
'_wpnonce' : _wpnonce
|
||||
}),
|
||||
beforeSend: function() {
|
||||
var loadingTxt = _this.data( 'process' );
|
||||
_this.addClass( 'updating-message' ).text( loadingTxt );
|
||||
},
|
||||
success: function( response ) {
|
||||
if( response.success ) {
|
||||
var loadedTxt = _this.data( 'done' );
|
||||
_this.removeClass( 'updating-message' ).text( loadedTxt );
|
||||
console.log( response.data.message );
|
||||
} else {
|
||||
console.log( response.data.message );
|
||||
}
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
});
|
53
inc/theme-settings/assets/js/theme-review-notice.js
Normal file
53
inc/theme-settings/assets/js/theme-review-notice.js
Normal file
@ -0,0 +1,53 @@
|
||||
jQuery(document).ready(function($) {
|
||||
"use strict";
|
||||
|
||||
var WpAjaxurl = mtaboutObject.ajax_url;
|
||||
var _wpnonce = mtaboutObject._wpnonce;
|
||||
var action = mtaboutObject.action;
|
||||
|
||||
switch( action ) {
|
||||
case 'activate' :
|
||||
$( '#mt-theme-message .mt-get-started' ).on( 'click', function() {
|
||||
var _this = $( this );
|
||||
sophia_after_dark_do_plugin( 'activate_demo_importer_plugin', _this );
|
||||
});
|
||||
break;
|
||||
case 'install' :
|
||||
$( '#mt-theme-message .mt-get-started' ).on( 'click', function() {
|
||||
var _this = $( this );
|
||||
sophia_after_dark_do_plugin( 'install_demo_importer_plugin', _this );
|
||||
});
|
||||
break;
|
||||
case 'redirect' :
|
||||
$( '#mt-theme-message .mt-get-started' ).on( 'click', function() {
|
||||
var _this = $( this );
|
||||
location.href = _this.data( 'redirect' );
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
function sophia_after_dark_do_plugin( ajax_action, _this ) {
|
||||
$.ajax({
|
||||
method : "POST",
|
||||
url : WpAjaxurl,
|
||||
data : ({
|
||||
'action' : ajax_action,
|
||||
'_wpnonce' : _wpnonce
|
||||
}),
|
||||
beforeSend: function() {
|
||||
var loadingTxt = _this.data( 'process' );
|
||||
_this.addClass( 'updating-message' ).text( loadingTxt );
|
||||
},
|
||||
success: function( response ) {
|
||||
if( response.success ) {
|
||||
var loadedTxt = _this.data( 'done' );
|
||||
_this.removeClass( 'updating-message' ).text( loadedTxt );
|
||||
console.log( response.data.message );
|
||||
} else {
|
||||
console.log( response.data.message );
|
||||
}
|
||||
location.href = _this.data( 'redirect' );
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
880
inc/theme-settings/mt-theme-settings.php
Normal file
880
inc/theme-settings/mt-theme-settings.php
Normal file
@ -0,0 +1,880 @@
|
||||
<?php
|
||||
/**
|
||||
* Theme settings page.
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
*
|
||||
* @since 1.0.7
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( ! class_exists( 'sophia_after_dark_Settings' ) ) :
|
||||
|
||||
class sophia_after_dark_Settings {
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
add_action( 'admin_menu', array( $this, 'sophia_after_dark_admin_menu' ) );
|
||||
add_action( 'wp_loaded', array( __CLASS__, 'sophia_after_dark_hide_notices' ) );
|
||||
add_action( 'wp_loaded', array( $this, 'sophia_after_dark_admin_notice' ) );
|
||||
add_action( 'admin_enqueue_scripts', array( $this, 'about_theme_styles' ) );
|
||||
add_action( 'admin_enqueue_scripts', array( $this, 'about_theme_scripts' ) );
|
||||
add_filter( 'admin_footer_text', array( $this, 'sophia_after_dark_admin_footer_text' ) );
|
||||
|
||||
//about theme review notice
|
||||
add_action( 'after_setup_theme', array( $this, 'sophia_after_dark_theme_rating_notice' ) );
|
||||
add_action( 'switch_theme', array( $this, 'sophia_after_dark_theme_rating_notice_data_remove' ) );
|
||||
|
||||
add_action( 'wp_ajax_activate_demo_importer_plugin', array( $this, 'activate_demo_importer_plugin' ) );
|
||||
add_action( 'wp_ajax_install_demo_importer_plugin', array( $this, 'install_demo_importer_plugin' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Add admin menu.
|
||||
*/
|
||||
public function sophia_after_dark_admin_menu() {
|
||||
$theme = wp_get_theme( get_template() );
|
||||
|
||||
$page = add_theme_page( $theme->display( 'Name' ).' '.esc_html__( 'Settings', 'sophia-after-dark' ), $theme->display( 'Name' ).' '.' '.esc_html__( 'Settings', 'sophia-after-dark' ), 'activate_plugins', 'sophia-after-dark-settings', array( $this, 'get_started_screen' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Enqueue styles.
|
||||
*/
|
||||
public function about_theme_styles( $hook ) {
|
||||
global $sophia_after_dark_theme_version;
|
||||
wp_enqueue_style( 'mt-theme-review-notice', get_template_directory_uri() . '/inc/theme-settings/assets/css/theme-review-notice.css', array(), esc_attr( $sophia_after_dark_theme_version ) );
|
||||
|
||||
if ( 'appearance_page_sophia-after-dark-settings' != $hook && 'themes.php' != $hook ) {
|
||||
return;
|
||||
}
|
||||
|
||||
wp_enqueue_style( 'mt-theme-settings-style', get_template_directory_uri() . '/inc/theme-settings/assets/css/settings.css', array(), $sophia_after_dark_theme_version );
|
||||
}
|
||||
|
||||
/**
|
||||
* Enqueue scripts.
|
||||
*/
|
||||
public function about_theme_scripts( $hook ) {
|
||||
global $sophia_after_dark_theme_version;
|
||||
|
||||
$theme_notice_option = get_option( 'sophia_after_dark_admin_notice_welcome' );
|
||||
if ( $theme_notice_option ) {
|
||||
wp_enqueue_script( 'mt-theme-review-notice', get_template_directory_uri() . '/inc/theme-settings/assets/js/theme-review-notice.js', array( 'jquery' ), esc_attr( $sophia_after_dark_theme_version ) );
|
||||
|
||||
$demo_importer_plugin = WP_PLUGIN_DIR . '/mysterythemes-demo-importer/mysterythemes-demo-importer.php';
|
||||
if ( file_exists( $demo_importer_plugin ) && !is_plugin_active( 'mysterythemes-demo-importer/mysterythemes-demo-importer.php' ) ) {
|
||||
$action = 'activate';
|
||||
} elseif ( !file_exists( $demo_importer_plugin ) ) {
|
||||
$action = 'install';
|
||||
} else {
|
||||
$action = 'redirect';
|
||||
}
|
||||
|
||||
wp_localize_script( 'mt-theme-review-notice', 'mtaboutObject', array(
|
||||
'ajax_url' => esc_url( admin_url( 'admin-ajax.php' ) ),
|
||||
'_wpnonce' => wp_create_nonce( 'sophia_after_dark_admin_plugin_install_nonce' ),
|
||||
'action' => esc_html( $action )
|
||||
));
|
||||
}
|
||||
|
||||
if ( 'appearance_page_sophia-after-dark-settings' != $hook ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$activated_plugins = apply_filters( 'sophia_after_dark_active_plugins', get_option('active_plugins') );
|
||||
$demo_import_plugin = in_array( 'mysterythemes-demo-importer/mysterythemes-demo-importer.php', $activated_plugins );
|
||||
if ( $demo_import_plugin ) {
|
||||
return;
|
||||
}
|
||||
|
||||
wp_enqueue_script( 'mt-theme-settings-script', get_template_directory_uri() . '/inc/theme-settings/assets/js/settings.js', array( 'jquery' ), esc_attr( $sophia_after_dark_theme_version ) );
|
||||
|
||||
$demo_importer_plugin = WP_PLUGIN_DIR . '/mysterythemes-demo-importer/mysterythemes-demo-importer.php';
|
||||
if ( file_exists( $demo_importer_plugin ) && !is_plugin_active( 'mysterythemes-demo-importer/mysterythemes-demo-importer.php' ) ) {
|
||||
$action = 'activate';
|
||||
} else {
|
||||
$action = 'install';
|
||||
}
|
||||
|
||||
wp_localize_script( 'mt-theme-settings-script', 'mtaboutObject', array(
|
||||
'ajax_url' => esc_url( admin_url( 'admin-ajax.php' ) ),
|
||||
'_wpnonce' => wp_create_nonce( 'sophia_after_dark_admin_plugin_install_nonce' ),
|
||||
'action' => esc_html( $action )
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Add admin notice.
|
||||
*/
|
||||
public function sophia_after_dark_admin_notice() {
|
||||
|
||||
if ( isset( $_GET['activated'] ) ) {
|
||||
update_option( 'sophia_after_dark_admin_notice_welcome', true );
|
||||
}
|
||||
|
||||
$theme_notice_option = get_option( 'sophia_after_dark_admin_notice_welcome' );
|
||||
// Let's bail on theme activation.
|
||||
if ( $theme_notice_option ) {
|
||||
add_action( 'admin_notices', array( $this, 'welcome_notice' ) );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide a notice if the GET variable is set.
|
||||
*/
|
||||
public static function sophia_after_dark_hide_notices() {
|
||||
if ( isset( $_GET['sophia-after-dark-hide-notice'] ) && isset( $_GET['_sophia_after_dark_notice_nonce'] ) ) {
|
||||
if ( ! wp_verify_nonce( $_GET['_sophia_after_dark_notice_nonce'], 'sophia_after_dark_hide_notices_nonce' ) ) {
|
||||
wp_die( esc_html__( 'Action failed. Please refresh the page and retry.', 'sophia-after-dark' ) );
|
||||
}
|
||||
|
||||
if ( ! current_user_can( 'manage_options' ) ) {
|
||||
wp_die( esc_html__( 'Cheat in ’ huh?', 'sophia-after-dark' ) );
|
||||
}
|
||||
|
||||
$hide_notice = sanitize_text_field( $_GET['sophia-after-dark-hide-notice'] );
|
||||
update_option( 'sophia_after_dark_admin_notice_' . $hide_notice, false );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Show welcome notice.
|
||||
*/
|
||||
public function welcome_notice() {
|
||||
$theme = wp_get_theme( get_template() );
|
||||
$theme_name = $theme->get( 'Name' );
|
||||
?>
|
||||
<div id="mt-theme-message" class="updated notice sophia-after-dark-message">
|
||||
<a class="sophia-after-dark-message-close notice-dismiss" href="<?php echo esc_url( wp_nonce_url( remove_query_arg( array( 'activated' ), add_query_arg( 'sophia-after-dark-hide-notice', 'welcome' ) ), 'sophia_after_dark_hide_notices_nonce', '_sophia_after_dark_notice_nonce' ) ); ?>">
|
||||
<span class="screen-reader-text"><?php esc_html_e( 'Dismiss this notice.', 'sophia-after-dark' ); ?>
|
||||
</a>
|
||||
<h2 class="welcome-title"><?php printf( esc_html__( 'Welcome to %s', 'sophia-after-dark' ), $theme_name ); ?></h2>
|
||||
<p>
|
||||
<?php printf( esc_html__( 'Welcome! Thank you for choosing %1$s ! To fully take advantage of the best our theme can offer please make sure you visit our %2$s theme settings page %3$s.', 'sophia-after-dark' ), '<strong>'. esc_html( $theme_name ).'</strong>', '<a href="' . esc_url( admin_url( 'themes.php?page=sophia-after-dark-settings' ) ) . '">', '</a>' ); ?>
|
||||
</p>
|
||||
<p>
|
||||
<?php printf( esc_html__( 'Clicking get started will process to installation of %1$s Mystery Themes Demo Importer %2$s Plugin in your dashboard. After success it will redirect to the theme settings page.', 'sophia-after-dark' ), '<strong>', '</strong>' ); ?>
|
||||
</p>
|
||||
<div class="submit">
|
||||
<button class="mt-get-started button button-primary button-hero" data-done="<?php esc_attr_e( 'Done!', 'sophia-after-dark' ); ?>" data-process="<?php esc_attr_e( 'Processing', 'sophia-after-dark' ); ?>" data-redirect="<?php echo esc_url( wp_nonce_url( add_query_arg( 'sophia-after-dark-hide-notice', 'welcome', admin_url( 'themes.php' ).'?page=sophia-after-dark-settings&tab=demos' ) , 'sophia_after_dark_hide_notices_nonce', '_sophia_after_dark_notice_nonce' ) ); ?>">
|
||||
<?php printf( esc_html__( 'Get started with %1$s', 'sophia-after-dark' ), esc_html( $theme_name ) ); ?>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div><!-- #mt-theme-message -->
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Intro text/links shown to all about pages.
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
private function intro() {
|
||||
global $sophia_after_dark_theme_version;
|
||||
$theme = wp_get_theme( get_template() );
|
||||
$theme_name = $theme->get( 'Name' );
|
||||
$author_uri = $theme->get( 'AuthorURI' );
|
||||
$author_name = $theme->get( 'Author' );
|
||||
|
||||
// Drop minor version if 0
|
||||
?>
|
||||
<div class="sophia-after-dark-theme-info mt-theme-info mt-clearfix">
|
||||
<h1 class="mt-about-title"> <?php echo esc_html( $theme_name ); ?> </h1>
|
||||
<div class="author-credit">
|
||||
<span class="theme-version"><?php printf( esc_html__( 'Version: %1$s', 'sophia-after-dark' ), $sophia_after_dark_theme_version ); ?></span>
|
||||
<span class="author-link"><?php printf( wp_kses_post( 'By <a href="%1$s" target="_blank">%2$s</a>', 'sophia-after-dark' ), $author_uri, $author_name ); ?></span>
|
||||
</div>
|
||||
</div><!-- .sophia-after-dark-theme-info -->
|
||||
|
||||
<div class="mt-upgrader-pro">
|
||||
<div class="mt-upgrade-title-wrap">
|
||||
<h3 class="mt-upgrader-title"><?php esc_html_e( 'Upgrade to Premium Version', 'sophia-after-dark' ); ?></h3>
|
||||
<div class="mt-upgrader-text"><?php esc_html_e( 'Upgrade to pro version for additional features and better supports.', 'sophia-after-dark' ); ?></div>
|
||||
</div>
|
||||
<div class="mt-upgrader-btn"> <a href="<?php echo esc_url( 'https://mysterythemes.com/wp-themes/color-blog-pro/' ); ?>" target="_blank" class="button button-primary"><?php esc_html_e( 'Unlock Features With Pro', 'sophia-after-dark' ); ?></a> </div>
|
||||
</div><!-- .mt-upgrader-pro -->
|
||||
|
||||
<div class="mt-nav-tab-content-wrapper">
|
||||
<div class="nav-tab-wrapper">
|
||||
|
||||
<a class="nav-tab <?php if ( empty( $_GET['tab'] ) && $_GET['page'] == 'sophia-after-dark-settings' ) echo 'nav-tab-active'; ?>" href="<?php echo esc_url( admin_url( add_query_arg( array( 'page' => 'sophia-after-dark-settings' ), 'themes.php' ) ) ); ?>">
|
||||
<span class="dashicons dashicons-admin-appearance"></span> <?php esc_html_e( 'Get Started', 'sophia-after-dark' ); ?>
|
||||
</a>
|
||||
|
||||
<a class="nav-tab <?php if ( isset( $_GET['tab'] ) && $_GET['tab'] == 'demos' ) echo 'nav-tab-active'; ?>" href="<?php echo esc_url( admin_url( add_query_arg( array( 'page' => 'sophia-after-dark-settings', 'tab' => 'demos' ), 'themes.php' ) ) ); ?>">
|
||||
<span class="dashicons dashicons-download"></span> <?php esc_html_e( 'Demos', 'sophia-after-dark' ); ?>
|
||||
</a>
|
||||
|
||||
<a class="nav-tab <?php if ( isset( $_GET['tab'] ) && $_GET['tab'] == 'free_vs_pro' ) echo 'nav-tab-active'; ?>" href="<?php echo esc_url( admin_url( add_query_arg( array( 'page' => 'sophia-after-dark-settings', 'tab' => 'free_vs_pro' ), 'themes.php' ) ) ); ?>">
|
||||
<span class="dashicons dashicons-dashboard"></span> <?php esc_html_e( 'Free Vs Pro', 'sophia-after-dark' ); ?>
|
||||
</a>
|
||||
|
||||
<a class="nav-tab <?php if ( isset( $_GET['tab'] ) && $_GET['tab'] == 'changelog' ) echo 'nav-tab-active'; ?>" href="<?php echo esc_url( admin_url( add_query_arg( array( 'page' => 'sophia-after-dark-settings', 'tab' => 'changelog' ), 'themes.php' ) ) ); ?>">
|
||||
<span class="dashicons dashicons-flag"></span> <?php esc_html_e( 'Changelog', 'sophia-after-dark' ); ?>
|
||||
</a>
|
||||
</div><!-- .nav-tab-wrapper -->
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Get started screen page.
|
||||
*/
|
||||
public function get_started_screen() {
|
||||
$current_tab = empty( $_GET['tab'] ) ? 'about' : sanitize_title( $_GET['tab'] );
|
||||
|
||||
// Look for a {$current_tab}_screen method.
|
||||
if ( is_callable( array( $this, $current_tab . '_screen' ) ) ) {
|
||||
return $this->{ $current_tab . '_screen' }();
|
||||
}
|
||||
|
||||
// Fallback to about screen.
|
||||
return $this->about_screen();
|
||||
}
|
||||
|
||||
/**
|
||||
* Output the about screen.
|
||||
*/
|
||||
public function about_screen() {
|
||||
|
||||
$theme = wp_get_theme( get_template() );
|
||||
$theme_name = $theme->template;
|
||||
|
||||
$doc_url = 'https://docs.mysterythemes.com/color-blog';
|
||||
$pro_theme_url = 'https://mysterythemes.com/wp-themes/color-blog-pro';
|
||||
$support_url = 'https://wordpress.org/support/theme/'. $theme_name;
|
||||
$review_url = 'https://wordpress.org/support/theme/'. $theme_name .'/reviews/?filter=5#new-post';
|
||||
?>
|
||||
<div class="wrap about-wrap">
|
||||
|
||||
<?php $this->intro(); ?>
|
||||
<div class="mt-nav-content-wrap">
|
||||
<div class="theme-features-wrap welcome-panel">
|
||||
<h4><?php esc_html_e( 'Here are some useful links for you to get started', 'sophia-after-dark' ); ?></h4>
|
||||
<div class="under-the-hood two-col">
|
||||
<div class="col">
|
||||
<h3><?php esc_html_e( 'Next Steps', 'sophia-after-dark' ); ?></h3>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="<?php echo esc_url( admin_url( 'customize.php' ).'?autofocus[section]=title_tagline' ); ?>" target="_blank" class="welcome-icon dashicons-visibility"><?php esc_html_e( 'Set site logo', 'sophia-after-dark' ); ?></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="<?php echo esc_url( admin_url( 'customize.php' ).'?autofocus[section]=sophia_after_dark_section_site' ); ?>" target="_blank" class="welcome-icon dashicons-admin-page"><?php esc_html_e( 'Setup site layout', 'sophia-after-dark' ); ?></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="<?php echo esc_url( admin_url( 'customize.php' ).'?autofocus[panel]=sophia_after_dark_header_panel' ); ?>" target="_blank" class="welcome-icon dashicons-editor-kitchensink"><?php esc_html_e( 'Manage header section', 'sophia-after-dark' ); ?></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="<?php echo esc_url( admin_url( 'customize.php' ).'?autofocus[section]=sophia_after_dark_section_post_settings' ); ?>" target="_blank" class="welcome-icon dashicons-text-page"><?php esc_html_e( 'Single page sidebar layouts', 'sophia-after-dark' ); ?></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="<?php echo esc_url( admin_url( 'customize.php' ).'?autofocus[section]=sophia_after_dark_section_social_icons' ); ?>" target="_blank" class="welcome-icon dashicons-networking"><?php esc_html_e( 'Manage Social Icons', 'sophia-after-dark' ); ?></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="<?php echo esc_url( admin_url( 'customize.php' ).'?autofocus[section]=sophia_after_dark_section_footer_widget_area' ); ?>" target="_blank" class="welcome-icon dashicons-archive"><?php esc_html_e( 'Manage footer widget area', 'sophia-after-dark' ); ?></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="<?php echo esc_url( admin_url( 'nav-menus.php' ) ); ?>" target="_blank" class="welcome-icon welcome-menus"><?php esc_html_e( 'Manage menus', 'sophia-after-dark' ); ?></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="<?php echo esc_url( admin_url( 'widgets.php' ) ); ?>" target="_blank" class="welcome-icon welcome-widgets"><?php esc_html_e( 'Manage widgets', 'sophia-after-dark' ); ?></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
<h3><?php esc_html_e( 'More Actions', 'sophia-after-dark' ); ?></h3>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="<?php echo esc_url( $doc_url ); ?>" target="_blank" class="welcome-icon dashicons-media-text"><?php esc_html_e( 'Documentation', 'sophia-after-dark' ); ?></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="<?php echo esc_url( $pro_theme_url ); ?>" target="_blank" class="welcome-icon dashicons-migrate"><?php esc_html_e( 'Premium version', 'sophia-after-dark' ); ?></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="<?php echo esc_url( $support_url ); ?>" target="_blank" class="welcome-icon dashicons-businesswoman"><?php esc_html_e( 'Need theme support?', 'sophia-after-dark' ); ?></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="<?php echo esc_url( $review_url ); ?>" target="_blank" class="welcome-icon dashicons-thumbs-up"><?php esc_html_e( 'Review theme', 'sophia-after-dark' ); ?></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="<?php echo esc_url( 'https://wpallresources.com/' ); ?>" target="_blank" class="welcome-icon dashicons-admin-users"><?php esc_html_e( 'WP Tutorials', 'sophia-after-dark' ); ?></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- .theme-features-wrap -->
|
||||
|
||||
<div class="return-to-dashboard sophia-after-dark">
|
||||
<?php if ( current_user_can( 'update_core' ) && isset( $_GET['updated'] ) ) : ?>
|
||||
<a href="<?php echo esc_url( self_admin_url( 'update-core.php' ) ); ?>">
|
||||
<?php is_multisite() ? esc_html_e( 'Return to Updates', 'sophia-after-dark' ) : esc_html_e( 'Return to Dashboard → Updates', 'sophia-after-dark' ); ?>
|
||||
</a> |
|
||||
<?php endif; ?>
|
||||
<a href="<?php echo esc_url( self_admin_url() ); ?>"><?php is_blog_admin() ? esc_html_e( 'Go to Dashboard → Home', 'sophia-after-dark' ) : esc_html_e( 'Go to Dashboard', 'sophia-after-dark' ); ?></a>
|
||||
</div><!-- .return-to-dashboard -->
|
||||
</div><!-- .mt-nav-content-wrap -->
|
||||
</div><!-- .mt-nav-tab-content-wrapper -->
|
||||
</div><!-- .about-wrap -->
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Output the more themes screen
|
||||
*/
|
||||
public function demos_screen() {
|
||||
$activated_theme = get_template();
|
||||
$demodata = get_transient( 'sophia_after_dark_demo_packages' );
|
||||
|
||||
if ( empty( $demodata ) || $demodata == false ) {
|
||||
$demodata = get_transient( 'mtdi_theme_packages' );
|
||||
if ( $demodata ) {
|
||||
set_transient( 'sophia_after_dark_demo_packages', $demodata, WEEK_IN_SECONDS );
|
||||
}
|
||||
}
|
||||
|
||||
$activated_demo_check = get_option( 'mtdi_activated_check' );
|
||||
?>
|
||||
<div class="wrap about-wrap">
|
||||
|
||||
<?php $this->intro(); ?>
|
||||
<div class="mt-nav-content-wrap">
|
||||
<div class="mt-theme-demos rendered">
|
||||
<?php $this->install_demo_import_plugin_popup(); ?>
|
||||
<div class="demos wp-clearfix">
|
||||
<?php
|
||||
if ( isset( $demodata ) && empty( $demodata ) ) {
|
||||
?>
|
||||
<span class="configure-msg"><?php esc_html_e( 'No demos are configured for this theme, please contact the theme author', 'sophia-after-dark' ); ?></span>
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
<div class="mt-demo-wrapper mtdi_gl js-ocdi-gl">
|
||||
<div class="themes wp-clearfix">
|
||||
<?php
|
||||
foreach ( $demodata as $value ) {
|
||||
$theme_name = $value['name'];
|
||||
$theme_slug = $value['theme_slug'];
|
||||
$preview_screenshot = $value['preview_screen'];
|
||||
$demourl = $value['preview_url'];
|
||||
if ( ( strpos( $activated_theme, 'pro' ) !== false && strpos( $theme_slug, 'pro' ) !== false ) || ( strpos( $activated_theme, 'pro' ) == false ) ) {
|
||||
?>
|
||||
<div class="mt-each-demo<?php if ( strpos( $activated_theme, 'pro' ) == false && strpos( $theme_slug, 'pro' ) !== false ) { echo ' mt-demo-pro'; } ?> theme mtdi_gl-item js-ocdi-gl-item" data-categories="ltrdemo" data-name="<?php echo esc_attr ( $theme_slug ); ?>" style="display: block;">
|
||||
<div class="mtdi-preview-screenshot mtdi_gl-item-image-container">
|
||||
<a href="<?php echo esc_url ( $demourl ); ?>" target="_blank">
|
||||
<img class="mtdi_gl-item-image" src="<?php echo esc_url ( $preview_screenshot ); ?>" />
|
||||
</a>
|
||||
</div><!-- .mtdi-preview-screenshot -->
|
||||
<div class="theme-id-container">
|
||||
<h2 class="mtdi-theme-name theme-name" id="nokri-name"><?php echo esc_html ( $theme_name ); ?></h2>
|
||||
<div class="mtdi-theme-actions theme-actions">
|
||||
<?php
|
||||
if ( $activated_demo_check != '' && $activated_demo_check == $theme_slug ) {
|
||||
?>
|
||||
<a class="button disabled button-primary hide-if-no-js" href="javascript:void(0);" data-name="<?php echo esc_attr ( $theme_name ); ?>" data-slug="<?php echo esc_attr ( $theme_slug ); ?>" aria-label="<?php printf ( esc_html__( 'Imported %1$s', 'sophia-after-dark' ), $theme_name ); ?>">
|
||||
<?php esc_html_e( 'Imported', 'sophia-after-dark' ); ?>
|
||||
</a>
|
||||
<?php
|
||||
} else {
|
||||
if ( strpos( $activated_theme, 'pro' ) == false && strpos( $theme_slug, 'pro' ) !== false ) {
|
||||
$s_slug = explode( "-pro", $theme_slug );
|
||||
$purchaseurl = 'https://mysterythemes.com/wp-themes/'.$s_slug[0].'-pro';
|
||||
?>
|
||||
<a class="button button-primary mtdi-purchasenow" href="<?php echo esc_url( $purchaseurl ); ?>" target="_blank" data-name="<?php echo esc_attr ( $theme_name ); ?>" data-slug="<?php echo esc_attr ( $theme_slug ); ?>" aria-label="<?php printf ( esc_html__( 'Purchase Now', 'sophia-after-dark' ), $theme_name ); ?>">
|
||||
<?php esc_html_e( 'Buy Now', 'sophia-after-dark' ); ?>
|
||||
</a>
|
||||
<?php
|
||||
} else {
|
||||
if ( is_plugin_active( 'mysterythemes-demo-importer/mysterythemes-demo-importer.php' ) ) {
|
||||
$button_tooltip = esc_html__( 'Click to import demo', 'sophia-after-dark' );
|
||||
} else {
|
||||
$button_tooltip = esc_html__( 'Demo importer plugin is not installed or activated', 'sophia-after-dark' );
|
||||
}
|
||||
?>
|
||||
<a title="<?php echo esc_attr( $button_tooltip ); ?>" class="button button-primary hide-if-no-js mtdi-demo-import" href="javascript:void(0);" data-name="<?php echo esc_attr ( $theme_name ); ?>" data-slug="<?php echo esc_attr ( $theme_slug ); ?>" aria-label="<?php printf ( esc_attr__( 'Import %1$s', 'sophia-after-dark' ), $theme_name ); ?>">
|
||||
<?php esc_html_e( 'Import', 'sophia-after-dark' ); ?>
|
||||
</a>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
<a class="button preview install-demo-preview" target="_blank" href="<?php echo esc_url ( $demourl ); ?>">
|
||||
<?php esc_html_e( 'View Demo', 'sophia-after-dark' ); ?>
|
||||
</a>
|
||||
</div><!-- .mtdi-theme-actions -->
|
||||
</div><!-- .theme-id-container -->
|
||||
</div><!-- .mtdi-each-demo -->
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div><!-- .themes -->
|
||||
</div><!-- .mtdi-demo-wrapper -->
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div><!-- .theme-browser -->
|
||||
</div><!-- .mt-nav-content-wrap -->
|
||||
</div><!-- .mt-nav-tab-content-wrapper -->
|
||||
</div><!-- .wrap.about-wrap -->
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Output the changelog screen.
|
||||
*/
|
||||
public function changelog_screen() {
|
||||
global $wp_filesystem;
|
||||
|
||||
?>
|
||||
<div class="wrap about-wrap">
|
||||
|
||||
<?php $this->intro(); ?>
|
||||
<div class="mt-nav-content-wrap">
|
||||
<h4><?php esc_html_e( 'View changelog below:', 'sophia-after-dark' ); ?></h4>
|
||||
|
||||
<?php
|
||||
$changelog_file = apply_filters( 'sophia_after_dark_changelog_file', get_template_directory() . '/readme.txt' );
|
||||
|
||||
// Check if the changelog file exists and is readable.
|
||||
if ( $changelog_file && is_readable( $changelog_file ) ) {
|
||||
WP_Filesystem();
|
||||
$changelog = $wp_filesystem->get_contents( $changelog_file );
|
||||
$changelog_list = $this->parse_changelog( $changelog );
|
||||
echo wp_kses_post( $changelog_list );
|
||||
}
|
||||
?>
|
||||
</div><!-- .mt-nav-content-wrap -->
|
||||
</div><!-- .mt-nav-tab-content-wrapper -->
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse changelog from readme file.
|
||||
* @param string $content
|
||||
* @return string
|
||||
*/
|
||||
private function parse_changelog( $content ) {
|
||||
$matches = null;
|
||||
$regexp = '~==\s*Changelog\s*==(.*)($)~Uis';
|
||||
$changelog = '';
|
||||
|
||||
if ( preg_match( $regexp, $content, $matches ) ) {
|
||||
$changes = explode( '\r\n', trim( $matches[1] ) );
|
||||
$changelog .= '<pre class="changelog">';
|
||||
|
||||
foreach ( $changes as $index => $line ) {
|
||||
$changelog .= wp_kses_post( preg_replace( '~(=\s*(\d+(?:\.\d+)+)\s*=|$)~Uis', '<span class="title">${1}</span>', $line ) );
|
||||
}
|
||||
|
||||
$changelog .= '</pre>';
|
||||
}
|
||||
|
||||
return wp_kses_post( $changelog );
|
||||
}
|
||||
|
||||
/**
|
||||
* Output the free vs pro screen.
|
||||
*/
|
||||
public function free_vs_pro_screen() {
|
||||
?>
|
||||
<div class="wrap about-wrap">
|
||||
|
||||
<?php $this->intro(); ?>
|
||||
<div class="mt-nav-content-wrap">
|
||||
<h4><?php esc_html_e( 'Upgrade to PRO version for more exciting features.', 'sophia-after-dark' ); ?></h4>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="table-feature-title"><h3><?php esc_html_e( 'Features', 'sophia-after-dark' ); ?></h3></th>
|
||||
<th><h3><?php esc_html_e( 'Sophia After Dark', 'sophia-after-dark' ); ?></h3></th>
|
||||
<th><h3><?php esc_html_e( 'Color Blog Pro', 'sophia-after-dark' ); ?></h3></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><h3><?php esc_html_e( 'Price', 'sophia-after-dark' ); ?></h3></td>
|
||||
<td><?php esc_html_e( 'Free', 'sophia-after-dark' ); ?></td>
|
||||
<td><?php esc_html_e( '$59.99', 'sophia-after-dark' ); ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h3><?php esc_html_e( 'Import Demo Data', 'sophia-after-dark' ); ?></h3></td>
|
||||
<td><span class="dashicons mt-dashicons-yes"></span></td>
|
||||
<td><span class="dashicons mt-dashicons-yes"></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h3><?php esc_html_e( 'Pre Loaders Layouts', 'sophia-after-dark' ); ?></h3></td>
|
||||
<td><span class="dashicons mt-dashicons-no"></span></td>
|
||||
<td><span class="dashicons mt-dashicons-yes"></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h3><?php esc_html_e( 'Header Layouts', 'sophia-after-dark' ); ?></h3></td>
|
||||
<td><?php esc_html_e( '1', 'sophia-after-dark' ); ?></td>
|
||||
<td><?php esc_html_e( '4', 'sophia-after-dark' ); ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h3><?php esc_html_e( 'Multiple Layouts', 'sophia-after-dark' ); ?></h3></td>
|
||||
<td><span class="dashicons mt-dashicons-no"></span></td>
|
||||
<td><span class="dashicons mt-dashicons-yes"></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h3><?php esc_html_e( 'Google Fonts', 'sophia-after-dark' ); ?></h3></td>
|
||||
<td><?php esc_html_e( '2', 'sophia-after-dark' );?></td>
|
||||
<td><?php esc_html_e( '600+', 'sophia-after-dark' ); ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h3><?php esc_html_e( 'WordPress Page Builder Compatible', 'sophia-after-dark' ); ?></h3></td>
|
||||
<td><span class="dashicons mt-dashicons-no"></span></td>
|
||||
<td><span class="dashicons mt-dashicons-yes"></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h3><?php esc_html_e( 'Custom 404 Page', 'sophia-after-dark' ); ?></h3></td>
|
||||
<td><span class="dashicons mt-dashicons-no"></span></td>
|
||||
<td><span class="dashicons mt-dashicons-yes"></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h3><?php esc_html_e( 'Typography Options', 'sophia-after-dark' ); ?></h3></td>
|
||||
<td><span class="dashicons mt-dashicons-no"></span></td>
|
||||
<td><span class="dashicons mt-dashicons-yes"></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h3><?php esc_html_e( 'Footer Layout Options', 'sophia-after-dark' ); ?></h3></td>
|
||||
<td><span class="dashicons mt-dashicons-no"></span></td>
|
||||
<td><span class="dashicons mt-dashicons-yes"></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h3><?php esc_html_e( 'WooCommerce Plugin Compatible', 'sophia-after-dark' ); ?></h3></td>
|
||||
<td><span class="dashicons mt-dashicons-no"></span></td>
|
||||
<td><span class="dashicons mt-dashicons-yes"></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h3><?php esc_html_e( 'GDPR Compatible', 'sophia-after-dark' ); ?></h3></td>
|
||||
<td><span class="dashicons mt-dashicons-no"></span></td>
|
||||
<td><span class="dashicons mt-dashicons-yes"></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="btn-wrapper">
|
||||
<a href="<?php echo esc_url( apply_filters( 'sophia-after-dark_theme_url', 'https://mysterythemes.com/wp-themes/color-blog-pro/' ) ); ?>" class="button button-primary" target="_blank"><?php esc_html_e( 'Buy Pro', 'sophia-after-dark' ); ?></a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div><!-- .mt-nav-content-wrap -->
|
||||
</div><!-- .mt-nav-tab-content-wrapper -->
|
||||
</div><!-- .about-wrap -->
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the required option value as needed for theme review notice.
|
||||
*/
|
||||
public function sophia_after_dark_theme_rating_notice() {
|
||||
|
||||
// Set the installed time in `sophia_after_dark_theme_installed_time` option table.
|
||||
$option = get_option( 'sophia_after_dark_theme_installed_time' );
|
||||
|
||||
if ( ! $option ) {
|
||||
update_option( 'sophia_after_dark_theme_installed_time', time() );
|
||||
}
|
||||
|
||||
add_action( 'admin_notices', array( $this, 'sophia_after_dark_theme_review_notice' ), 0 );
|
||||
add_action( 'admin_init', array( $this, 'sophia_after_dark_ignore_theme_review_notice' ), 0 );
|
||||
add_action( 'admin_init', array( $this, 'sophia_after_dark_ignore_theme_review_notice_partially' ), 0 );
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the theme review notice.
|
||||
*/
|
||||
public function sophia_after_dark_theme_review_notice() {
|
||||
|
||||
global $current_user;
|
||||
$user_id = $current_user->ID;
|
||||
$ignored_notice = get_user_meta( $user_id, 'sophia_after_dark_ignore_theme_review_notice', true );
|
||||
$ignored_notice_partially = get_user_meta( $user_id, 'mt_sophia_after_dark_ignore_theme_review_notice_partially', true );
|
||||
|
||||
/**
|
||||
* Return from notice display if:
|
||||
*
|
||||
* 1. The theme installed is less than 15 days ago.
|
||||
* 2. If the user has ignored the message partially for 15 days.
|
||||
* 3. Dismiss always if clicked on 'I Already Did' button.
|
||||
*/
|
||||
if ( ( get_option( 'sophia_after_dark_theme_installed_time' ) > strtotime( '- 15 days' ) ) || ( $ignored_notice_partially > time() ) || ( $ignored_notice ) ) {
|
||||
return;
|
||||
}
|
||||
?>
|
||||
<div class="notice updated theme-review-notice">
|
||||
<p>
|
||||
<?php
|
||||
printf( esc_html__(
|
||||
'Howdy, %1$s! It seems that you have been using this theme for more than 15 days. We hope you are happy with everything that the theme has to offer. If you can spare a minute, please help us by leaving a 5-star review on WordPress.org. By spreading the love, we can continue to develop new amazing features in the future, for free!', 'sophia-after-dark'
|
||||
),
|
||||
'<strong>' . esc_html( $current_user->display_name ) . '</strong>'
|
||||
);
|
||||
?>
|
||||
</p>
|
||||
|
||||
<div class="links">
|
||||
<a href="https://wordpress.org/support/theme/sophia-after-dark/reviews/?filter=5#new-post" class="btn button-primary" target="_blank">
|
||||
<span class="dashicons dashicons-thumbs-up"></span>
|
||||
<span><?php esc_html_e( 'Sure', 'sophia-after-dark' ); ?></span>
|
||||
</a>
|
||||
|
||||
<a href="?mt_sophia_after_dark_ignore_theme_review_notice_partially=0" class="btn button-secondary">
|
||||
<span class="dashicons dashicons-calendar"></span>
|
||||
<span><?php esc_html_e( 'Maybe later', 'sophia-after-dark' ); ?></span>
|
||||
</a>
|
||||
|
||||
<a href="?mt_sophia_after_dark_ignore_theme_review_notice=0" class="btn button-secondary">
|
||||
<span class="dashicons dashicons-smiley"></span>
|
||||
<span><?php esc_html_e( 'I already did', 'sophia-after-dark' ); ?></span>
|
||||
</a>
|
||||
|
||||
<a href="<?php echo esc_url( 'https://wordpress.org/support/theme/sophia-after-dark/' ); ?>" class="btn button-secondary" target="_blank">
|
||||
<span class="dashicons dashicons-edit"></span>
|
||||
<span><?php esc_html_e( 'Got theme support question?', 'sophia-after-dark' ); ?></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<a class="notice-dismiss" href="?mt_sophia_after_dark_ignore_theme_review_notice_partially=0"></a>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to remove the theme review notice permanently as requested by the user.
|
||||
*/
|
||||
public function sophia_after_dark_ignore_theme_review_notice() {
|
||||
|
||||
global $current_user;
|
||||
$user_id = $current_user->ID;
|
||||
|
||||
/* If user clicks to ignore the notice, add that to their user meta */
|
||||
if ( isset( $_GET['mt_sophia_after_dark_ignore_theme_review_notice'] ) && '0' == $_GET['mt_sophia_after_dark_ignore_theme_review_notice'] ) {
|
||||
add_user_meta( $user_id, 'sophia_after_dark_ignore_theme_review_notice', 'true', true );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to remove the theme review notice partially as requested by the user.
|
||||
*/
|
||||
public function sophia_after_dark_ignore_theme_review_notice_partially() {
|
||||
|
||||
global $current_user;
|
||||
$user_id = $current_user->ID;
|
||||
|
||||
/* If user clicks to ignore the notice, add that to their user meta */
|
||||
if ( isset( $_GET['mt_sophia_after_dark_ignore_theme_review_notice_partially'] ) && '0' == $_GET['mt_sophia_after_dark_ignore_theme_review_notice_partially'] ) {
|
||||
update_user_meta( $user_id, 'mt_sophia_after_dark_ignore_theme_review_notice_partially', strtotime( '+ 7 days' ) );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the data set after the theme has been switched to other theme.
|
||||
*/
|
||||
public function sophia_after_dark_theme_rating_notice_data_remove() {
|
||||
|
||||
global $current_user;
|
||||
$user_id = $current_user->ID;
|
||||
$theme_installed_time = get_option( 'sophia_after_dark_theme_installed_time' );
|
||||
$ignored_notice = get_user_meta( $user_id, 'sophia_after_dark_ignore_theme_review_notice', true );
|
||||
$ignored_notice_partially = get_user_meta( $user_id, 'mt_sophia_after_dark_ignore_theme_review_notice_partially', true );
|
||||
|
||||
// Delete options data.
|
||||
if ( $theme_installed_time ) {
|
||||
delete_option( 'sophia_after_dark_theme_installed_time' );
|
||||
}
|
||||
|
||||
// Delete permanent notice remove data.
|
||||
if ( $ignored_notice ) {
|
||||
delete_user_meta( $user_id, 'sophia_after_dark_ignore_theme_review_notice' );
|
||||
}
|
||||
|
||||
// Delete partial notice remove data.
|
||||
if ( $ignored_notice_partially ) {
|
||||
delete_user_meta( $user_id, 'mt_sophia_after_dark_ignore_theme_review_notice_partially' );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Display custom text on theme settings page
|
||||
*
|
||||
* @param string $text
|
||||
*/
|
||||
public function sophia_after_dark_admin_footer_text( $text ) {
|
||||
$screen = get_current_screen();
|
||||
|
||||
if ( 'appearance_page_sophia-after-dark-settings' == $screen->id ) {
|
||||
|
||||
$theme = wp_get_theme( get_template() );
|
||||
$theme_name = $theme->get( 'Name' );
|
||||
|
||||
$text = sprintf( __( 'If you like <strong>%1$s</strong> please leave us a %2$s rating. A huge thank you from <strong>Mystery Themes</strong> in advance 😃!', 'sophia-after-dark' ), esc_html( $theme_name ), '<a href="https://wordpress.org/support/theme/sophia-after-dark/reviews/?filter=5#new-post" class="theme-rating" target="_blank">★★★★★</a>' );
|
||||
|
||||
}
|
||||
return $text;
|
||||
}
|
||||
|
||||
/**
|
||||
* Popup alert for mystery themes demo importer plugin install.
|
||||
*
|
||||
* @since 1.0.7
|
||||
*/
|
||||
public function install_demo_import_plugin_popup() {
|
||||
$demo_importer_plugin = WP_PLUGIN_DIR . '/mysterythemes-demo-importer/mysterythemes-demo-importer.php';
|
||||
?>
|
||||
<div id="mt-demo-import-plugin-popup">
|
||||
<div class="mt-popup-inner-wrap">
|
||||
<?php
|
||||
if ( is_plugin_active( 'mysterythemes-demo-importer/mysterythemes-demo-importer.php' ) ) {
|
||||
echo '<span class="mt-plugin-message">'.esc_html__( 'You can import available demos now!', 'sophia-after-dark' ).'</span>';
|
||||
} else {
|
||||
if ( ! file_exists( $demo_importer_plugin ) ) {
|
||||
?>
|
||||
<span class="mt-plugin-message"><?php esc_html_e( 'Mystery Themes Demo Importer Plugin is not installed!', 'sophia-after-dark' ); ?></span>
|
||||
<a href="javascript:void(0)" class="mt-install-demo-import-plugin" data-process="<?php esc_attr_e( 'Installing & Activating', 'sophia-after-dark' ); ?>" data-done="<?php esc_attr_e( 'Installed & Activated', 'sophia-after-dark' ); ?>">
|
||||
<?php esc_html_e( 'Install and Activate', 'sophia-after-dark' ); ?>
|
||||
</a>
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
<span class="mt-plugin-message"><?php esc_html_e( 'Mystery Themes Demo Importer Plugin is installed but not activated!', 'sophia-after-dark' ); ?></span>
|
||||
<a href="javascript:void(0)" class="mt-activate-demo-import-plugin" data-process="<?php esc_attr_e( 'Activating', 'sophia-after-dark' ); ?>" data-done="<?php esc_attr_e( 'Activated', 'sophia-after-dark' ); ?>">
|
||||
<?php esc_html_e( 'Activate Now', 'sophia-after-dark' ); ?>
|
||||
</a>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div><!-- .mt-popup-inner-wrap -->
|
||||
</div><!-- .mt-demo-import-plugin-popup -->
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Activate Demo Importer Plugins Ajax Method
|
||||
*
|
||||
* @since 1.0.7
|
||||
*/
|
||||
public function activate_demo_importer_plugin() {
|
||||
if ( ! wp_verify_nonce( $_POST['_wpnonce'], 'sophia_after_dark_admin_plugin_install_nonce' ) ) {
|
||||
die( 'This action was stopped for security purposes.' );
|
||||
}
|
||||
|
||||
$result = activate_plugin( '/mysterythemes-demo-importer/mysterythemes-demo-importer.php' );
|
||||
if ( is_wp_error( $result ) ) {
|
||||
// Process Error
|
||||
wp_send_json_error(
|
||||
array(
|
||||
'success' => false,
|
||||
'message' => $result->get_error_message(),
|
||||
)
|
||||
);
|
||||
} else {
|
||||
wp_send_json_success(
|
||||
array(
|
||||
'success' => true,
|
||||
'message' => __( 'Plugin Successfully Activated.', 'sophia-after-dark' ),
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Activate Demo Importer Plugins Ajax Method
|
||||
*
|
||||
* @since 1.0.7
|
||||
*/
|
||||
function install_demo_importer_plugin() {
|
||||
|
||||
if ( ! wp_verify_nonce( $_POST['_wpnonce'], 'sophia_after_dark_admin_plugin_install_nonce' ) ) {
|
||||
die( 'This action was stopped for security purposes.' );
|
||||
}
|
||||
|
||||
if ( ! current_user_can( 'install_plugins' ) ) {
|
||||
$status['message'] = __( 'Sorry, you are not allowed to install plugins on this site.', 'sophia-after-dark' );
|
||||
wp_send_json_error( $status );
|
||||
}
|
||||
|
||||
include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
|
||||
include_once ABSPATH . 'wp-admin/includes/plugin-install.php';
|
||||
|
||||
$api = plugins_api(
|
||||
'plugin_information',
|
||||
array(
|
||||
'slug' => esc_html( 'mysterythemes-demo-importer' ),
|
||||
'fields' => array(
|
||||
'sections' => false,
|
||||
),
|
||||
)
|
||||
);
|
||||
if ( is_wp_error( $api ) ) {
|
||||
$status['message'] = $api->get_error_message();
|
||||
wp_send_json_error( $status );
|
||||
}
|
||||
|
||||
$status['pluginName'] = $api->name;
|
||||
$skin = new WP_Ajax_Upgrader_Skin();
|
||||
$upgrader = new Plugin_Upgrader( $skin );
|
||||
$result = $upgrader->install( $api->download_link );
|
||||
|
||||
if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
|
||||
$status['debug'] = $skin->get_upgrade_messages();
|
||||
}
|
||||
|
||||
if ( is_wp_error( $result ) ) {
|
||||
$status['errorCode'] = $result->get_error_code();
|
||||
$status['message'] = $result->get_error_message();
|
||||
wp_send_json_error( $status );
|
||||
} elseif ( is_wp_error( $skin->result ) ) {
|
||||
$status['errorCode'] = $skin->result->get_error_code();
|
||||
$status['message'] = $skin->result->get_error_message();
|
||||
wp_send_json_error( $status );
|
||||
} elseif ( $skin->get_errors()->get_error_code() ) {
|
||||
$status['message'] = $skin->get_error_messages();
|
||||
wp_send_json_error( $status );
|
||||
} elseif ( is_null( $result ) ) {
|
||||
global $wp_filesystem;
|
||||
|
||||
$status['errorCode'] = 'unable_to_connect_to_filesystem';
|
||||
$status['message'] = __( 'Unable to connect to the filesystem. Please confirm your credentials.', 'sophia-after-dark' );
|
||||
|
||||
// Pass through the error from WP_Filesystem if one was raised.
|
||||
if ( $wp_filesystem instanceof WP_Filesystem_Base && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {
|
||||
$status['message'] = esc_html( $wp_filesystem->errors->get_error_message() );
|
||||
}
|
||||
|
||||
wp_send_json_error( $status );
|
||||
}
|
||||
|
||||
if ( current_user_can( 'activate_plugin' ) ) {
|
||||
$result = activate_plugin( '/mysterythemes-demo-importer/mysterythemes-demo-importer.php' );
|
||||
if ( is_wp_error( $result ) ) {
|
||||
$status['errorCode'] = $result->get_error_code();
|
||||
$status['message'] = $result->get_error_message();
|
||||
wp_send_json_error( $status );
|
||||
}
|
||||
}
|
||||
$status['message'] = esc_html__( 'Plugin installed successfully', 'sophia-after-dark' );
|
||||
wp_send_json_success( $status );
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
return new sophia_after_dark_Settings();
|
168
inc/widgets/mt-author-info.php
Normal file
168
inc/widgets/mt-author-info.php
Normal file
@ -0,0 +1,168 @@
|
||||
<?php
|
||||
/**
|
||||
* MT: Author Info
|
||||
*
|
||||
* Widget show the author information
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
class sophia_after_dark_Author_Info extends WP_widget {
|
||||
|
||||
/**
|
||||
* Register widget with WordPress.
|
||||
*/
|
||||
public function __construct() {
|
||||
$widget_ops = array(
|
||||
'classname' => 'sophia_after_dark_author_info',
|
||||
'description' => __( 'Select the user to display the author info.', 'sophia-after-dark' ),
|
||||
'customize_selective_refresh' => true,
|
||||
);
|
||||
parent::__construct( 'sophia_after_dark_author_info', __( 'MT: Author Info', 'sophia-after-dark' ), $widget_ops );
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function that holds widget fields
|
||||
* Array is used in update and form functions
|
||||
*/
|
||||
private function widget_fields() {
|
||||
$fields = array(
|
||||
|
||||
'widget_title' => array(
|
||||
'sophia_after_dark_widgets_name' => 'widget_title',
|
||||
'sophia_after_dark_widgets_title' => __( 'Widget title', 'sophia-after-dark' ),
|
||||
'sophia_after_dark_widgets_field_type' => 'text'
|
||||
),
|
||||
|
||||
'user_name' => array(
|
||||
'sophia_after_dark_widgets_name' => 'user_name',
|
||||
'sophia_after_dark_widgets_title' => __( 'User Name', 'sophia-after-dark' ),
|
||||
'sophia_after_dark_widgets_field_type' => 'text'
|
||||
),
|
||||
|
||||
'user_id' => array(
|
||||
'sophia_after_dark_widgets_name' => 'user_id',
|
||||
'sophia_after_dark_widgets_title' => __( 'Select Author', 'sophia-after-dark' ),
|
||||
'sophia_after_dark_widgets_default' => '',
|
||||
'sophia_after_dark_widgets_field_type' => 'user_dropdown'
|
||||
),
|
||||
|
||||
'user_thumb' => array(
|
||||
'sophia_after_dark_widgets_name' => 'user_thumb',
|
||||
'sophia_after_dark_widgets_title' => __( 'Author Image', 'sophia-after-dark' ),
|
||||
'sophia_after_dark_widgets_field_type' => 'upload'
|
||||
),
|
||||
|
||||
);
|
||||
return $fields;
|
||||
}
|
||||
|
||||
/**
|
||||
* Front-end display of widget.
|
||||
*
|
||||
* @see WP_Widget::widget()
|
||||
*
|
||||
* @param array $args Widget arguments.
|
||||
* @param array $instance Saved values from database.
|
||||
*/
|
||||
public function widget( $args, $instance ) {
|
||||
extract( $args );
|
||||
|
||||
if ( empty( $instance ) ) {
|
||||
return ;
|
||||
}
|
||||
|
||||
$sophia_after_dark_widget_title = empty( $instance['widget_title'] ) ? '' : $instance['widget_title'];
|
||||
$sophia_after_dark_user_name = empty( $instance['user_name'] ) ? '' : $instance['user_name'];
|
||||
$sophia_after_dark_user_id = empty( $instance['user_id'] ) ? '' : $instance['user_id'];
|
||||
$sophia_after_dark_user_image = empty( $instance['user_thumb'] ) ? '' : $instance['user_thumb'];
|
||||
|
||||
echo $before_widget;
|
||||
?>
|
||||
<div class="mt-author-info-wrapper">
|
||||
<?php
|
||||
if ( ! empty( $sophia_after_dark_widget_title ) ) {
|
||||
echo $before_title . esc_html( $sophia_after_dark_widget_title ) . $after_title;
|
||||
}
|
||||
?>
|
||||
<div class="author-bio-wrap">
|
||||
<div class="author-avatar">
|
||||
<?php
|
||||
if ( ! empty( $sophia_after_dark_user_image ) ) {
|
||||
echo '<img src="'. esc_url( $sophia_after_dark_user_image ) .'" />';
|
||||
} else {
|
||||
echo get_avatar( $sophia_after_dark_user_id, '132' );
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<h3 class="author-name">
|
||||
<?php
|
||||
if ( empty( $sophia_after_dark_user_name ) ) {
|
||||
echo wp_kses_post( get_the_author_meta( 'nickname', $sophia_after_dark_user_id ) );
|
||||
} else {
|
||||
echo esc_html( $sophia_after_dark_user_name );
|
||||
}
|
||||
?>
|
||||
</h3>
|
||||
<div class="author-description"><?php echo wp_kses_post( wpautop( get_the_author_meta( 'description', $sophia_after_dark_user_id ) ) ); ?></div>
|
||||
<div class="author-social">
|
||||
<?php sophia_after_dark_social_media_content(); ?>
|
||||
</div><!-- .author-social -->
|
||||
</div><!-- .author-bio-wrap -->
|
||||
</div><!-- .mt-author-info-wrapper -->
|
||||
<?php
|
||||
echo $after_widget;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sanitize widget form values as they are saved.
|
||||
*
|
||||
* @see WP_Widget::update()
|
||||
*
|
||||
* @param array $new_instance Values just sent to be saved.
|
||||
* @param array $old_instance Previously saved values from database.
|
||||
*
|
||||
* @uses sophia_after_dark_widgets_updated_field_value() defined in mt-widget-fields.php
|
||||
*
|
||||
* @return array Updated safe values to be saved.
|
||||
*/
|
||||
public function update( $new_instance, $old_instance ) {
|
||||
$instance = $old_instance;
|
||||
|
||||
$widget_fields = $this->widget_fields();
|
||||
|
||||
// Loop through fields
|
||||
foreach ( $widget_fields as $widget_field ) {
|
||||
|
||||
extract( $widget_field );
|
||||
|
||||
// Use helper function to get updated field values
|
||||
$instance[$sophia_after_dark_widgets_name] = sophia_after_dark_widgets_updated_field_value( $widget_field, $new_instance[$sophia_after_dark_widgets_name] );
|
||||
}
|
||||
|
||||
return $instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Back-end widget form.
|
||||
*
|
||||
* @see WP_Widget::form()
|
||||
*
|
||||
* @param array $instance Previously saved values from database.
|
||||
*
|
||||
* @uses sophia_after_dark_widgets_show_widget_field() defined in mt-widget-fields.php
|
||||
*/
|
||||
public function form( $instance ) {
|
||||
$widget_fields = $this->widget_fields();
|
||||
|
||||
// Loop through fields
|
||||
foreach ( $widget_fields as $widget_field ) {
|
||||
|
||||
// Make array elements available as variables
|
||||
extract( $widget_field );
|
||||
$sophia_after_dark_widgets_field_value = !empty( $instance[$sophia_after_dark_widgets_name] ) ? wp_kses_post( $instance[$sophia_after_dark_widgets_name] ) : '';
|
||||
sophia_after_dark_widgets_show_widget_field( $this, $widget_field, $sophia_after_dark_widgets_field_value );
|
||||
}
|
||||
}
|
||||
}
|
179
inc/widgets/mt-latest-posts.php
Normal file
179
inc/widgets/mt-latest-posts.php
Normal file
@ -0,0 +1,179 @@
|
||||
<?php
|
||||
/**
|
||||
* MT: Latest Posts
|
||||
*
|
||||
* Widget show the latest post with thumbnail.
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
class sophia_after_dark_Latest_Posts extends WP_widget {
|
||||
|
||||
/**
|
||||
* Register widget with WordPress.
|
||||
*/
|
||||
public function __construct() {
|
||||
$widget_ops = array(
|
||||
'classname' => 'sophia_after_dark_latest_posts',
|
||||
'description' => __( 'A widget to display the latest posts with thumbnail.', 'sophia-after-dark' ),
|
||||
'customize_selective_refresh' => true,
|
||||
);
|
||||
parent::__construct( 'sophia_after_dark_latest_posts', __( 'MT: Latest Posts', 'sophia-after-dark' ), $widget_ops );
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function that holds widget fields
|
||||
* Array is used in update and form functions
|
||||
*/
|
||||
private function widget_fields() {
|
||||
|
||||
$fields = array(
|
||||
|
||||
'widget_title' => array(
|
||||
'sophia_after_dark_widgets_name' => 'widget_title',
|
||||
'sophia_after_dark_widgets_title' => __( 'Widget title', 'sophia-after-dark' ),
|
||||
'sophia_after_dark_widgets_field_type' => 'text'
|
||||
),
|
||||
|
||||
'widget_post_order' => array(
|
||||
'sophia_after_dark_widgets_name' => 'widget_post_order',
|
||||
'sophia_after_dark_widgets_title' => __( 'Post Order', 'sophia-after-dark' ),
|
||||
'sophia_after_dark_widgets_default' => 'default',
|
||||
'sophia_after_dark_widgets_field_type' => 'select',
|
||||
'sophia_after_dark_widgets_field_options' => array(
|
||||
'default' => __( 'Default Order', 'sophia-after-dark' ),
|
||||
'random' => __( 'Random Order', 'sophia-after-dark' ),
|
||||
)
|
||||
),
|
||||
|
||||
'widget_post_count' => array(
|
||||
'sophia_after_dark_widgets_name' => 'widget_post_count',
|
||||
'sophia_after_dark_widgets_title' => __( 'Post Count', 'sophia-after-dark' ),
|
||||
'sophia_after_dark_widgets_default' => '5',
|
||||
'sophia_after_dark_widgets_field_type' => 'number'
|
||||
)
|
||||
|
||||
);
|
||||
return $fields;
|
||||
}
|
||||
|
||||
/**
|
||||
* Front-end display of widget.
|
||||
*
|
||||
* @see WP_Widget::widget()
|
||||
*
|
||||
* @param array $args Widget arguments.
|
||||
* @param array $instance Saved values from database.
|
||||
*/
|
||||
public function widget( $args, $instance ) {
|
||||
extract( $args );
|
||||
|
||||
if ( empty( $instance ) ) {
|
||||
return ;
|
||||
}
|
||||
|
||||
$sophia_after_dark_widget_title = empty( $instance['widget_title'] ) ? '' : $instance['widget_title'];
|
||||
$sophia_after_dark_post_order = empty( $instance['widget_post_order'] ) ? 'default' : $instance['widget_post_order'];
|
||||
$sophia_after_dark_post_count = empty( $instance['widget_post_count'] ) ? '5' : $instance['widget_post_count'];
|
||||
|
||||
echo $before_widget;
|
||||
?>
|
||||
<div class="mt-latest-posts-wrapper">
|
||||
<?php
|
||||
if ( !empty( $sophia_after_dark_widget_title ) ) {
|
||||
echo $before_title . esc_html( $sophia_after_dark_widget_title ) . $after_title;
|
||||
}
|
||||
?>
|
||||
<div class="mt-posts-content-wrapper">
|
||||
<?php
|
||||
$sophia_after_dark_posts_args = array(
|
||||
'posts_per_page' => absint( $sophia_after_dark_post_count ),
|
||||
'ignore_sticky_posts' => 1,
|
||||
);
|
||||
if ( 'random' === $sophia_after_dark_post_order ) {
|
||||
$sophia_after_dark_posts_args['orderby'] = 'rand';
|
||||
}
|
||||
$sophia_after_dark_posts_query = new WP_Query( $sophia_after_dark_posts_args );
|
||||
if ( $sophia_after_dark_posts_query->have_posts() ) {
|
||||
while ( $sophia_after_dark_posts_query->have_posts() ) {
|
||||
$sophia_after_dark_posts_query->the_post();
|
||||
?>
|
||||
<div class="mt-single-post-wrap">
|
||||
<?php if ( has_post_thumbnail() ) { ?>
|
||||
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
|
||||
<figure><div class="mt-post-thumb"><?php the_post_thumbnail( 'thumbnail' ); ?></div></figure>
|
||||
</a>
|
||||
<?php } ?>
|
||||
<div class="mt-post-content">
|
||||
<h5 class="mt-post-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h5>
|
||||
<div class="entry-cat">
|
||||
<?php
|
||||
sophia_after_dark_posted_on();
|
||||
sophia_after_dark_posted_by();
|
||||
?>
|
||||
</div>
|
||||
<?php sophia_after_dark_widget_entry_footer(); ?>
|
||||
</div>
|
||||
</div><!-- .mt-single-post-wrap -->
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div><!-- .mt-posts-content-wrapper -->
|
||||
</div><!-- .mt-latest-posts-wrapper -->
|
||||
<?php
|
||||
echo $after_widget;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sanitize widget form values as they are saved.
|
||||
*
|
||||
* @see WP_Widget::update()
|
||||
*
|
||||
* @param array $new_instance Values just sent to be saved.
|
||||
* @param array $old_instance Previously saved values from database.
|
||||
*
|
||||
* @uses sophia_after_dark_widgets_updated_field_value() defined in mt-widget-fields.php
|
||||
*
|
||||
* @return array Updated safe values to be saved.
|
||||
*/
|
||||
public function update( $new_instance, $old_instance ) {
|
||||
$instance = $old_instance;
|
||||
|
||||
$widget_fields = $this->widget_fields();
|
||||
|
||||
// Loop through fields
|
||||
foreach ( $widget_fields as $widget_field ) {
|
||||
|
||||
extract( $widget_field );
|
||||
|
||||
// Use helper function to get updated field values
|
||||
$instance[$sophia_after_dark_widgets_name] = sophia_after_dark_widgets_updated_field_value( $widget_field, $new_instance[$sophia_after_dark_widgets_name] );
|
||||
}
|
||||
|
||||
return $instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Back-end widget form.
|
||||
*
|
||||
* @see WP_Widget::form()
|
||||
*
|
||||
* @param array $instance Previously saved values from database.
|
||||
*
|
||||
* @uses sophia_after_dark_widgets_show_widget_field() defined in mt-widget-fields.php
|
||||
*/
|
||||
public function form( $instance ) {
|
||||
$widget_fields = $this->widget_fields();
|
||||
|
||||
// Loop through fields
|
||||
foreach ( $widget_fields as $widget_field ) {
|
||||
|
||||
// Make array elements available as variables
|
||||
extract( $widget_field );
|
||||
$sophia_after_dark_widgets_field_value = !empty( $instance[$sophia_after_dark_widgets_name] ) ? wp_kses_post( $instance[$sophia_after_dark_widgets_name] ) : '';
|
||||
sophia_after_dark_widgets_show_widget_field( $this, $widget_field, $sophia_after_dark_widgets_field_value );
|
||||
}
|
||||
}
|
||||
}
|
128
inc/widgets/mt-social-media.php
Normal file
128
inc/widgets/mt-social-media.php
Normal file
@ -0,0 +1,128 @@
|
||||
<?php
|
||||
/**
|
||||
* MT: Social Media
|
||||
*
|
||||
* Widget show the social media icons.
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
class sophia_after_dark_Social_Media extends WP_widget {
|
||||
|
||||
/**
|
||||
* Register widget with WordPress.
|
||||
*/
|
||||
public function __construct() {
|
||||
$widget_ops = array(
|
||||
'classname' => 'sophia_after_dark_social_media',
|
||||
'description' => __( 'A widget shows the social media icons.', 'sophia-after-dark' ),
|
||||
'customize_selective_refresh' => true,
|
||||
);
|
||||
parent::__construct( 'sophia_after_dark_social_media', __( 'MT: Social Media', 'sophia-after-dark' ), $widget_ops );
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function that holds widget fields
|
||||
* Array is used in update and form functions
|
||||
*/
|
||||
private function widget_fields() {
|
||||
|
||||
$fields = array(
|
||||
|
||||
'widget_title' => array(
|
||||
'sophia_after_dark_widgets_name' => 'widget_title',
|
||||
'sophia_after_dark_widgets_title' => __( 'Widget title', 'sophia-after-dark' ),
|
||||
'sophia_after_dark_widgets_field_type' => 'text'
|
||||
)
|
||||
);
|
||||
return $fields;
|
||||
}
|
||||
|
||||
/**
|
||||
* Front-end display of widget.
|
||||
*
|
||||
* @see WP_Widget::widget()
|
||||
*
|
||||
* @param array $args Widget arguments.
|
||||
* @param array $instance Saved values from database.
|
||||
*/
|
||||
public function widget( $args, $instance ) {
|
||||
extract( $args );
|
||||
|
||||
if ( empty( $instance ) ) {
|
||||
return ;
|
||||
}
|
||||
|
||||
$sophia_after_dark_widget_title = empty( $instance['widget_title'] ) ? '' : $instance['widget_title'];
|
||||
|
||||
$get_social_media_icons = get_theme_mod( 'social_media_icons', '' );
|
||||
$get_decode_social_media = json_decode( $get_social_media_icons );
|
||||
|
||||
echo $before_widget;
|
||||
?>
|
||||
<div class="mt-aside-social-wrapper">
|
||||
<?php
|
||||
if ( ! empty( $sophia_after_dark_widget_title ) ) {
|
||||
echo $before_title . esc_html( $sophia_after_dark_widget_title ) . $after_title;
|
||||
}
|
||||
?>
|
||||
<div class="mt-social-icons-wrapper">
|
||||
<?php sophia_after_dark_social_media_content(); ?>
|
||||
</div><!-- .mt-social-icons-wrapper -->
|
||||
</div><!-- .mt-aside-social-wrapper -->
|
||||
<?php
|
||||
echo $after_widget;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sanitize widget form values as they are saved.
|
||||
*
|
||||
* @see WP_Widget::update()
|
||||
*
|
||||
* @param array $new_instance Values just sent to be saved.
|
||||
* @param array $old_instance Previously saved values from database.
|
||||
*
|
||||
* @uses sophia_after_dark_widgets_updated_field_value() defined in mt-widget-fields.php
|
||||
*
|
||||
* @return array Updated safe values to be saved.
|
||||
*/
|
||||
public function update( $new_instance, $old_instance ) {
|
||||
$instance = $old_instance;
|
||||
|
||||
$widget_fields = $this->widget_fields();
|
||||
|
||||
// Loop through fields
|
||||
foreach ( $widget_fields as $widget_field ) {
|
||||
|
||||
extract( $widget_field );
|
||||
|
||||
// Use helper function to get updated field values
|
||||
$instance[$sophia_after_dark_widgets_name] = sophia_after_dark_widgets_updated_field_value( $widget_field, $new_instance[$sophia_after_dark_widgets_name] );
|
||||
}
|
||||
|
||||
return $instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Back-end widget form.
|
||||
*
|
||||
* @see WP_Widget::form()
|
||||
*
|
||||
* @param array $instance Previously saved values from database.
|
||||
*
|
||||
* @uses sophia_after_dark_widgets_show_widget_field() defined in mt-widget-fields.php
|
||||
*/
|
||||
public function form( $instance ) {
|
||||
$widget_fields = $this->widget_fields();
|
||||
|
||||
// Loop through fields
|
||||
foreach ( $widget_fields as $widget_field ) {
|
||||
|
||||
// Make array elements available as variables
|
||||
extract( $widget_field );
|
||||
$sophia_after_dark_widgets_field_value = !empty( $instance[$sophia_after_dark_widgets_name] ) ? wp_kses_post( $instance[$sophia_after_dark_widgets_name] ) : '';
|
||||
sophia_after_dark_widgets_show_widget_field( $this, $widget_field, $sophia_after_dark_widgets_field_value );
|
||||
}
|
||||
}
|
||||
}
|
154
inc/widgets/mt-widget-fields.php
Normal file
154
inc/widgets/mt-widget-fields.php
Normal file
@ -0,0 +1,154 @@
|
||||
<?php
|
||||
/**
|
||||
* Define custom fields for widgets
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
function sophia_after_dark_widgets_show_widget_field( $instance = '', $widget_field = '', $sophia_after_dark_widget_field_value = '' ) {
|
||||
|
||||
extract( $widget_field );
|
||||
|
||||
switch ( $sophia_after_dark_widgets_field_type ) {
|
||||
|
||||
/**
|
||||
* text widget field
|
||||
*/
|
||||
case 'text'
|
||||
?>
|
||||
<p>
|
||||
<span class="field-label"><label for="<?php echo esc_attr( $instance->get_field_id( $sophia_after_dark_widgets_name ) ); ?>"><?php echo esc_html( $sophia_after_dark_widgets_title ); ?></label></span>
|
||||
<input class="widefat" id="<?php echo esc_attr( $instance->get_field_id( $sophia_after_dark_widgets_name ) ); ?>" name="<?php echo esc_attr( $instance->get_field_name( $sophia_after_dark_widgets_name ) ); ?>" type="text" value="<?php echo esc_html( $sophia_after_dark_widget_field_value ); ?>" />
|
||||
|
||||
<?php if ( isset( $sophia_after_dark_widgets_description ) ) { ?>
|
||||
<br />
|
||||
<em><?php echo wp_kses_post( $sophia_after_dark_widgets_description ); ?></em>
|
||||
<?php } ?>
|
||||
</p>
|
||||
<?php
|
||||
break;
|
||||
|
||||
/**
|
||||
* Select field
|
||||
*/
|
||||
case 'select' :
|
||||
if ( empty( $sophia_after_dark_widget_field_value ) ) {
|
||||
$sophia_after_dark_widget_field_value = $sophia_after_dark_widgets_default;
|
||||
}
|
||||
|
||||
?>
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $instance->get_field_id( $sophia_after_dark_widgets_name ) ); ?>"><?php echo esc_html( $sophia_after_dark_widgets_title ); ?>:</label>
|
||||
<select name="<?php echo esc_attr( $instance->get_field_name( $sophia_after_dark_widgets_name ) ); ?>" id="<?php echo esc_attr( $instance->get_field_id( $sophia_after_dark_widgets_name ) ); ?>" class="widefat">
|
||||
<?php foreach ( $sophia_after_dark_widgets_field_options as $select_option_name => $select_option_title ) { ?>
|
||||
<option value="<?php echo esc_attr( $select_option_name ); ?>" id="<?php echo esc_attr( $instance->get_field_id( $select_option_name ) ); ?>" <?php selected( $select_option_name, $sophia_after_dark_widget_field_value ); ?>><?php echo esc_html( $select_option_title ); ?></option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
|
||||
<?php if ( isset( $sophia_after_dark_widgets_description ) ) { ?>
|
||||
<br />
|
||||
<small><?php echo esc_html( $sophia_after_dark_widgets_description ); ?></small>
|
||||
<?php } ?>
|
||||
</p>
|
||||
<?php
|
||||
break;
|
||||
|
||||
/**
|
||||
* user dropdown widget field
|
||||
*/
|
||||
case 'user_dropdown' :
|
||||
if ( empty( $sophia_after_dark_widget_field_value ) ) {
|
||||
$sophia_after_dark_widget_field_value = $sophia_after_dark_widgets_default;
|
||||
}
|
||||
$select_field = 'name="'. esc_attr( $instance->get_field_name( $sophia_after_dark_widgets_name ) ) .'" id="'. esc_attr( $instance->get_field_id( $sophia_after_dark_widgets_name ) ) .'" class="widefat"';
|
||||
?>
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $instance->get_field_id( $sophia_after_dark_widgets_name ) ); ?>"><?php echo esc_html( $sophia_after_dark_widgets_title ); ?>:</label>
|
||||
<?php
|
||||
$dropdown_args = wp_parse_args( array(
|
||||
'show_option_none' => __( '- - Select User - -', 'sophia-after-dark' ),
|
||||
'selected' => esc_attr( $sophia_after_dark_widget_field_value ),
|
||||
) );
|
||||
|
||||
$dropdown_args['echo'] = false;
|
||||
|
||||
$dropdown = wp_dropdown_users( $dropdown_args );
|
||||
$dropdown = str_replace( '<select', '<select ' . $select_field, $dropdown );
|
||||
echo $dropdown;
|
||||
?>
|
||||
</p>
|
||||
<?php
|
||||
break;
|
||||
|
||||
/**
|
||||
* number widget field
|
||||
*/
|
||||
case 'number' :
|
||||
if ( empty( $sophia_after_dark_widget_field_value ) ) {
|
||||
$sophia_after_dark_widget_field_value = $sophia_after_dark_widgets_default;
|
||||
}
|
||||
?>
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $instance->get_field_id( $sophia_after_dark_widgets_name ) ); ?>"><?php echo esc_html( $sophia_after_dark_widgets_title ); ?></label>
|
||||
<input name="<?php echo esc_attr( $instance->get_field_name( $sophia_after_dark_widgets_name ) ); ?>" type="number" step="1" min="1" id="<?php echo esc_attr( $instance->get_field_id( $sophia_after_dark_widgets_name ) ); ?>" value="<?php echo esc_html( $sophia_after_dark_widget_field_value ); ?>" class="small-text" />
|
||||
|
||||
<?php if ( isset( $sophia_after_dark_widgets_description ) ) { ?>
|
||||
<br />
|
||||
<em><?php echo wp_kses_post( $sophia_after_dark_widgets_description ); ?></em>
|
||||
<?php } ?>
|
||||
</p>
|
||||
<?php
|
||||
break;
|
||||
|
||||
/**
|
||||
* upload file field
|
||||
*/
|
||||
case 'upload':
|
||||
$image = $image_class = "";
|
||||
if ( $sophia_after_dark_widget_field_value ) {
|
||||
$image = '<img src="'.esc_url( $sophia_after_dark_widget_field_value ).'" style="max-width:100%;"/>';
|
||||
$image_class = ' hidden';
|
||||
}
|
||||
?>
|
||||
<div class="attachment-media-view">
|
||||
|
||||
<label for="<?php echo esc_attr( $instance->get_field_id( $sophia_after_dark_widgets_name ) ); ?>"><?php echo esc_html( $sophia_after_dark_widgets_title ); ?>:</label><br />
|
||||
|
||||
<div class="placeholder<?php echo esc_attr( $image_class ); ?>">
|
||||
<?php esc_html_e( 'No image selected', 'sophia-after-dark' ); ?>
|
||||
</div>
|
||||
<div class="thumbnail thumbnail-image">
|
||||
<?php echo $image; ?>
|
||||
</div>
|
||||
|
||||
<div class="actions mt-clearfix">
|
||||
<button type="button" class="button mt-delete-button align-left"><?php esc_html_e( 'Remove', 'sophia-after-dark' ); ?></button>
|
||||
<button type="button" class="button mt-upload-button alignright"><?php esc_html_e( 'Select Image', 'sophia-after-dark' ); ?></button>
|
||||
|
||||
<input name="<?php echo esc_attr( $instance->get_field_name( $sophia_after_dark_widgets_name ) ); ?>" id="<?php echo esc_attr( $instance->get_field_id( $sophia_after_dark_widgets_name ) ); ?>" class="upload-id" type="hidden" value="<?php echo esc_url( $sophia_after_dark_widget_field_value ) ?>"/>
|
||||
</div>
|
||||
|
||||
<?php if ( isset( $sophia_after_dark_widgets_description ) ) { ?>
|
||||
<br />
|
||||
<small><?php echo wp_kses_post( $sophia_after_dark_widgets_description ); ?></small>
|
||||
<?php } ?>
|
||||
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function sophia_after_dark_widgets_updated_field_value( $widget_field, $new_field_value ) {
|
||||
extract( $widget_field );
|
||||
|
||||
if ( $sophia_after_dark_widgets_field_type == 'number') {
|
||||
return absint( $new_field_value );
|
||||
} elseif ( $sophia_after_dark_widgets_field_type == 'upload' ) {
|
||||
return esc_url( $new_field_value );
|
||||
} else {
|
||||
return sanitize_text_field( $new_field_value );
|
||||
}
|
||||
}
|
83
inc/widgets/mt-widget-functions.php
Normal file
83
inc/widgets/mt-widget-functions.php
Normal file
@ -0,0 +1,83 @@
|
||||
<?php
|
||||
/**
|
||||
* custom function and work related to widgets.
|
||||
*
|
||||
* @package Sophia After Dark
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* Register widget area.
|
||||
*
|
||||
* @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar
|
||||
*/
|
||||
function sophia_after_dark_widgets_init() {
|
||||
/**
|
||||
* Register default sidebar
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
register_sidebar( array(
|
||||
'name' => esc_html__( 'Sidebar', 'sophia-after-dark' ),
|
||||
'id' => 'sidebar-1',
|
||||
'description' => esc_html__( 'Add widgets here.', 'sophia-after-dark' ),
|
||||
|
||||
'before_widget' => '<section id="%1$s" class="widget %2$s">',
|
||||
'after_widget' => '</section>',
|
||||
'before_title' => '<h4 class="widget-title">',
|
||||
'after_title' => '</h4>',
|
||||
) );
|
||||
|
||||
/**
|
||||
* Register Header Ads Section
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
register_sidebar( array(
|
||||
'name' => esc_html__( 'Header Ads Section', 'sophia-after-dark' ),
|
||||
'id' => 'header-ads-section',
|
||||
'description' => esc_html__( 'Add MT: Ads Banner widgets here.', 'sophia-after-dark' ),
|
||||
|
||||
'before_widget' => '<section id="%1$s" class="widget %2$s">',
|
||||
'after_widget' => '</section>',
|
||||
'before_title' => '<h4 class="widget-title">',
|
||||
'after_title' => '</h4>',
|
||||
) );
|
||||
|
||||
/**
|
||||
* Register 4 different footer area
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
register_sidebars( 4 , array(
|
||||
'name' => esc_html__( 'Footer %d', 'sophia-after-dark' ),
|
||||
'id' => 'footer-sidebar',
|
||||
'description' => esc_html__( 'Added widgets are display at Footer Widget Area.', 'sophia-after-dark' ),
|
||||
'before_widget' => '<section id="%1$s" class="widget %2$s">',
|
||||
'after_widget' => '</section>',
|
||||
'before_title' => '<h4 class="widget-title">',
|
||||
'after_title' => '</h4>',
|
||||
) );
|
||||
|
||||
// Author Info
|
||||
register_widget( 'sophia_after_dark_Author_Info' );
|
||||
|
||||
// Latest Posts
|
||||
register_widget( 'sophia_after_dark_Latest_Posts' );
|
||||
|
||||
//Social Media
|
||||
register_widget( 'sophia_after_dark_Social_Media' );
|
||||
}
|
||||
add_action( 'widgets_init', 'sophia_after_dark_widgets_init' );
|
||||
|
||||
/*-----------------------------------------------------------------------------------------------------------------------*/
|
||||
/**
|
||||
* Load widget required files
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
require get_template_directory() . '/inc/widgets/mt-widget-fields.php'; // Widget fields
|
||||
require get_template_directory() . '/inc/widgets/mt-author-info.php'; // Author Info
|
||||
require get_template_directory() . '/inc/widgets/mt-latest-posts.php'; // Latest Posts
|
||||
require get_template_directory() . '/inc/widgets/mt-social-media.php'; // Social Media
|
Reference in New Issue
Block a user