Phân trang output html boostrap 4, để đây tiện thể copy nhé anh em, tât nhiên anh em phải inlcude thư viện boostrap vào nha
Nhớ thay đổi namespace AutoSendEmailNewPostToSubscribers\Includes\Classes cho phù hợp với dự án của bạn nhé
Kết quả như hình dưới anh em
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
<?php namespace AutoSendEmailNewPostToSubscribers\Includes\Classes; class Pagination { private $config = array( 'total' => 0, 'limit' => 0, 'full' => false, 'querystring' => 'p', 'url' => '', 'prev' => 'Prev', 'next' => 'Next' ); public function __construct($config = array()) { if (isset($config['limit']) && $config['limit'] < 0 || isset($config['total']) && $config['total'] < 0) { die('limit và total không được nhỏ hơn 0'); } if (!isset($config['querystring'])) { $config['querystring'] = 'page'; } $this->config = $config; } private function gettotalPage() { return ceil($this->config['total'] / $this->config['limit']); } private function getCurrentPage() { if (isset($_GET[$this->config['querystring']]) && (int) $_GET[$this->config['querystring']] >= 1) { if ((int) $_GET[$this->config['querystring']] > $this->gettotalPage()) { return (int) $this->gettotalPage(); } else { return (int) $_GET[$this->config['querystring']]; } } else { return 1; } } private function getPrePage() { if ($this->getCurrentPage() === 1) { return; } else { return '<li class="page-item"><a class="page-link" href="' . $this->config['url'] . '&' . $this->config['querystring'] . '=' . ($this->getCurrentPage() - 1) . '" >'.$this->config['prev'].'</a></li>'; } } private function getNextPage() { if ($this->getCurrentPage() >= $this->gettotalPage()) { return; } else { return '<li class="page-item"><a class="page-link" href="' . $this->config['url'] . '&' . $this->config['querystring'] . '=' . ($this->getCurrentPage() + 1) . '" >'.$this->config['next'].'</a></li>'; } } public function getPagination() { $data = ''; if (isset($this->config['full']) && $this->config['full'] === false) { $data .= ($this->getCurrentPage() - 3) > 1 ? '<li>...</li>' : ''; for ($i = ($this->getCurrentPage() - 3) > 0 ? ($this->getCurrentPage() - 3) : 1; $i <= (($this->getCurrentPage() + 3) > $this->gettotalPage() ? $this->gettotalPage() : ($this->getCurrentPage() + 3)); $i++) { if ($i === $this->getCurrentPage()) { $data .= '<li class="page-item active" ><a class="page-link" href="#" >' . $i . '</a></li>'; } else { $data .= '<li class="page-item"><a class="page-link" href="' . $this->config['url'] . '&' . $this->config['querystring'] . '=' . $i . '" >' . $i . '</a></li>'; } } $data .= ($this->getCurrentPage() + 3) < $this->gettotalPage() ? '<li>...</li>' : ''; } else { for ($i = 1; $i <= $this->gettotalPage(); $i++) { if ($i === $this->getCurrentPage()) { $data .= '<li class="page-item active" ><a class="page-link" href="#" >' . $i . '</a></li>'; } else { $data .= '<li class="page-item"><a class="page-link" href="' . $this->config['url'] . '&' . $this->config['querystring'] . '=' . $i . '" >' . $i . '</a></li>'; } } } if($this->gettotalPage() > 1){ return '<nav><ul class="pagination">' . $this->getPrePage() . $data . $this->getNextPage() . '</ul></nav>'; }else{ return ''; } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
global $wpdb; $page = isset($_GET['p']) ? $_GET['p'] : 1; $posts_per_page = 30; $offset = ($page == 1) ? 0 : (($page*$posts_per_page)- $posts_per_page); $sql = "SELECT * FROM `".$wpdb->prefix."asenpts_report_campaigns` ORDER BY `id` DESC"; $total_campaigns = $wpdb->get_results($sql); $total_campaigns = count($total_campaigns); $sql = "SELECT * FROM `".$wpdb->prefix."asenpts_report_campaigns` ORDER BY `id` DESC LIMIT {$offset}, {$posts_per_page}"; //var_dump($sql); $campaigns = $wpdb->get_results($sql); $config = array( 'total' => $total_campaigns, 'limit' => $posts_per_page, 'full' => true, //bỏ qua nếu không muốn hiển thị full page 'querystring' => 'p', //bỏ qua nếu GET của bạn là page, 'url' => admin_url('admin.php?page=asenpts-reports'), 'prev' => __('Previous','asenpts'), 'next' => __('Next','asenpts'), ); include ASENPTS_CLASSES_DIR."pagination.php"; $page = new Pagination($config); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
$page = isset($_GET['p']) ? $_GET['p'] : 1; $posts_per_page = 30; $offset = ($page == 1) ? 0 : ($page*$posts_per_page) -1; $args = array( 'post_type' => 'appointmentreminder', 'posts_per_page' => -1, 'post_status' => 'publish' ); $total = get_posts($args); $total = count($total); $args = array( 'post_type' => 'appointmentreminder', 'posts_per_page' => $posts_per_page, 'offset' => $offset, 'post_status' => 'publish' ); $rows = get_posts($args); $config = array( 'total' => $total, 'limit' => $posts_per_page, 'full' => true, //bỏ qua nếu không muốn hiển thị full page 'querystring' => 'p', //bỏ qua nếu GET của bạn là page, 'url' => admin_url('admin.php?page=appointment-reminders'), 'prev' => __('Prev'), 'next' => __('Next'), ); $pages = new Pagination($config); |
1 |
<?php echo $pages->getPagination(); ?> |
Ok xong rồi đó
Mọi sự sao chép xin ghi rõ nguồn là fcwordpress.net
Chuyên trang về wordpress: hướng dẫn thiết kế theme, plugin, thủ thuật wordpress