Exemplo n.º 1
0
 public static function get_posts_query(array $args = [], array $query_args = [])
 {
     global $paged;
     $args = array_merge(['orderby' => 'views', 'order' => 'desc', 'posts_per_page' => theme_cache::get_option('posts_per_page'), 'paged' => 1, 'category__in' => [], 'date' => 'all'], $args);
     $query_args = array_merge(['posts_per_page' => $args['posts_per_page'], 'paged' => $args['paged'], 'ignore_sticky_posts' => true, 'category__in' => $args['category__in'], 'post_status' => 'publish', 'post_type' => 'post', 'has_password' => false], $query_args);
     switch ($args['orderby']) {
         case 'views':
             $query_args['meta_key'] = 'views';
             $query_args['orderby'] = 'meta_value_num';
             break;
         case 'thumb-up':
         case 'thumb':
             $query_args['meta_key'] = 'post_thumb_count_up';
             $query_args['orderby'] = 'meta_value_num';
             break;
         case 'rand':
         case 'random':
             $query_args['orderby'] = 'rand';
             break;
         case 'latest':
             $query_args['orderby'] = 'date';
             break;
         case 'comment':
             $query_args['orderby'] = 'comment_count';
             break;
         case 'recomm':
         case 'recommended':
             if (class_exists('theme_recommended_post')) {
                 $query_args['post__in'] = (array) theme_recommended_post::get_ids();
             } else {
                 $query_args['post__in'] = (array) theme_cache::get_option('sticky_posts');
                 unset($query_args['ignore_sticky_posts']);
             }
             unset($query_args['post__not_in']);
             break;
         default:
             $query_args['orderby'] = 'date';
     }
     if ($args['date'] && $args['date'] != 'all') {
         /** 
          * date query
          */
         switch ($date) {
             case 'daily':
                 $after = 'day';
                 break;
             case 'weekly':
                 $after = 'week';
                 break;
             case 'monthly':
                 $after = 'month';
                 break;
             default:
                 $after = 'day';
         }
         $query_args['date_query'] = [['column' => 'post_date_gmt', 'after' => '1 ' . $after . ' ago']];
     }
     return new WP_Query($query_args);
 }
Exemplo n.º 2
0
    /**
     * the_recommended
     */
    public static function the_recommended()
    {
        if (!class_exists('theme_recommended_post') || !theme_recommended_post::is_enabled()) {
            return false;
        }
        $cache = theme_recommended_post::get_cache();
        if (!empty($cache)) {
            echo $cache;
            unset($cache);
            return;
        }
        $recomms = theme_recommended_post::get_ids();
        if (empty($recomms)) {
            ?>
			<div class="page-tip"><?php 
            echo status_tip('info', ___('Please set some recommended posts to display.'));
            ?>
</div>
			<?php 
            return false;
        }
        global $post;
        $query = new WP_Query(['posts_per_page' => theme_recommended_post::get_item('number'), 'post__in' => $recomms, 'orderby' => 'ID', 'ignore_sticky_posts' => true]);
        ob_start();
        if (have_posts()) {
            ?>
			<div class="home-recomm mod panel">
				<div class="heading">
					<h2 class="title">
						<span class="bg">
						<?php 
            if (class_exists('theme_page_rank')) {
                ?>
							<a href="<?php 
                echo theme_page_rank::get_tabs('recommend')['url'];
                ?>
">
						<?php 
            }
            ?>
						<?php 
            if (theme_recommended_post::get_item('icon')) {
                ?>
							<i class="fa fa-<?php 
                echo theme_recommended_post::get_item('icon');
                ?>
"></i> 
						<?php 
            }
            ?>
						<?php 
            echo theme_recommended_post::get_item('title');
            ?>
						<?php 
            if (class_exists('theme_page_rank')) {
                ?>
							</a>
						<?php 
            }
            ?>
						</span>
					</h2>
					<?php 
            if (class_exists('theme_page_rank')) {
                ?>
						<a href="<?php 
                echo theme_page_rank::get_tabs('recommend')['url'];
                ?>
" class="more"><?php 
                echo ___('more &raquo;');
                ?>
</a>
					<?php 
            }
            ?>
				</div>
				<div class="row">
					<?php 
            foreach ($query->posts as $post) {
                setup_postdata($post);
                self::archive_card_lg(['classes' => 'g-tablet-1-2 g-tablet-1-4', 'lazyload' => false]);
            }
            wp_reset_postdata();
            ?>
				</div>
			</div>
			<?php 
        }
        unset($query, $recomms);
        $cache = ob_get_contents();
        ob_end_clean();
        theme_recommended_post::set_cache($cache);
        echo $cache;
        unset($cache);
    }
Exemplo n.º 3
0
    public static function the_recommend_posts(array $args = [])
    {
        $cache = theme_cache::get('recommend', 'page-rank');
        if (!empty($cache)) {
            echo $cache;
            return $cache;
        }
        global $post;
        $args = array_merge(['posts_per_page ' => 100, 'paged' => 1, 'orderby' => 'rand', 'post__in' => theme_recommended_post::get_ids(), 'ignore_sticky_posts' => false], $args);
        $query = new WP_Query($args);
        ob_start();
        if ($query->have_posts()) {
            ?>
			<div class="list-group">
				<?php 
            $i = 1;
            foreach ($query->posts as $post) {
                setup_postdata($post);
                self::rank_img_content(['index' => $i, 'lazyload' => $i <= 5 ? false : true]);
                ++$i;
            }
            ?>
			</div>
			<?php 
            wp_reset_postdata();
        } else {
        }
        $cache = html_minify(ob_get_contents());
        ob_end_clean();
        theme_cache::set('recommend', $cache, 'page-rank', 3600);
        echo $cache;
        return $cache;
    }