/** * 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); }
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 »'); ?> </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 } }