File "query-loop.php"
Full Path: /home/elegucvf/public_html/video/wp-content/wp-includes/wp-content/themes/atlas/functions/query-loop.php
File size: 17.31 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Custom Query
*
* @package Atlas
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
/*
--------------------------------------------------------------------------------
* Custom Queries
* ------------------------------------------------------------------------------
*/
if ( ! function_exists( 'th90_query' ) ) {
function th90_query( $block = array() ) {
$args = array();
$default_query = false;
$block = wp_parse_args( $block, array(
'post_type' => '',
'number' => '',
'tags' => '',
'posts' => '',
'pages' => '',
'categories' => '',
'formats' => '',
'orderby' => '',
'order' => '',
'pagi' => '',
'offset' => '',
'post__not_in' => array(),
'vars_archive' => array(),
'vars_related' => array(),
));
$args['post_status'] = 'publish';
if ( ! empty( $block['vars_archive'] ) ) {
$args = $block['vars_archive'];
$default_query = true;
} elseif ( ! empty( $block['vars_related'] ) ) {
$args = $block['vars_related'];
if ( ! empty( $block['number'] ) ) {
$args['posts_per_page'] = $block['number'];
}
} else {
if ( ! empty( $block['posts'] ) ) {
// Posts : Post Query ----------
$selective_posts = explode( ',', $block['posts'] );
$selective_posts_number = count( $selective_posts );
$args['post__in'] = $selective_posts;
$args['posts_per_page'] = $selective_posts_number;
$args['ignore_sticky_posts'] = true;
} elseif ( ! empty( $block['pages'] ) ) {
// Pages : Post Query ----------
$selective_pages = explode( ',', $block['pages'] );
$selective_pages_number = count( $selective_pages );
$args['post__in'] = $selective_pages;
$args['posts_per_page'] = $selective_pages_number;
$args['post_type'] = 'page';
$args['ignore_sticky_posts'] = true;
} else {
$args['ignore_sticky_posts'] = true;
// Posts Number ----------
$block['number'] = ! empty( $block['number'] ) ? $block['number'] : get_query_var( 'posts_per_page' );
$args['posts_per_page'] = $block['number'];
// Posts Type ----------
if ( ! empty( $block['post_type'] ) ) {
$args['post_type'] = $block['post_type'];
}
// Posts Format ----------
if ( ! empty( $block['formats'] ) ) {
$args['tax_query'] = array(
array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => explode( ',', $block['formats'] ),
),
);
}
if ( ! empty( $block['tags'] ) ) {
// Tags : Post Query ----------
$args['tag'] = $block['tags'];
} else {
// Categories : Post Query ----------
if ( ! empty( $block['categories'] ) ) {
$args['category_name'] = $block['categories'];
}
}
$default_query = true;
}
}
if ( $default_query ) {
// Pagination ----------
if ( ! empty( $block['pagi'] ) ) {
$paged = 1;
if ( ! empty( $block['target_page'] ) ) {
$paged = intval( $block['target_page'] );
} elseif ( $block['pagi'] == 'numeric' ) {
$paged = intval( get_query_var( 'paged' ) );
$paged_2 = intval( get_query_var( 'page' ) );
if ( empty( $paged ) && ! empty( $paged_2 ) ) {
$paged = intval( get_query_var( 'page' ) );
}
}
$args['paged'] = $paged;
} else {
$args['no_found_rows'] = true ;
}
// Offset ----------
if ( ! empty( $block['offset'] ) && 0 != $block['offset'] ) {
if ( ! empty( $block['pagi'] ) && ! empty( $paged ) ) {
$args['offset'] = $block['offset'] + ( ($paged -1) * $block['number'] );
} else {
$args['offset'] = $block['offset'];
}
}
// Posts Order By ----------
if ( ! empty( $block['orderby'] ) ) {
if ( $block['orderby'] == 'rand' ) {
$args['orderby'] = 'rand';
}
elseif( $block['orderby'] == 'views' && TH90_POSTVIEWS_IS_ACTIVE ){
$args['orderby'] = 'post_views';
} elseif ( $block['orderby'] == 'best' ) {
$args['orderby'] = 'meta_value_num';
$args['meta_key'] = 'th90_review_total_score';
} elseif ( $block['orderby'] == 'popular' ) {
$args['orderby'] = 'comment_count';
} elseif ( $block['orderby'] == 'modified' ) {
$args['orderby'] = 'modified';
}
}
// Posts Order ----------
if ( ! empty( $block['order'] ) ) {
if ( $block['order'] == 'asc' || $block['order'] == 'ASC' ) {
$args['order'] = 'ASC';
} elseif ( $block['order'] == 'desc' || $block['order'] == 'DESC' ) {
$args['order'] = 'DESC';
} else {
$args['order'] = 'DESC';
}
}
// Do not duplicate posts ----------
$not_show_duplicate = false;
if ( ! empty( $GLOBALS['th90_do_not_duplicate_post'] ) && is_array( $GLOBALS['th90_do_not_duplicate_post'] ) && 'yes' == $block['not_show_duplicate'] ) {
$not_show_duplicate = true;
}
if ( ! empty( $block['post__not_in'] ) ) {
if ( $not_show_duplicate ) {
$args['post__not_in'] = array_merge( $GLOBALS['th90_do_not_duplicate_post'], $block['post__not_in'] );
} else {
$args['post__not_in'] = $block['post__not_in'];
}
} else {
if ( $not_show_duplicate ) {
$args['post__not_in'] = $GLOBALS['th90_do_not_duplicate_post'];
}
}
}
// Run the Query ----------
$block_query = new WP_Query( $args );
// Fix the number of pages WordPress Offset bug with pagination ----------
if ( ! empty( $block['pagi'] ) ) {
if ( ! empty( $block['offset'] ) ) {
// Modify the found_posts ----------
$found_posts = $block_query->found_posts;
$found_posts = $found_posts - $block['offset'];
$block_query->set( 'new_found_posts', $found_posts );
// Modify the max_num_pages ----------
$block_query->set( 'new_max_num_pages', ceil( $found_posts / $args['posts_per_page'] ) );
} else {
$block_query->set( 'new_max_num_pages', $block_query->max_num_pages );
}
}
return $block_query;
}
}
/*
--------------------------------------------------------------------------------
* Set posts IDs for the do not duplicate posts option
* ------------------------------------------------------------------------------
*/
if ( ! function_exists( 'th90_do_not_duplicate' ) ) {
function th90_do_not_duplicate( $post_id = false ) {
if ( empty( $post_id ) ) {
return;
}
if ( empty( $GLOBALS['th90_do_not_duplicate_post'] ) ) {
$GLOBALS['th90_do_not_duplicate_post'] = array();
}
$GLOBALS['th90_do_not_duplicate_post'][ $post_id ] = $post_id;
}
}
/*
--------------------------------------------------------------------------------
* Default Block Posts Args
* ------------------------------------------------------------------------------
*/
if ( ! function_exists( 'th90_post_block_atts_default' ) ) {
function th90_post_block_atts_default( $args, $prefix = '' ) {
$args_default = array(
'meta_modern' . $prefix => false,
'have_number' . $prefix => '',
'first_cat' . $prefix => false,
'first_cat_loc' . $prefix => '',
'cat_style' . $prefix => 'text',
'post_center' . $prefix => '',
'info_position' . $prefix => 'title',
'info_icon' . $prefix => false,
'trending' . $prefix => false,
'format' . $prefix => false,
'author' . $prefix => false,
'author_avatar' . $prefix => false,
'date' . $prefix => false,
'views' . $prefix => false,
'comments' . $prefix => false,
'review' . $prefix => false,
'time_format' . $prefix => false,
'title_tag' . $prefix => false,
'readmore' . $prefix => false,
'readmore_side' . $prefix => false,
'excerpt' . $prefix => '',
'thumbnail_circle' . $prefix => '',
'thumbnail_disable' . $prefix => false,
'thumbnail_type' . $prefix => 'image',
'image_size' . $prefix => 'post-thumbnail',
'image_ratio' . $prefix => 'ori',
'fetchpriority' . $prefix => false,
'sticky_sign' . $prefix => false,
'post_vertical_center' . $prefix => false,
'grid_type' . $prefix => '',
);
return array_merge( $args, array_diff_key( $args_default, $args ) );
}
}
/*
--------------------------------------------------------------------------------
* Parsing query for archive & related posts
* ------------------------------------------------------------------------------
*/
if ( ! function_exists( 'th90_archive_related_atts' ) ) {
function th90_archive_related_atts( $atts = array() ) {
if ( 'archive' == $atts['_query_for'] ) {
$atts['_filters'] = 'no';
$atts['sticky_sign'] = true;
if ( is_home() || is_archive() || is_search() ) {
global $wp_query;
$atts['vars_archive'] = array_filter( $wp_query->query_vars );
}
}
if ( 'related' == $atts['_query_for'] ) {
$atts['_filters'] = $atts['_sort'] = 'no';
if ( is_singular( 'post' ) ) {
if ( 'cat' === $atts['_query_related_by'] ) {
$related_by = get_the_terms( get_the_ID(), 'category' );
$param = 'category__in';
} else {
$related_by = get_the_terms( get_the_ID(), 'post_tag' );
$param = 'tag__in';
}
if ( $related_by ) {
$related_ids = array();
foreach ( $related_by as $related_id ) {
$related_ids[] = $related_id->term_id;
}
$atts['vars_related'] = array(
'post_type' => 'post',
$param => $related_ids,
'post__not_in' => array( get_the_ID() ),
'ignore_sticky_posts' => true,
'orderby' => 'rand',
);
}
}
}
return $atts;
}
}
/*
--------------------------------------------------------------------------------
* Corvert Blog Atts
* ------------------------------------------------------------------------------
*/
if ( ! function_exists( 'th90_blog_atts_convert' ) ) {
function th90_blog_atts_convert( $atts = array(), $sufix = '' ) {
/* Post Title Size */
$atts['title_tag' . $sufix] = 'default' == $atts['title_tag' . $sufix] ? false : $atts['title_tag' . $sufix];
/* Post Title Tag */
$atts['tag_title'] = 'h3';
if ( isset( $atts['_query_for'] ) ) {
if ( 'archive' == $atts['_query_for'] && ( is_home() || is_archive() || is_search() ) ) {
$atts['tag_title'] = 'h2';
}
}
/* Post Meta */
foreach ( th90_default_options()['post_infos'] as $key => $value ) {
$atts[$key . $sufix] = th90_multi_checkbox( $atts['post_info' . $sufix], $key );
}
/* Post Style */
$atts['article_class'] = $atts['post_style'];
if ( strpos( $atts['post_style'], 'list' ) !== false ) {
if( isset( $atts['post_vertical_center'] ) && 'yes' == $atts['post_vertical_center'] ) {
$atts['article_class'] .= ' post-vertical-center';
}
}
return $atts;
}
}
/*
--------------------------------------------------------------------------------
* Render Posts Template
* ------------------------------------------------------------------------------
*/
if ( ! function_exists( 'th90_render_posts_template' ) ) {
function th90_render_posts_template( $atts, $count, $query ) {
if ( strpos( $atts['post_style'], 'group' ) !== false ) {
$box_inside = false;
if ( 'hero' == $atts['group_big'] && 'small1' == $atts['group_small'] ) {
$box_inside = true;
}
if ( ( 1 == $count && 'group5' !== $atts['post_style'] ) || ( 'group2' == $atts['post_style'] && 2 == $count ) || ( 'group3' == $atts['post_style'] && 2 == $count ) || ( 'group3' == $atts['post_style'] && 3 == $count ) || ( 'group5' == $atts['post_style'] && $count%3 == 0 ) ) {
get_template_part( 'template-parts/posts/post', $atts['group_big'], array(
'block' => $atts,
'count' => $count,
'sufix' => '_b',
) );
} else {
if ( ( $box_inside && ( 'group1' == $atts['post_style'] || 'group4' == $atts['post_style'] ) && 2 == $count ) || ( $box_inside && 'group2' == $atts['post_style'] && 3 == $count ) || ( $box_inside && 'group3' == $atts['post_style'] && 4 == $count ) ) {
echo '<div class="' . esc_attr( implode( ' ', array_filter( th90_box_class( $atts ) ) ) ) . '"><div class="post-list-childs">';
}
if ( ! $box_inside && 'group4' == $atts['post_style'] && 2 == $count ) {
echo '<div class="post-list-childs">';
}
get_template_part( 'template-parts/posts/post', $atts['group_small'], array(
'block' => $atts,
'count' => $count,
'sufix' => '_s',
) );
if ( ( $box_inside && ( 'group1' == $atts['post_style'] || 'group4' == $atts['post_style'] ) && $query->post_count == $count ) || ( $box_inside && 'group2' == $atts['post_style'] && $query->post_count == $count ) || ( $box_inside && 'group3' == $atts['post_style'] && $query->post_count == $count ) ) {
echo '</div></div>';
}
if ( ! $box_inside && 'group4' == $atts['post_style'] && $query->post_count == $count ) {
echo '</div>';
}
}
} else {
if ( $count == $atts['post_ads_pos'] && 'yes' == $atts['post_ads'] ) {
if ( 'yes' == $atts['b_ads_custom'] ) {
get_template_part( 'template-parts/banner', '', array(
'block' => $atts,
) );
} else {
th90_render_ads( $atts['b_ads'] );
}
}
get_template_part( 'template-parts/posts/post', $atts['post_style'], array(
'block' => $atts,
'count' => $count,
) );
}
}
}
/*
--------------------------------------------------------------------------------
* Redux Posts Loop
* ------------------------------------------------------------------------------
*/
if ( ! function_exists( 'th90_render_posts_loop' ) ) {
function th90_render_posts_loop( $query, $atts = array(), $is_main_query = false ) {
?>
<div class="posts-container">
<?php
$count = 0;
if ( $query->have_posts() ) {
$posts_list_classes = array(
'posts-list',
( strpos( $atts['post_style'], 'group' ) !== false ) || ( isset( $atts['is_grid'] ) && $atts['is_grid'] ) ? 'post-list-grids' : 'post-list-columns',
);
echo '<div class="' . esc_attr( implode( ' ', array_filter( $posts_list_classes ) ) ) . '">';
while ( $query->have_posts() ) :
$query->the_post();
$count++;
th90_render_posts_template( $atts, $count, $query );
// Do not duplicate posts ----------
if ( isset( $atts['not_show_duplicate'] ) && 'yes' == $atts['not_show_duplicate'] ) {
th90_do_not_duplicate( get_the_ID() );
}
endwhile;
if ( ! $is_main_query ) {
wp_reset_postdata();
}
echo '</div>';
} else {
get_template_part( 'template-parts/content', 'none' );
}
?>
</div>
<?php
}
}
/*
--------------------------------------------------------------------------------
* Render Pagination
* ------------------------------------------------------------------------------
*/
if ( ! function_exists( 'th90_render_pagination' ) ) {
function th90_render_pagination( $query, $atts = array() ) {
if ( ! empty( $atts['pagi'] ) && 'infinite' != $atts['pagi'] && $query->max_num_pages > 1 ) {
?>
<div class="box-disable nav-wrap nav-wrap-<?php echo( esc_attr( $atts['pagi'] ) ); ?> text-<?php echo( esc_attr( $atts['_pagi_align'] ) ); ?>">
<div class="nav-wrap-inner">
<?php
$btn_classes = array(
'button',
'module-pagi',
'btn-pagi',
'show-more',
'btn-' . $atts['pagi_style'],
);
if ( $atts['pagi'] == 'numeric' ) {
th90_numeric_pagination( $query );
} elseif ( $atts['pagi'] == 'show-more' ) {
?>
<div class="<?php echo esc_attr( implode( ' ', array_filter( $btn_classes ) ) ); ?> next-posts" data-text="<?php echo esc_attr( $atts['_pagi_show_text'] ); ?>">
<span class="more-text text-btn"><?php echo esc_html( $atts['_pagi_show_text'] ); ?></span>
</div>
<?php
} elseif ( $atts['pagi'] == 'load-more' ) {
?>
<div class="<?php echo esc_attr( implode( ' ', array_filter( $btn_classes ) ) ); ?> load-more next-posts" data-text="<?php echo esc_html( $atts['_pagi_load_text'] ); ?>">
<span class="more-text text-btn"><?php echo esc_html( $atts['_pagi_load_text'] ); ?></span>
</div>
<?php
} else {
?>
<div class="<?php echo esc_attr( implode( ' ', array_filter( $btn_classes ) ) ); ?> nextprev-more prev-posts btn-disabled" data-text="<?php echo esc_attr( $atts['_pagi_prev_text'] ); ?>">
<span class="more-text text-btn"><?php echo esc_attr( $atts['_pagi_prev_text'] ); ?></span>
</div>
<div class="<?php echo esc_attr( implode( ' ', array_filter( $btn_classes ) ) ); ?> nextprev-more next-posts" data-text="<?php echo esc_attr( $atts['_pagi_next_text'] ); ?>">
<span class="more-text text-btn"><?php echo esc_attr( $atts['_pagi_next_text'] ); ?></span>
</div>
<?php
}
?>
</div>
</div>
<?php
}
if ( 'infinite' == $atts['pagi'] ) {
?>
<div class="nav-wrap nav-wrap-infinite text-center">
<div class="nav-wrap-inner">
<div class="module-infinite show-more load-more next-posts">
</div>
</div>
</div>
<?php
}
}
}
/*
--------------------------------------------------------------------------------
* Render ajax JSON Pagination
* ------------------------------------------------------------------------------
*/
if ( ! function_exists( 'th90_json_pagination' ) ) {
function th90_json_pagination( $block_id, $atts = array() ) {
$js_block = array();
foreach ( $atts as $key => $value ) {
if( '_' != substr($key, 0, 1) ) {
$js_block[$key] = $value;
}
}
?>
<script>var js_th90_block_<?php echo esc_js( $block_id ); ?> = <?php echo wp_json_encode( $js_block ); ?></script>
<?php
}
}