1. Phân trang kiểu JohnCMS
Chèn đoạn code này vào file functions.php trong theme của bạn (chỗ nào tùy tâm)
Sau đó chèn code này vào nơi hiện thị list bài viết của bạn:
<?php wapvn_page_nav(); ?>
Nếu bạn đã cài wp_pagenavi thì chính chỗ đó đấy.
2. Phân trang bài viết dài kiểu như trên.
Đối với 1 bài viết rất dài, kiểu phân trang mặc định của WordPress rất là xấu, nó hiển thị toàn bộ link page nhìn giống như 1 cái lưới. Bạn có thể dùng cái này để thay thế:
Chèn đoạn code này vào file functions.php trong theme của bạn (chỗ nào tùy tâm):
Sau đó chèn code này ngay bên dưới cái the_content(); của bạn:
<?php wapvn_link_pages(); ?>
Thay thê cho cái wp_link_pages(); mặc định của WP ấy mà!
À quên đây là đoạn CSS cho Pagenav nhé! Chèn vào file CSS của bạn .
3. Tự động chia trang bài viết dài theo ký tự:
Cái này để phục vụ cho cái phía trên dành cho các site truyện
Chèn đoạn code này vào cuối cùng của file wp-includes/query.php (hoặc chỗ nào tùy tâm):
Mặc định 500 kí tự / trang - sửa lại theo ý bạn
Sau đó tại func setup_postdata() tìm đoạn này $content = $post->post_content; (nó ở ngay trên thui, dưới cùng của file query.php ấy:
Sửa:
Thành:
Live Demo:
- Phân trang Page Nav kiểu JohnCMS: Xem demo (ít bài viết để 2bv / trang để các bạn nhìn toàn cảnh Pagenav)
- Phân trang bài viết dài Auto chia trang theo kí tự: Xem demo
Nguồn: QDK
Chèn đoạn code này vào file functions.php trong theme của bạn (chỗ nào tùy tâm)
Code:
[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]function wapvn_page_nav() {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] global $wp_query, $paged;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $total = $wp_query->max_num_pages;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if(!$total) $total = 1;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if(empty($paged)) $paged = 1;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if($total > 1) {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $out = array();[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if($total > 5) {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if($paged > 1) $out[] = '<a class="pagenav" href="' . get_pagenum_link($paged - 1) . '"><<</a>';[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if($paged > 3) $out[] = '<a class="pagenav" href="' . get_pagenum_link(1) . '">1</a>';[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if($paged > 4) $out[] = '<span style="font-weight: bold;">←</span>';[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] }[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] for ($i = 1; $i < ($total + 1); $i++) {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if (!($i >= ($paged + 3) || $i <= ($paged - 3)) || $total <= 5) {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if ($i == $paged) {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $out[] = '<span class="currentpage"><b>' . $i . '</b></span>';[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] } else {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $out[] = '<a class="pagenav" href="' . get_pagenum_link($i) . '">' . $i . '</a>';[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] }[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] }[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] }[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if ($total > 5) {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if ($total > ($paged + 3)) $out[] = '<span style="font-weight: bold;">→</span>';[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if ($total > ($paged + 2)) $out[] = '<a class="pagenav" href="' . get_pagenum_link($total) . '">' . $total . '</a>';[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if ($total > $paged) $out[] = '<a class="pagenav" href="' . get_pagenum_link($paged + 1) . '">>></a>';[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] }[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] echo '<div class="topmenu">' . implode(' ', $out) . '</div>';[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] }[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]}[/FONT][/COLOR]
Sau đó chèn code này vào nơi hiện thị list bài viết của bạn:
<?php wapvn_page_nav(); ?>
Nếu bạn đã cài wp_pagenavi thì chính chỗ đó đấy.
2. Phân trang bài viết dài kiểu như trên.
Đối với 1 bài viết rất dài, kiểu phân trang mặc định của WordPress rất là xấu, nó hiển thị toàn bộ link page nhìn giống như 1 cái lưới. Bạn có thể dùng cái này để thay thế:
Chèn đoạn code này vào file functions.php trong theme của bạn (chỗ nào tùy tâm):
Code:
[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]function wapvn_link_pages() {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] global $page, $numpages, $multipage;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if ( $multipage ) {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $out = array();[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if($numpages > 5) {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if($page > 1) $out[] = '<a class="pagenav" href="' . wapvn_get_link_page($numpages - 1) . '"><<</a> ';[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if($page > 3) $out[] = '<a class="pagenav" href="' . wapvn_get_link_page(1) . '">1</a> ';[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if($page > 4) $out[] = '<span style="font-weight: bold;">←</span> ';[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] }[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] for ($i = 1; $i <= $numpages; $i++) {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if (!($i >= ($page + 3) || $i <= ($page - 3)) || $numpages <= 5) {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if ($i == $page) {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $out[] = '<span class="currentpage"><b>' . $i . '</b></span>';[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] } else {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $out[] = '<a class="pagenav" href="' . wapvn_get_link_page($i) . '">' . $i . '</a>';[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] }[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] }[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] }[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if ($numpages > 5) {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if ($numpages > ($page + 3)) $out[] = '<span style="font-weight: bold;">→</span>';[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if ($numpages > ($page + 2)) $out[] = '<a class="pagenav" href="' . wapvn_get_link_page($numpages) . '">' . $numpages . '</a>';[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if ($numpages > $page) $out[] = '<a class="pagenav" href="' . wapvn_get_link_page($page + 1) . '">>></a>';[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] }[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] echo '<div class="topmenu">' . implode(' ', $out) . '</div>';[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] }[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]}[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]/**[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]* Hiển thị link[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]* Sử dụng cho wapvn_link_pages()[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]*/[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]function wapvn_get_link_page($pg) {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] global $wp_rewrite;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $post = get_post();[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if (1 == $pg) {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $url = get_permalink();[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] } else {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if ('' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')))[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $url = add_query_arg('page', $pg, get_permalink());[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] elseif ('page' == get_option('show_on_front') && get_option('page_on_front') == $post->ID)[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $url = trailingslashit(get_permalink()) . user_trailingslashit("$wp_rewrite->pagination_base/" . $pg, 'single_paged');[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] else[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $url = trailingslashit(get_permalink()) . user_trailingslashit($pg, 'single_paged');[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] }[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] return esc_url($url);[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]}[/FONT][/COLOR]
Sau đó chèn code này ngay bên dưới cái the_content(); của bạn:
<?php wapvn_link_pages(); ?>
Thay thê cho cái wp_link_pages(); mặc định của WP ấy mà!
À quên đây là đoạn CSS cho Pagenav nhé! Chèn vào file CSS của bạn .
Code:
.topmenu {
Code:
[COLOR=#141414][FONT=Arial] background-color: #f9d9b0;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] font-size: 11px;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] padding: 4px;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] border: 1px solid #fff;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]}[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]
[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial].currentpage {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] background-color: #f9d9b0;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] border: 1px solid #f9bc6d;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] padding: 0px 5px 0px 5px;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] color: #8f6c3f;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]}[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]
[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]a.pagenav {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] background-color: #f0f7fc;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] border: 1px solid #6cb2e4;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] padding: 0px 5px 0px 5px;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] color: #2b485c;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] text-decoration: none;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]}[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]
[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]a.pagenav:hover {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] background-color: #fff4e5;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] border: 1px solid #f9d9b0;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] color: #8f6c3f;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]}[/FONT][/COLOR]
3. Tự động chia trang bài viết dài theo ký tự:
Cái này để phục vụ cho cái phía trên dành cho các site truyện
Chèn đoạn code này vào cuối cùng của file wp-includes/query.php (hoặc chỗ nào tùy tâm):
Mặc định 500 kí tự / trang - sửa lại theo ý bạn
Code:
[/FONT][/COLOR][COLOR=#141414][FONT=Arial]function wapvn_page_content($content) {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $max_str = 5000; // Số ký tự trên trang[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $max_page = ceil(mb_strlen($content) / $max_str);[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if ($max_page > 1) {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $content = str_replace('<!--nextpage-->', ' ', $content);[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $tmp_text = array();[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] for ($i = 1; $i <= $max_page; $i++) {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $start_pos = $i == 1 ? 0 : $i * $max_str - $max_str;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $subtext = mb_substr($content, $start_pos, ($max_str + 150));[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if ($i == 1) {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $int_start = 0;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] } else {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if (($pos1 = mb_strpos($subtext, ' ')) === false) $pos1 = 150;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $int_start = $pos1;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] }[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if ($i == $max_page) {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $int_lenght = $max_str;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] } else {[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $tmp = mb_substr($subtext, $max_str, 150);[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] if (($pos2 = mb_strpos($tmp, ' ')) === false) $pos2 = 150;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $int_lenght = $max_str + $pos2 - $int_start;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] }[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] $tmp_text[] = mb_substr($subtext, $int_start, $int_lenght);[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] }[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] return implode('<!--nextpage-->', $tmp_text);[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] }[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial] return $content;[/FONT][/COLOR]
[COLOR=#141414][FONT=Arial]}[/FONT][/COLOR]
Sau đó tại func setup_postdata() tìm đoạn này $content = $post->post_content; (nó ở ngay trên thui, dưới cùng của file query.php ấy:
Sửa:
Code:
$content = $post->post_content;
Code:
$content = wapvn_page_content($post->post_content);
Live Demo:
- Phân trang Page Nav kiểu JohnCMS: Xem demo (ít bài viết để 2bv / trang để các bạn nhìn toàn cảnh Pagenav)
- Phân trang bài viết dài Auto chia trang theo kí tự: Xem demo
Nguồn: QDK