WP-PageNavi - Version 2.81

Version Description

  • require an explicit type; fixes bugs with multipart pages
Download this release

Release Info

Developer scribu
Plugin Icon WP-PageNavi
Version 2.81
Comparing to
See all releases

Code changes from version 2.80 to 2.81

Files changed (5) hide show
  1. core.php +72 -55
  2. lang/wp-pagenavi-he_IL.mo +0 -0
  3. lang/wp-pagenavi-he_IL.po +197 -0
  4. readme.txt +15 -6
  5. wp-pagenavi.php +2 -2
core.php CHANGED
@@ -12,28 +12,30 @@
12
  function wp_pagenavi( $args = array() ) {
13
  if ( !is_array( $args ) ) {
14
  $argv = func_get_args();
15
- list( $before, $after, $options ) = $argv;
16
- $query = $GLOBALS['wp_query'];
17
- } else {
18
- $args = wp_parse_args( $args, array(
19
- 'before' => '',
20
- 'after' => '',
21
- 'options' => array(),
22
- 'query' => $GLOBALS['wp_query']
23
- ) );
24
-
25
- extract( $args, EXTR_SKIP );
26
  }
27
 
28
- list( $posts_per_page, $paged, $total_pages ) = _wp_pagenavi_get_args( $query );
 
 
 
 
 
 
 
 
29
 
30
  $options = wp_parse_args( $options, PageNavi_Core::$options->get() );
31
 
 
 
 
 
32
  if ( 1 == $total_pages && !$options['always_show'] )
33
  return;
34
 
35
- $numposts = $query->found_posts;
36
-
37
  $pages_to_show = absint( $options['num_pages'] );
38
  $larger_page_to_show = absint( $options['num_larger_page_numbers'] );
39
  $larger_page_multiple = absint( $options['larger_page_numbers_multiple'] );
@@ -74,11 +76,11 @@ function wp_pagenavi( $args = array() ) {
74
  if ( $start_page >= 2 && $pages_to_show < $total_pages ) {
75
  // First
76
  $first_text = str_replace( '%TOTAL_PAGES%', number_format_i18n( $total_pages ), $options['first_text'] );
77
- $out .= _wp_pagenavi_single( 1, 'first', $first_text, '%TOTAL_PAGES%' );
78
 
79
  // Previous
80
  if ( $paged > 1 && !empty( $options['prev_text'] ) )
81
- $out .= _wp_pagenavi_single( $paged - 1, 'previouspostslink', $options['prev_text'] );
82
 
83
  if ( !empty( $options['dotleft_text'] ) )
84
  $out .= "<span class='extend'>{$options['dotleft_text']}</span>";
@@ -93,7 +95,7 @@ function wp_pagenavi( $args = array() ) {
93
  $larger_page_start = 0;
94
  foreach ( $larger_pages_array as $larger_page ) {
95
  if ( $larger_page < ($start_page - $half_page_start) && $larger_page_start < $larger_page_to_show ) {
96
- $out .= _wp_pagenavi_single( $larger_page, 'smaller page', $options['page_text'] );
97
  $larger_page_start++;
98
  }
99
  }
@@ -109,7 +111,7 @@ function wp_pagenavi( $args = array() ) {
109
  $out .= "<span class='current'>$current_page_text</span>";
110
  $timeline = 'larger';
111
  } else {
112
- $out .= _wp_pagenavi_single( $i, "page $timeline", $options['page_text'] );
113
  }
114
  }
115
 
@@ -118,7 +120,7 @@ function wp_pagenavi( $args = array() ) {
118
  $larger_page_out = '';
119
  foreach ( $larger_pages_array as $larger_page ) {
120
  if ( $larger_page > ($end_page + $half_page_end) && $larger_page_end < $larger_page_to_show ) {
121
- $larger_page_out .= _wp_pagenavi_single( $larger_page, 'larger page', $options['page_text'] );
122
  $larger_page_end++;
123
  }
124
  }
@@ -134,10 +136,10 @@ function wp_pagenavi( $args = array() ) {
134
 
135
  // Next
136
  if ( $paged < $total_pages && !empty( $options['next_text'] ) )
137
- $out .= _wp_pagenavi_single( $paged + 1, 'nextpostslink', $options['next_text'] );
138
 
139
  // Last
140
- $out .= _wp_pagenavi_single( $total_pages, 'last', $options['last_text'], '%TOTAL_PAGES%' );
141
  }
142
  break;
143
 
@@ -153,10 +155,10 @@ function wp_pagenavi( $args = array() ) {
153
 
154
  if ( $i == $paged ) {
155
  $current_page_text = str_replace( '%PAGE_NUMBER%', number_format_i18n( $i ), $options['current_text'] );
156
- $out .= '<option value="'.esc_url( _wp_pagenavi_get_url( $page_num ) ).'" selected="selected" class="current">'.$current_page_text."</option>\n";
157
  } else {
158
  $page_text = str_replace( '%PAGE_NUMBER%', number_format_i18n( $i ), $options['page_text'] );
159
- $out .= '<option value="'.esc_url( _wp_pagenavi_get_url( $page_num ) ).'">'.$page_text."</option>\n";
160
  }
161
  }
162
 
@@ -169,45 +171,60 @@ function wp_pagenavi( $args = array() ) {
169
  echo apply_filters( 'wp_pagenavi', $out );
170
  }
171
 
172
- // This does the messy job of extracting the necessary information from $wp_query
173
- function _wp_pagenavi_get_args( $query ) {
174
- global $wp, $page, $numpages, $multipage;
175
-
176
- if ( $multipage ) {
177
- // Multipart page
178
- $posts_per_page = 1;
179
- $paged = max( 1, absint( $query->get( 'page' ) ) );
180
- $total_pages = max( 1, $numpages );
181
- } elseif ( isset( $query->total_users ) ) {
182
- // WP_User_Query
183
- $posts_per_page = $query->query_vars['number'];
184
- $paged = max( 1, floor( $query->query_vars['offset'] / $posts_per_page ) + 1 );
185
- $total_pages = max( 1, ceil( $query->total_users / $posts_per_page ) );
186
- } else {
187
- // WP_Query
188
- $posts_per_page = intval( $query->get( 'posts_per_page' ) );
189
- $paged = max( 1, absint( $query->get( 'paged' ) ) );
190
- $total_pages = max( 1, absint( $query->max_num_pages ) );
191
  }
192
 
193
- return array( $posts_per_page, $paged, $total_pages );
194
- }
 
195
 
196
- // This outputs a single page link
197
- function _wp_pagenavi_single( $page, $class, $raw_text, $format = '%PAGE_NUMBER%' ) {
198
- if ( empty( $raw_text ) )
199
- return '';
200
 
201
- $text = str_replace( $format, number_format_i18n( $page ), $raw_text );
202
 
203
- return "<a href='" . esc_url( _wp_pagenavi_get_url( $page ) ) . "' class='$class'>$text</a>";
204
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
 
206
- // This gets the correct URL, either for an archive page or a multipage
207
- function _wp_pagenavi_get_url( $page ) {
208
- global $multipage;
209
 
210
- return $multipage ? get_multipage_link( $page ) : get_pagenum_link( $page );
 
 
 
 
 
211
  }
212
 
213
  # http://core.trac.wordpress.org/ticket/16973
12
  function wp_pagenavi( $args = array() ) {
13
  if ( !is_array( $args ) ) {
14
  $argv = func_get_args();
15
+ $args = array();
16
+ foreach ( array( 'before', 'after', 'options' ) as $i => $key )
17
+ $args[ $key ] = $argv[ $i ];
 
 
 
 
 
 
 
 
18
  }
19
 
20
+ $args = wp_parse_args( $args, array(
21
+ 'before' => '',
22
+ 'after' => '',
23
+ 'options' => array(),
24
+ 'query' => $GLOBALS['wp_query'],
25
+ 'type' => 'posts'
26
+ ) );
27
+
28
+ extract( $args, EXTR_SKIP );
29
 
30
  $options = wp_parse_args( $options, PageNavi_Core::$options->get() );
31
 
32
+ $instance = new PageNavi_Call( $args );
33
+
34
+ list( $posts_per_page, $paged, $total_pages ) = $instance->get_pagination_args();
35
+
36
  if ( 1 == $total_pages && !$options['always_show'] )
37
  return;
38
 
 
 
39
  $pages_to_show = absint( $options['num_pages'] );
40
  $larger_page_to_show = absint( $options['num_larger_page_numbers'] );
41
  $larger_page_multiple = absint( $options['larger_page_numbers_multiple'] );
76
  if ( $start_page >= 2 && $pages_to_show < $total_pages ) {
77
  // First
78
  $first_text = str_replace( '%TOTAL_PAGES%', number_format_i18n( $total_pages ), $options['first_text'] );
79
+ $out .= $instance->get_single( 1, 'first', $first_text, '%TOTAL_PAGES%' );
80
 
81
  // Previous
82
  if ( $paged > 1 && !empty( $options['prev_text'] ) )
83
+ $out .= $instance->get_single( $paged - 1, 'previouspostslink', $options['prev_text'] );
84
 
85
  if ( !empty( $options['dotleft_text'] ) )
86
  $out .= "<span class='extend'>{$options['dotleft_text']}</span>";
95
  $larger_page_start = 0;
96
  foreach ( $larger_pages_array as $larger_page ) {
97
  if ( $larger_page < ($start_page - $half_page_start) && $larger_page_start < $larger_page_to_show ) {
98
+ $out .= $instance->get_single( $larger_page, 'smaller page', $options['page_text'] );
99
  $larger_page_start++;
100
  }
101
  }
111
  $out .= "<span class='current'>$current_page_text</span>";
112
  $timeline = 'larger';
113
  } else {
114
+ $out .= $instance->get_single( $i, "page $timeline", $options['page_text'] );
115
  }
116
  }
117
 
120
  $larger_page_out = '';
121
  foreach ( $larger_pages_array as $larger_page ) {
122
  if ( $larger_page > ($end_page + $half_page_end) && $larger_page_end < $larger_page_to_show ) {
123
+ $larger_page_out .= $instance->get_single( $larger_page, 'larger page', $options['page_text'] );
124
  $larger_page_end++;
125
  }
126
  }
136
 
137
  // Next
138
  if ( $paged < $total_pages && !empty( $options['next_text'] ) )
139
+ $out .= $instance->get_single( $paged + 1, 'nextpostslink', $options['next_text'] );
140
 
141
  // Last
142
+ $out .= $instance->get_single( $total_pages, 'last', $options['last_text'], '%TOTAL_PAGES%' );
143
  }
144
  break;
145
 
155
 
156
  if ( $i == $paged ) {
157
  $current_page_text = str_replace( '%PAGE_NUMBER%', number_format_i18n( $i ), $options['current_text'] );
158
+ $out .= '<option value="'.esc_url( $instance->get_url( $page_num ) ).'" selected="selected" class="current">'.$current_page_text."</option>\n";
159
  } else {
160
  $page_text = str_replace( '%PAGE_NUMBER%', number_format_i18n( $i ), $options['page_text'] );
161
+ $out .= '<option value="'.esc_url( $instance->get_url( $page_num ) ).'">'.$page_text."</option>\n";
162
  }
163
  }
164
 
171
  echo apply_filters( 'wp_pagenavi', $out );
172
  }
173
 
174
+
175
+ class PageNavi_Call {
176
+
177
+ protected $args;
178
+
179
+ function __construct( $args ) {
180
+ $this->args = $args;
 
 
 
 
 
 
 
 
 
 
 
 
181
  }
182
 
183
+ function __get( $key ) {
184
+ return $this->args[ $key ];
185
+ }
186
 
187
+ function get_pagination_args() {
188
+ global $numpages;
 
 
189
 
190
+ $query = $this->query;
191
 
192
+ switch( $this->type ) {
193
+ case 'multipart':
194
+ // Multipart page
195
+ $posts_per_page = 1;
196
+ $paged = max( 1, absint( get_query_var( 'page' ) ) );
197
+ $total_pages = max( 1, $numpages );
198
+ break;
199
+ case 'users':
200
+ // WP_User_Query
201
+ $posts_per_page = $query->query_vars['number'];
202
+ $paged = max( 1, floor( $query->query_vars['offset'] / $posts_per_page ) + 1 );
203
+ $total_pages = max( 1, ceil( $query->total_users / $posts_per_page ) );
204
+ break;
205
+ default:
206
+ // WP_Query
207
+ $posts_per_page = intval( $query->get( 'posts_per_page' ) );
208
+ $paged = max( 1, absint( $query->get( 'paged' ) ) );
209
+ $total_pages = max( 1, absint( $query->max_num_pages ) );
210
+ break;
211
+ }
212
+
213
+ return array( $posts_per_page, $paged, $total_pages );
214
+ }
215
+
216
+ function get_single( $page, $class, $raw_text, $format = '%PAGE_NUMBER%' ) {
217
+ if ( empty( $raw_text ) )
218
+ return '';
219
 
220
+ $text = str_replace( $format, number_format_i18n( $page ), $raw_text );
 
 
221
 
222
+ return "<a href='" . esc_url( $this->get_url( $page ) ) . "' class='$class'>$text</a>";
223
+ }
224
+
225
+ function get_url( $page ) {
226
+ return ( 'multipart' == $this->type ) ? get_multipage_link( $page ) : get_pagenum_link( $page );
227
+ }
228
  }
229
 
230
  # http://core.trac.wordpress.org/ticket/16973
lang/wp-pagenavi-he_IL.mo ADDED
Binary file
lang/wp-pagenavi-he_IL.po ADDED
@@ -0,0 +1,197 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Translation of the WordPress plugin WP-PageNavi 2.73 by Lester 'GaMerZ' Chan & scribu.
2
+ # Copyright (C) 2010 Lester 'GaMerZ' Chan & scribu
3
+ # This file is distributed under the same license as the WP-PageNavi package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
5
+ #
6
+ msgid ""
7
+ msgstr ""
8
+ "Project-Id-Version: WP-PageNavi 2.73\n"
9
+ "Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-pagenavi\n"
10
+ "POT-Creation-Date: 2010-08-17 17:28+0300\n"
11
+ "PO-Revision-Date: 2011-11-15 00:51+0200\n"
12
+ "Last-Translator: Matan Gotlieb <info@click4web.co.il>\n"
13
+ "Language-Team: \n"
14
+ "MIME-Version: 1.0\n"
15
+ "Content-Type: text/plain; charset=UTF-8\n"
16
+ "Content-Transfer-Encoding: 8bit\n"
17
+ "X-Poedit-Language: Hebrew\n"
18
+ "X-Poedit-Country: ISRAEL\n"
19
+ "X-Poedit-SourceCharset: utf-8\n"
20
+
21
+ #: admin.php:9
22
+ msgid "PageNavi Settings"
23
+ msgstr "הגדרות PageNavi"
24
+
25
+ #: admin.php:10
26
+ msgid "PageNavi"
27
+ msgstr "PageNavi"
28
+
29
+ #: admin.php:28
30
+ msgid "Text For Number Of Pages"
31
+ msgstr "מחרוזת עבור מספר הדפים"
32
+
33
+ #: admin.php:33
34
+ msgid "The current page number."
35
+ msgstr "מחרוזת עבור הדף הנוכחי"
36
+
37
+ #: admin.php:34
38
+ #: admin.php:58
39
+ #: admin.php:66
40
+ msgid "The total number of pages."
41
+ msgstr "מספר סך כל הדפים"
42
+
43
+ #: admin.php:38
44
+ msgid "Text For Current Page"
45
+ msgstr "מחרוזת עבור הדף הנוכחי"
46
+
47
+ #: admin.php:42
48
+ #: admin.php:50
49
+ msgid "The page number."
50
+ msgstr "המספר של הדף."
51
+
52
+ #: admin.php:46
53
+ msgid "Text For Page"
54
+ msgstr "מחרוזת עבור העמוד"
55
+
56
+ #: admin.php:54
57
+ msgid "Text For First Page"
58
+ msgstr "מחרוזת עבור הדף הראשון"
59
+
60
+ #: admin.php:62
61
+ msgid "Text For Last Page"
62
+ msgstr "מחרוזת עבור הדף האחרון"
63
+
64
+ #: admin.php:70
65
+ msgid "Text For Previous Page"
66
+ msgstr "מחרוזת עבור הדף הקודם"
67
+
68
+ #: admin.php:76
69
+ msgid "Text For Next Page"
70
+ msgstr "מחרוזת עבור הדף הבא"
71
+
72
+ #: admin.php:82
73
+ msgid "Text For Previous ..."
74
+ msgstr "מחרוזת עבור הקודם"
75
+
76
+ #: admin.php:88
77
+ msgid "Text For Next ..."
78
+ msgstr "מחרוזת עבור הבא"
79
+
80
+ #: admin.php:95
81
+ msgid "Page Navigation Text"
82
+ msgstr "טקסטים עבור שורת הניווט בדף"
83
+
84
+ #: admin.php:96
85
+ msgid "Leaving a field blank will hide that part of the navigation."
86
+ msgstr "השארת שדה מסוים ריק תגרום לאי הכללתו בשורת הניווט."
87
+
88
+ #: admin.php:102
89
+ msgid "Use pagenavi-css.css"
90
+ msgstr "השתמש ב-pagenavi-css.css"
91
+
92
+ #: admin.php:108
93
+ msgid "Page Navigation Style"
94
+ msgstr "סגנון שורת הניווט"
95
+
96
+ #: admin.php:111
97
+ msgid "Normal"
98
+ msgstr "רגיל"
99
+
100
+ #: admin.php:111
101
+ msgid "Drop-down List"
102
+ msgstr "רשימה נפתחת"
103
+
104
+ #: admin.php:116
105
+ msgid "Always Show Page Navigation"
106
+ msgstr "הצג תמיד את שורת הניווט"
107
+
108
+ #: admin.php:119
109
+ msgid "Show navigation even if there's only one page."
110
+ msgstr "מציג את שורת הניווט אפילו כשיש רק דף אחד."
111
+
112
+ #: admin.php:123
113
+ msgid "Number Of Pages To Show"
114
+ msgstr "מספר הדפים להצגה"
115
+
116
+ #: admin.php:130
117
+ msgid "Number Of Larger Page Numbers To Show"
118
+ msgstr "מספר העמודים העמוקים להצגה"
119
+
120
+ #: admin.php:135
121
+ msgid "Larger page numbers are in addition to the normal page numbers. They are useful when there are many pages of posts."
122
+ msgstr "מספרי עמודים עמוקים הם תוספת למספור העמודים הרגיל. הם שימושיים כאשר יש מספר גדול מאוד של עמודים או פוסטים."
123
+
124
+ #: admin.php:136
125
+ msgid "For example, WP-PageNavi will display: Pages 1, 2, 3, 4, 5, 10, 20, 30, 40, 50."
126
+ msgstr "לדוגמא, WP-PageNavi יציג 1, 2, 3, 4, 5, 10, 20, 30, 40, 50."
127
+
128
+ #: admin.php:137
129
+ msgid "Enter 0 to disable."
130
+ msgstr "הזן 0 כדי להשבית."
131
+
132
+ #: admin.php:141
133
+ msgid "Show Larger Page Numbers In Multiples Of"
134
+ msgstr "הצג מספרי עמודים עמוקים בכפולות של"
135
+
136
+ #: admin.php:146
137
+ msgid "For example, if mutiple is 5, it will show: 5, 10, 15, 20, 25"
138
+ msgstr "לדוגמא, אם המכפלה היא 5, התצוגה תהיה: 5, 10, 15, 20, 25"
139
+
140
+ #: admin.php:151
141
+ msgid "Page Navigation Options"
142
+ msgstr "אפשרויות שורת הניווט"
143
+
144
+ #: scb/AdminPage.php:167
145
+ msgid "Settings <strong>saved</strong>."
146
+ msgstr "הגדרות <strong>נשמרו</strong>."
147
+
148
+ #: scb/AdminPage.php:179
149
+ #: scb/AdminPage.php:189
150
+ msgid "Save Changes"
151
+ msgstr "שמור שינויים"
152
+
153
+ #: scb/AdminPage.php:371
154
+ msgid "Settings"
155
+ msgstr "הגדרות"
156
+
157
+ #: wp-pagenavi.php:37
158
+ msgid "Page %CURRENT_PAGE% of %TOTAL_PAGES%"
159
+ msgstr "עמוד %CURRENT_PAGE% מתוך %TOTAL_PAGES%"
160
+
161
+ #: wp-pagenavi.php:40
162
+ msgid "&laquo; First"
163
+ msgstr "&laquo; להתחלה"
164
+
165
+ #: wp-pagenavi.php:41
166
+ msgid "Last &raquo;"
167
+ msgstr "לסוף &raquo;"
168
+
169
+ #: wp-pagenavi.php:42
170
+ msgid "&laquo;"
171
+ msgstr "&laquo;"
172
+
173
+ #: wp-pagenavi.php:43
174
+ msgid "&raquo;"
175
+ msgstr "&raquo;"
176
+
177
+ #: wp-pagenavi.php:44
178
+ #: wp-pagenavi.php:45
179
+ msgid "..."
180
+ msgstr "..."
181
+
182
+ #. Plugin Name of the plugin/theme
183
+ msgid "WP-PageNavi"
184
+ msgstr "WP-PageNavi"
185
+
186
+ #. Plugin URI of the plugin/theme
187
+ msgid "http://wordpress.org/extend/plugins/wp-pagenavi/"
188
+ msgstr "http://wordpress.org/extend/plugins/wp-pagenavi/"
189
+
190
+ #. Description of the plugin/theme
191
+ msgid "Adds a more advanced paging navigation to your WordPress blog"
192
+ msgstr "הוסף תכונות ניווט מתקדמות יותר לאתר הוורדפרס שלך"
193
+
194
+ #. Author of the plugin/theme
195
+ msgid "Lester 'GaMerZ' Chan & scribu"
196
+ msgstr "Lester 'GaMerZ' Chan & scribu"
197
+
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: GamerZ, scribu
3
  Tags: navigation, pagination, paging, pages
4
  Requires at least: 3.1
5
  Tested up to: 3.3
6
- Stable tag: 2.80
7
 
8
  Adds a more advanced paging navigation interface.
9
 
@@ -11,7 +11,9 @@ Adds a more advanced paging navigation interface.
11
 
12
  [PHP5 is required since version 2.70](http://scribu.net/wordpress/wp-pagenavi/wp-2-70.html)
13
 
14
- Replaces the basic *&larr; Older posts | Newer posts &rarr;* links with a more advanced paging navigation interface.
 
 
15
 
16
  Links: [Demo](http://lesterchan.net/wordpress/) | [Plugin News](http://scribu.net/wordpress/wp-pagenavi/) | [Translating](http://scribu.net/wordpress/translating-plugins.html)
17
 
@@ -41,9 +43,9 @@ For multipart pages, you would look for code like this:
41
 
42
  `<?php wp_link_pages( ... ); ?>`
43
 
44
- and again replace it with this:
45
 
46
- `<?php wp_pagenavi(); ?>`
47
 
48
  Go to *WP-Admin -> Settings -> PageNavi* for configuration.
49
 
@@ -68,9 +70,13 @@ Make sure your host is running PHP 5. The only foolproof way to do this is to ad
68
  `var_dump(PHP_VERSION);`
69
  <br>
70
 
71
- = Doesn't work with query_posts() or custom query =
 
 
72
 
73
- Read [this tutorial](http://scribu.net/wordpress/wp-pagenavi/wpn-2-74.html)
 
 
74
 
75
  = How do I ignore the options page? =
76
 
@@ -82,6 +88,9 @@ You can do that like so:
82
 
83
  == Changelog ==
84
 
 
 
 
85
  = 2.80 =
86
  * support for multi-part pages and user queries
87
  * moved prev/next links before/after first/last links
3
  Tags: navigation, pagination, paging, pages
4
  Requires at least: 3.1
5
  Tested up to: 3.3
6
+ Stable tag: 2.81
7
 
8
  Adds a more advanced paging navigation interface.
9
 
11
 
12
  [PHP5 is required since version 2.70](http://scribu.net/wordpress/wp-pagenavi/wp-2-70.html)
13
 
14
+ Want to replace the old *&larr; Older posts | Newer posts &rarr;* links with some page links?
15
+
16
+ This plugin provides the `wp_pagenavi()` template tag which generates fancy pagination links. See the [installation instructions](http://wordpress.org/extend/plugins/wp-pagenavi/installation/) for using it in your theme.
17
 
18
  Links: [Demo](http://lesterchan.net/wordpress/) | [Plugin News](http://scribu.net/wordpress/wp-pagenavi/) | [Translating](http://scribu.net/wordpress/translating-plugins.html)
19
 
43
 
44
  `<?php wp_link_pages( ... ); ?>`
45
 
46
+ and replace it with this:
47
 
48
+ `<?php wp_pagenavi( array( 'type' => 'multipart' ) ); ?>`
49
 
50
  Go to *WP-Admin -> Settings -> PageNavi* for configuration.
51
 
70
  `var_dump(PHP_VERSION);`
71
  <br>
72
 
73
+ = When I go to page 2, I see the same posts as on page 1! =
74
+
75
+ You're using `query_posts()` wrong. See [The Right Way To use query_posts()](http://scribu.net/wordpress/wp-pagenavi/right-way-to-use-query_posts.html)
76
 
77
+ = Does PageNavi work with secondary WP_Query instances? =
78
+
79
+ Yes; read [this tutorial](http://scribu.net/wordpress/wp-pagenavi/wpn-2-74.html)
80
 
81
  = How do I ignore the options page? =
82
 
88
 
89
  == Changelog ==
90
 
91
+ = 2.81 =
92
+ * require an explicit type; fixes bugs with multipart pages
93
+
94
  = 2.80 =
95
  * support for multi-part pages and user queries
96
  * moved prev/next links before/after first/last links
wp-pagenavi.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /*
3
  Plugin Name: WP-PageNavi
4
- Version: 2.80
5
  Description: Adds a more advanced paging navigation to your WordPress blog
6
  Author: Lester 'GaMerZ' Chan & scribu
7
  Plugin URI: http://wordpress.org/extend/plugins/wp-pagenavi/
@@ -14,7 +14,7 @@ Copyright 2009 Lester Chan (lesterchan@gmail.com)
14
  This program is free software; you can redistribute it and/or modify
15
  it under the terms of the GNU General Public License as published by
16
  the Free Software Foundation; either version 2 of the License, or
17
- ( at your option ) any later version.
18
 
19
  This program is distributed in the hope that it will be useful,
20
  but WITHOUT ANY WARRANTY; without even the implied warranty of
1
  <?php
2
  /*
3
  Plugin Name: WP-PageNavi
4
+ Version: 2.81
5
  Description: Adds a more advanced paging navigation to your WordPress blog
6
  Author: Lester 'GaMerZ' Chan & scribu
7
  Plugin URI: http://wordpress.org/extend/plugins/wp-pagenavi/
14
  This program is free software; you can redistribute it and/or modify
15
  it under the terms of the GNU General Public License as published by
16
  the Free Software Foundation; either version 2 of the License, or
17
+ (at your option) any later version.
18
 
19
  This program is distributed in the hope that it will be useful,
20
  but WITHOUT ANY WARRANTY; without even the implied warranty of