コード例 #1
0
ファイル: functions.php プロジェクト: ClayMoreBoy/mx
 /** 
  * smart_page_pagination
  */
 public static function smart_page_pagination($args = [])
 {
     global $post, $page, $numpages;
     $output = [];
     $args = array_merge(['add_fragment' => 'post-' . $post->ID, 'same_category' => false], $args);
     $output['numpages'] = $numpages;
     $output['page'] = $page;
     /** rand posts */
     $get_rand_post = function () {
         $query = theme_functions::get_posts_query(['posts_per_page' => 1, 'ignore_sticky_posts' => true, 'post_type' => 'post', 'orderby' => 'rand']);
         return $query->have_posts() ? $query->posts[0] : false;
     };
     /** 
      * prev post
      */
     $prev_post = get_previous_post(true);
     if (!$prev_post && $args['same_category'] === false) {
         $prev_post = get_previous_post();
     }
     /** random */
     if (!$prev_post) {
         $prev_post = $get_rand_post();
         $output['rand'] = 'prev-post';
     }
     if ($prev_post) {
         $output['prev_post'] = $prev_post;
     }
     /** 
      * next post
      */
     $next_post = get_next_post(true);
     if (!$next_post && $args['same_category'] === false) {
         $next_post = get_next_post();
     }
     /** random */
     if (!$next_post) {
         $next_post = $get_rand_post();
         $output['rand'] = 'next-post';
     }
     if ($next_post) {
         $output['next_post'] = $next_post;
     }
     /** 
      * exists multiple page
      */
     if ($numpages != 1) {
         /** 
          * if has prev page
          */
         if ($page > 1) {
             $prev_page_number = $page - 1;
             $output['prev_page']['url'] = theme_features::get_link_page_url($prev_page_number, $args['add_fragment']);
             $output['prev_page']['number'] = $prev_page_number;
         }
         /** 
          * if has next page
          */
         if ($page < $numpages) {
             $next_page_number = $page + 1;
             $output['next_page']['url'] = theme_features::get_link_page_url($next_page_number, $args['add_fragment']);
             $output['next_page']['number'] = $next_page_number;
         }
     }
     //var_dump($output);
     return array_filter($output);
 }
コード例 #2
0
    public static function frontend_display(array $args = [], $instance)
    {
        $instance = array_merge(['title' => ___('Posts rank'), 'posts_per_page' => 6, 'date' => 'all', 'orderby' => 'latest', 'category__in' => [], 'content_type' => 'img'], $instance);
        $title = esc_html($instance['title']);
        echo $args['before_title'];
        if (count($instance['category__in']) === 1 && isset($instance['category__in'][0])) {
            ?>
			<a class="link" href="<?php 
            echo get_category_link($instance['category__in'][0]);
            ?>
" title="<?php 
            echo sprintf(___('Views more about %s'), $title);
            ?>
">
				<i class="fa fa-bar-chart"></i> 
				<?php 
            echo $title;
            ?>
			</a>
			<a href="<?php 
            echo get_category_link($instance['category__in'][0]);
            ?>
" title="<?php 
            echo sprintf(___('Views more about %s'), $title);
            ?>
" class="more"><?php 
            echo ___('More &raquo;');
            ?>
</a>
		<?php 
        } else {
            ?>
			<i class="fa fa-bar-chart"></i> <?php 
            echo $title;
            ?>
		<?php 
        }
        ?>
		
		<?php 
        echo $args['after_title'];
        global $post;
        $query = theme_functions::get_posts_query(['category__in' => (array) $instance['category__in'], 'posts_per_page' => (int) $instance['posts_per_page'], 'date' => $instance['date'], 'orderby' => $instance['orderby']]);
        if ($query->have_posts()) {
            ?>
			<ul class="list-group list-group-<?php 
            echo $instance['content_type'];
            ?>
 widget-orderby-<?php 
            echo $instance['orderby'];
            ?>
">
				<?php 
            foreach ($query->posts as $post) {
                setup_postdata($post);
                if ($instance['content_type'] === 'tx') {
                    theme_functions::widget_rank_tx_content(['meta_type' => $instance['orderby']]);
                } else {
                    theme_functions::widget_rank_img_content();
                }
            }
            wp_reset_postdata();
            ?>
			</ul>
		<?php 
        } else {
            ?>
			<div class="page-tip not-found">
				<?php 
            echo status_tip('info', ___('No data yet.'));
            ?>
			</div>
		<?php 
        }
    }