XylotrechusZ
<?php
if( ! defined( 'ABSPATH' ) ) { exit; } // Exit if accessed directly
if( ! function_exists( 'avia_modify_front' ) )
{
/**
* This function checks what to display on the frontpage
* Its a new and much simpler function to redirect front and blog pages,
* by simply filtering the settings->readings options and replacing them with the avia theme options
*
* @since ????
*/
function avia_modify_front()
{
if( ! is_admin() )
{
if( avia_get_option('frontpage') )
{
add_filter( 'pre_option_show_on_front', 'avia_show_on_front_filter' );
add_filter( 'pre_option_page_on_front', 'avia_page_on_front_filter' );
if( avia_get_option( 'blogpage' ) )
{
add_filter( 'pre_option_page_for_posts', 'avia_page_for_posts_filter' );
}
}
}
}
/**
* @since ????
* @param string $val
* @return string
*/
function avia_show_on_front_filter( $val )
{
return 'page';
}
/**
* @since ????
* @param string $val
* @return string
*/
function avia_page_on_front_filter( $val )
{
return avia_get_option('frontpage');
}
/**
* @since ????
* @param string $val
* @return string
*/
function avia_page_for_posts_filter( $val )
{
return avia_get_option('blog_style') !== 'custom' ? avia_get_option('blogpage') : ''; //use the layout editor to build a blog?
}
add_action( 'init', 'avia_modify_front', 10, 0 );
}
if( ! function_exists( 'avia_search_query_filter' ) )
{
/**
* makes sure that empty searches are sent to the search page as well
*
* @since ????
* @param WP_Query $query
* @return WP_Query|null
*/
function avia_search_query_filter( $query )
{
//don't check query on admin page - otherwise we'll break the sort/filter options on the Pages > All Pages screen, etc.
if( is_admin() )
{
return;
}
// If 's' request variable is set but empty
if( isset( $_GET['s'] ) && empty( $_GET['s'] ) && empty( $_GET['adv_search'] ) && $query->is_main_query() && empty( $query->queried_object ) )
{
//set all query conditional to false to prevent php notices
foreach( $query as $key => &$query_attr )
{
if( strpos( $key, 'is_' ) === 0 )
{
$query_attr = false;
}
}
$query->is_search = true;
$query->set( 'post_type', 'fake_search_no_results' );
}
return $query;
}
add_filter( 'pre_get_posts', 'avia_search_query_filter' );
}
if( ! function_exists( 'avia_modify_breadcrumb' ) )
{
/**
* modifies the breadcrumb navigation of single portfolio entries and single blog entries
*
* @since ????
* @param array $trail
* @return array
*/
function avia_modify_breadcrumb( $trail )
{
$parent = get_post_meta( avia_get_the_ID(), 'breadcrumb_parent', true );
if( get_post_type() === 'portfolio' )
{
$page = '';
$front = avia_get_option( 'frontpage' );
if( empty( $parent ) && ! current_theme_supports( 'avia_no_session_support' ) && session_id() && ! empty( $_SESSION['avia_portfolio'] ) )
{
$page = $_SESSION['avia_portfolio'];
}
else
{
$page = $parent;
}
if( ! $page || $page == $front )
{
$args = array(
'post_type' => 'page',
'meta_query' => array(
array(
'key' => '_avia_builder_shortcode_tree',
'value' => 'av_portfolio',
'compare' => 'LIKE'
)
)
);
$query = new WP_Query( $args );
if( $query->post_count == 1 )
{
$page = $query->posts[0]->ID;
}
else if( $query->post_count > 1 )
{
foreach( $query->posts as $entry )
{
if( $front != $entry->ID )
{
$page = $entry->ID;
break;
}
}
}
}
if( $page )
{
if( $page == $front )
{
$newtrail[0] = $trail[0];
$newtrail['trail_end'] = $trail['trail_end'];
$trail = $newtrail;
}
else
{
$newtrail = Avia_Breadcrumb_Trail()->get_parents( $page, '' );
array_unshift( $newtrail, $trail[0] );
$newtrail['trail_end'] = $trail['trail_end'];
$trail = $newtrail;
}
}
}
else if( get_post_type() === 'post' && ( is_category() || is_archive() || is_tag() ) )
{
$front = avia_get_option( 'frontpage' );
$blog = ! empty( $parent) ? $parent : avia_get_option( 'blogpage' );
if( $front && $blog && $front != $blog )
{
$blog = '<a href="' . get_permalink( $blog ) . '" title="' . esc_attr( get_the_title( $blog ) ) . '">' . get_the_title( $blog ) . '</a>';
array_splice( $trail, 1, 0, array( $blog ) );
}
}
else if( get_post_type() === 'post' )
{
$front = avia_get_option('frontpage');
$blog = avia_get_option('blogpage');
$custom_blog = avia_get_option( 'blog_style' ) === 'custom' ? true : false;
if( ! $custom_blog )
{
if( $blog == $front )
{
unset( $trail[1] );
}
}
else
{
if( $blog != $front )
{
$blog = '<a href="' . get_permalink( $blog ) . '" title="' . esc_attr( get_the_title( $blog ) ) . '">' . get_the_title( $blog ) . '</a>';
array_splice( $trail, 1, 0, array( $blog ) );
}
}
}
return $trail;
}
add_filter( 'avia_breadcrumbs_trail', 'avia_modify_breadcrumb' );
}
if( ! function_exists( 'avia_layout_class' ) )
{
/*
* support function that checks if the current page
* should have a post or page layout and returns the
* string so avia_template_set_page_layout can check it
*
* the function is called for each main layout div
* and then delivers the grid classes defined in functions.php
*
* @since ????
* @param string
* @param boolean
* @return string
*/
function avia_layout_class( $key, $echo = true )
{
global $avia_config;
if( ! isset( $avia_config['layout']['current']['main'] ) )
{
avia_set_layout_array();
}
$return = $avia_config['layout']['current'][ $key ];
if( $echo == true )
{
echo $return;
}
return $return;
}
}
if( ! function_exists( 'avia_offset_class' ) )
{
/*
* retrieves the offset length of an element based on the current page layout
*
* @since ????
* @param string
* @param boolean
* @return string
*/
function avia_offset_class( $key, $echo = true )
{
$alpha = '';
$offset = avia_layout_class( $key, false );
if( strpos( $offset, 'alpha' ) !== false )
{
$offset = str_replace( 'alpha', '', $offset );
$alpha = ' alpha';
}
$offset = 'offset-by-' . trim( $offset ) . $alpha;
if( $echo == true )
{
echo $offset;
}
return $offset;
}
}
if( ! function_exists( 'avia_set_layout_array' ) )
{
/*
* The function checks which layout is applied to the template (eg: fullwidth, right_sidebar, left_sidebar)
* If no layout is applied it checks for the default layout, set in the general options
*
* The final value is then stored in $avia_config['layout']['current'] where it can be accessed by the avia_layout function
*
* @since ????
* @param string|false
* @param string|false
* @return string
*/
function avia_set_layout_array( $post_type = false, $post_id = false )
{
global $avia_config;
//check which string to use
$result = false;
$layout = 'blog_layout';
if( empty( $post_id ) )
{
$post_id = avia_get_the_ID();
}
if( is_page() || is_search() || is_404() || is_attachment() )
{
$layout = 'page_layout';
}
if( is_archive() )
{
$layout = 'archive_layout';
}
if( is_single() )
{
$layout = 'single_layout';
}
//on a single page check if the layout is overwritten
if( is_singular() )
{
$result = get_post_meta( $post_id, 'layout', true );
}
//if we got no result from the previous get_post_meta query or we are not on a single post get the setting defined on the option page
if( ! $result )
{
$result = avia_get_option( $layout );
}
//if we stil got no result, probably because no option page was saved
if( ! $result )
{
$result = 'sidebar_right';
}
if( $result )
{
$avia_config['layout']['current'] = $avia_config['layout'][ $result ];
$avia_config['layout']['current']['main'] = $result;
}
$avia_config['layout'] = apply_filters( 'avia_layout_filter', $avia_config['layout'], $post_id );
}
}
if( ! function_exists( 'avia_has_sidebar' ) )
{
/**
*
* @since ????
* @return boolean
*/
function avia_has_sidebar()
{
global $avia_config;
return strpos( $avia_config['layout']['current']['main'], 'sidebar' ) !== false ? true : false;
}
}
if( ! function_exists( 'avia_disable_portfolio_sessions' ) )
{
/**
* disbales the session cookie for breadcrumb when breadcrumb navigation is disabled globaly
* @author Kriesi
* @since 4.4
*/
function avia_disable_portfolio_sessions()
{
$bc = avia_get_option( 'header_title_bar' );
if( strpos( $bc, 'breadcrumb' ) === false )
{
add_theme_support( 'avia_no_session_support' );
}
}
add_action( 'init', 'avia_disable_portfolio_sessions', 10 );
}