add_action( 'wp', 'init' );
$this->add_filter( 'body_class', 'body_classes' );
$this->add_action( 'liquid_attr_contents_wrap', 'start_container' );
$this->add_action( 'liquid_before_content', 'start_row_wrapper' );
$this->add_action( 'liquid_after_content', 'end_row_wrapper' );
$this->add_action( 'liquid_after_content', 'end_container' );
$this->add_action( 'liquid_single_post_sidebar', 'add_single_post_sidebar' );
$this->add_action( 'liquid_start_single_post_container', 'start_single_post_container' );
$this->add_action( 'liquid_end_single_post_container', 'end_single_post_container' );
}
public function init() {
// Get the sidebars and assign to public variable.
$this->sidebars = $this->setup_sidebar( $this->setup_options() );
if ( $this->has_sidebar() ) {
wp_enqueue_style( 'liquid-theme-sidebar', get_template_directory_uri() . '/assets/css/sidebar/sidebar.css', [ 'liquid-theme', 'liquid-utils' ], null, false );
}
}
public function body_classes( $classes ) {
if( $this->has_sidebar() ) {
$classes[] = 'has-sidebar';
if( 'left' === $this->sidebars['position'] ) {
$classes[] = 'has-left-sidebar';
}
}
if( isset( $this->sidebars['hide_on_mobile'] ) && $this->sidebars['hide_on_mobile'] === 'on' ) {
$classes[] = 'lqd-hide-sidebar-on-mobile';
}
return $classes;
}
public function start_container( $attributes ) {
if( is_404() ) {
return;
}
global $post;
$content = '';
if( $post ) {
$content = $post->post_content;
}
$sp_custom_layout_enable = get_post_meta( get_the_ID(), 'liquid_product_layout_enable', true );
if ( $sp_custom_layout_enable === 'on' ) {
$sp_custom_layout = get_post_meta( get_the_ID(), 'liquid_product_layout', true );
} elseif ( $sp_custom_layout_enable === '0' || empty( $sp_custom_layout_enable ) ) {
$sp_custom_layout_enable = liquid_helper()->get_kit_option( 'liquid_wc_custom_layout_enable' );
$sp_custom_layout = liquid_helper()->get_kit_option( 'liquid_wc_custom_layout' );
}
if( ( 'on' === $sp_custom_layout_enable && !empty( $sp_custom_layout ) && is_singular( 'product' ) ) ) {
unset( $attributes['class'] );
}
$attributes['data-lqd-view'] = 'liquidPageContent';
return $attributes;
}
public function end_container() {
if( is_404() ) {
return;
}
global $post;
$content = '';
if( $post ) {
$content = $post->post_content;
}
if( !is_singular( 'post' )
|| is_search()
|| is_home()
|| is_category()
|| is_tag()
|| is_author()
|| is_post_type_archive( 'liquid-portfolio' )
|| is_tax( 'liquid-portfolio-category' )
|| class_exists( 'WooCommerce' ) && is_product_taxonomy()
|| class_exists( 'WooCommerce' ) && is_product_category()
|| class_exists( 'WooCommerce' ) && is_singular( 'product' )
|| $this->has_sidebar()
) :
//echo '';
endif;
}
public function start_row_wrapper() {
$types = apply_filters( 'liquid_single_post_types', 'post' );
// Example - add_filter( 'liquid_single_post_types' , function(){ return array('post', 'my-cpt', 'my-cpt2'); } );
if( is_singular( $types ) || ( class_exists( 'WooCommerce' ) && is_product_category() ) || is_404() ) {
return;
}
$content_class = '';
$sp_custom_layout_enable = get_post_meta( get_the_ID(), 'liquid_product_layout_enable', true );
if ( $sp_custom_layout_enable !== 'on' && ( $sp_custom_layout_enable === '0' || empty( $sp_custom_layout_enable ) ) ) {
$sp_custom_layout_enable = liquid_helper()->get_kit_option( 'liquid_wc_custom_layout_enable' );
}
/**
* @TODO: if making any changes here don't forget to update end_row_wrapper() as well
*/
if( $this->has_sidebar() ) {
if ( !is_singular() ) {
$content_class = 'lqd-contents lqd-container grid columns-3 gap-30 ms-auto me-auto tablet:columns-2 mobile:columns-1 pb-60';
} else {
$content_class = 'lqd-contents';
}
} else {
if ( ( !class_exists( 'Liquid_Addons' ) || !defined( 'ELEMENTOR_VERSION' ) ) ) {
$content_class = 'lqd-contents lqd-container grid columns-3 gap-30 ms-auto me-auto tablet:columns-2 mobile:columns-1 pb-60';
if ( is_singular() ) {
$content_class = 'lqd-contents lqd-container ms-auto me-auto pb-60';
}
}
if (
(
!liquid_helper()->is_page_elementor() &&
( class_exists( 'WooCommerce' ) && is_product() && $sp_custom_layout_enable !== 'on' )
) ||
(
class_exists( 'WooCommerce' ) &&
(
is_shop() ||
( is_product() && $sp_custom_layout_enable !== 'on' ) ||
is_cart() ||
is_checkout() ||
is_account_page() ||
( get_option( 'woocommerce_thanks_page_id' ) && is_page( get_option( 'woocommerce_thanks_page_id' ) ) )
)
)
) {
$content_class = 'lqd-contents lqd-container ms-auto me-auto pb-60';
}
if (
!liquid_helper()->is_page_elementor() &&
(
is_archive() ||
is_search()
) &&
(
class_exists( 'WooCommerce' ) &&
!is_product_category()
)
) {
$content_class = 'lqd-contents lqd-container grid columns-3 gap-30 ms-auto me-auto tablet:columns-2 mobile:columns-1 pb-60';
}
if (
(
( defined( 'ELEMENTOR_VERSION' ) && \Elementor\Plugin::$instance->preview->is_preview_mode() ) ||
liquid_helper()->is_page_elementor()
) &&
// in case if titlewrapper enabled in woo pages
!(
class_exists( 'WooCommerce' ) &&
(
is_shop() ||
( is_product() && $sp_custom_layout_enable !== 'on' ) ||
is_cart() ||
is_checkout() ||
is_account_page() ||
( get_option( 'woocommerce_thanks_page_id' ) && is_page( get_option( 'woocommerce_thanks_page_id' ) ) )
)
)
) {
$content_class = 'lqd-contents';
}
}
$content_class = apply_filters( 'liquid_single_post_class', $content_class );
if ( $content_class ) {
// added #content id for YITH ajax product filter plugin
echo '
';
}
}
public function end_row_wrapper() {
$types = apply_filters( 'liquid_single_post_types', 'post' );
$close_tag = null;
$sp_custom_layout_enable = get_post_meta( get_the_ID(), 'liquid_product_layout_enable', true );
if ( $sp_custom_layout_enable !== 'on' && ( $sp_custom_layout_enable === '0' || empty( $sp_custom_layout_enable ) ) ) {
$sp_custom_layout_enable = liquid_helper()->get_kit_option( 'liquid_wc_custom_layout_enable' );
}
if( is_singular( $types ) || ( class_exists( 'WooCommerce' ) && is_product_category() ) || is_404() ) {
return;
}
if( $this->has_sidebar() ) {
echo '
';
get_template_part( 'templates/sidebar' );
return;
}
// basically same conditions as in start_row_wrapper()
if (
( !class_exists( 'Liquid_Addons' ) || !defined( 'ELEMENTOR_VERSION' ) ) ||
(
(
!liquid_helper()->is_page_elementor() &&
( class_exists( 'WooCommerce' ) && is_product() && $sp_custom_layout_enable !== 'on' )
) ||
(
class_exists( 'WooCommerce' ) &&
!is_product_category() &&
(
is_shop() ||
( is_product() && $sp_custom_layout_enable !== 'on' ) ||
is_cart() ||
is_checkout() ||
is_account_page() ||
( get_option( 'woocommerce_thanks_page_id' ) && is_page( get_option( 'woocommerce_thanks_page_id' ) ) )
)
) ||
is_archive() ||
is_search()
) ||
(
(
( defined( 'ELEMENTOR_VERSION' ) && \Elementor\Plugin::$instance->preview->is_preview_mode() ) ||
liquid_helper()->is_page_elementor()
) &&
// in case if titlewrapper enabled in woo pages
!(
class_exists( 'WooCommerce' ) &&
(
is_shop() ||
( is_product() && $sp_custom_layout_enable !== 'on' ) ||
is_cart() ||
is_checkout() ||
is_account_page() ||
( get_option( 'woocommerce_thanks_page_id' ) && is_page( get_option( 'woocommerce_thanks_page_id' ) ) )
)
)
)
) {
$close_tag = true;
}
if ( $close_tag ) {
echo '';
}
}
public function start_single_post_container() {
if( !$this->has_sidebar() ) {
return;
}
$content_class = 'lqd-contents';
$content_class = apply_filters( 'liquid_single_post_container', $content_class );
echo '';
}
public function end_single_post_container() {
if( !$this->has_sidebar() ) {
return;
}
echo '
';
}
public function add_single_post_sidebar() {
if( $this->has_sidebar() ) {
get_template_part( 'templates/sidebar' );
}
}
public function setup_sidebar( $sidebar_options ) {
$sidebar = null;
if( ( !class_exists( 'Liquid_Addons' ) || !defined( 'ELEMENTOR_VERSION' ) ) && is_active_sidebar( 'main' ) ) {
$sidebar = 'main';
$sidebar_position = 'right';
}
else {
// Post Options.
if ( defined( 'ELEMENTOR_VERSION' ) && is_callable( 'Elementor\Plugin::instance' ) ) {
if ( liquid_helper()->check_post_types() ) {
return;
}
$sidebar='';
}
}
$opts_sidebar = isset( $sidebar_options['sidebar'] ) ? $sidebar_options['sidebar'] : '';
// Setting Default
$sidebar_position = $sidebar ? $sidebar_position : 'default';
$sidebar = $sidebar ? $sidebar : $opts_sidebar;
// Theme options.
$sidebar_position_theme_option = array_key_exists( 'position', $sidebar_options ) ? strtolower( $sidebar_options['position'] ) : '';
// Get sidebars and position from theme options if it's being forced globally.
if ( array_key_exists( 'global', $sidebar_options ) && 'on' === $sidebar_options['global'] ) {
$sidebar = ( '' != $sidebar_options['sidebar'] ) ? $sidebar_options['sidebar'] : '';
$sidebar_position = $sidebar_position_theme_option;
}
// If sidebar position is default OR no entry in database exists.
if ( 'default' === $sidebar_position ) {
$sidebar_position = $sidebar_position_theme_option;
}
$return = array( 'position' => $sidebar_position );
$return['hide_on_mobile'] = isset($sidebar_options['hide_on_mobile']) ? $sidebar_options['hide_on_mobile'] : '';
if ( $sidebar && 'none' !== $sidebar ) {
$return['sidebar'] = $sidebar;
}
return $return;
}
public function has_sidebar( $which = '1' ) {
if( is_array( $this->sidebars ) && isset( $this->sidebars['sidebar'] ) && ! empty( $this->sidebars['sidebar'] ) ) {
return true;
}
return false;
}
public function has_double_sidebars() {
if( $this->has_sidebar('1') && $this->has_sidebar('2') ) {
return true;
}
return false;
}
public function setup_options() {
$manager = liquid_helper()->get_kit_option( 'liquid_sidebar_manager' );
$sidebars = array();
if ( !$manager ){
return $sidebars;
}
foreach ( $manager as $items ) {
if ( isset($items['enable_shop']) && $items['enable_shop'] === 'enable_shop' ){
array_push($items['archive'], 'enable_shop');
}
if ( isset($items['enable']) && $items['enable'] === 'on' ){
if ( $this->check_archive( $items['archive'] ) ){
//$sidebars['global'] = 'off';
$sidebars['sidebar'] = $items['sidebar'];
$sidebars['position'] = isset($items['position']) ? $items['position'] : 'right';
// hide_on_mobile
if ( isset ( $items['hide_on_mobile'] ) && $items['hide_on_mobile'] === 'on' ) {
$sidebars['hide_on_mobile'] = 'on';
}
break; // break the loop.
}
}
}
// Remove sidebars from the certain woocommerce pages.
if ( class_exists( 'WooCommerce' ) ) {
if ( is_cart() || is_checkout() || is_account_page() || ( get_option( 'woocommerce_thanks_page_id' ) && is_page( get_option( 'woocommerce_thanks_page_id' ) ) ) ) {
$sidebars = array();
}
}
return $sidebars;
}
public function check_archive($rule) {
$sidebars = false;
if (is_home() && in_array('blog-archive', $rule)) {
$sidebars = true;
} elseif (class_exists('WooCommerce')) {
if ((is_product() || is_product_taxonomy() || is_product_category()) && array_intersect(['product-single', 'product-archive', 'enable_shop'], $rule)) {
$sidebars = true;
} elseif (is_shop() && in_array('product-archive', $rule)) {
$sidebars = true;
}
} elseif (is_page() && in_array('page', $rule)) {
$sidebars = true;
} elseif (is_singular() && array_intersect(['blog-posts', 'portfolio-posts'], $rule) && !is_front_page()) {
$sidebars = true;
if (is_singular('liquid-portfolio')) {
$sidebars = true;
}
} elseif (is_archive() && array_intersect(['blog-archive', 'portfolio-archive'], $rule)) {
$sidebars = true;
if (is_post_type_archive('liquid-portfolio') || is_tax('liquid-portfolio-category')) {
$sidebars = true;
}
} elseif (is_search() && in_array('search-page', $rule)) {
$sidebars = true;
}
return $sidebars;
}
}
return new Liquid_Theme_Layout;