Wordpress 分页在插件管理中不起作用
Wordpress Pagination not working in Plugin Admin
在过去三天的大部分时间里,我一直在尝试各种方法,并且在此处浏览了无数关于 Whosebug 和 Wordpress 支持的回复。是否可以在我的插件中使用分页来列出管理员的帖子?
我的插件显示管理员的帖子,这样他们就可以查看每个页面的某些详细信息和 add/edit 特定选项。我意识到这可以在每个单独的页面上使用元数据来完成,但我需要以这种方式完成:加载,比方说,一次 25 个帖子,并允许管理员添加每个帖子的次要细节。
我已经尝试了每一种变体(我说每一种,但我们只是说它是我可以在 Google 的前 20 页左右找到的各种搜索短语的每一种变体)使用 previous_posts_links
、paginate_links()
、等等;我已经尝试使用自定义 wp_query()
函数,实例化一个新的 wp_query 并在完成后恢复它(不推荐)并且完全避免使用 query_posts()
。我已经尝试添加 pre_get_posts()
函数 - 但在这一点上,虽然 get_posts()
可能比 运行 快,但新的 wp_query()
显然更难以使用它的结果进行分页.
我试过的代码包括这个想法的各种变体:
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$my_query = new WP_Query(
array(
'number' => -1,
'posts_per_page' => '25',
'paged' => $paged
) );
while ($my_query->have_posts()) : $my_query->the_post();
echo "<div style='border:2px groove black; margin-bottom:5px;'><h3 class='postlist'>";
the_title();
echo "</h3></div>";
endwhile; ?>
<nav>
<?php previous_posts_link('« Newer', $my_query->max_num_pages) ?>
<?php next_posts_link('Older »', $my_query->max_num_pages) ?>
</nav>
(我已经删除了保存内容的选项,以便于阅读)。注意这一点:$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
我也尝试过将其作为 'page' 而不是 'paged' 并且没有任何效果。
此函数显示我需要的内容:我要加载的帖子数量,它似乎正确地获得了分页,并且分页的 URL 正确,但是点击任何分页 link 生成什么都不做.
我试过 Chris Coyier 关于 $temp = wp_query... etc
的修复,然后恢复它,但这也不起作用。
有什么想法可以让它发挥作用吗?非常感谢您!我每天都在扯头发好几个小时,但几乎一无所获。
编辑:这个例子(下面)直接从 Codex 中提取,生成编号的 links,但是 虽然它们有正确的 path/URL 用于分页 实际上不会进入第 2 页、第 3 页等。
$big = 999999999; // need an unlikely integer
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $my_query->max_num_pages
) );
它给了我 1、2、3 下一个的 links - 但即使认为 url 附加 &page=2
,links 也不起作用。
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
那可能是你的问题 - 你可以简单地尝试...
$paged = isset($_GET['paged']) ? $_GET['paged'] : 1;
您的分页链接需要引用 paged then 而不是 page。
在过去三天的大部分时间里,我一直在尝试各种方法,并且在此处浏览了无数关于 Whosebug 和 Wordpress 支持的回复。是否可以在我的插件中使用分页来列出管理员的帖子?
我的插件显示管理员的帖子,这样他们就可以查看每个页面的某些详细信息和 add/edit 特定选项。我意识到这可以在每个单独的页面上使用元数据来完成,但我需要以这种方式完成:加载,比方说,一次 25 个帖子,并允许管理员添加每个帖子的次要细节。
我已经尝试了每一种变体(我说每一种,但我们只是说它是我可以在 Google 的前 20 页左右找到的各种搜索短语的每一种变体)使用 previous_posts_links
、paginate_links()
、等等;我已经尝试使用自定义 wp_query()
函数,实例化一个新的 wp_query 并在完成后恢复它(不推荐)并且完全避免使用 query_posts()
。我已经尝试添加 pre_get_posts()
函数 - 但在这一点上,虽然 get_posts()
可能比 运行 快,但新的 wp_query()
显然更难以使用它的结果进行分页.
我试过的代码包括这个想法的各种变体:
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$my_query = new WP_Query(
array(
'number' => -1,
'posts_per_page' => '25',
'paged' => $paged
) );
while ($my_query->have_posts()) : $my_query->the_post();
echo "<div style='border:2px groove black; margin-bottom:5px;'><h3 class='postlist'>";
the_title();
echo "</h3></div>";
endwhile; ?>
<nav>
<?php previous_posts_link('« Newer', $my_query->max_num_pages) ?>
<?php next_posts_link('Older »', $my_query->max_num_pages) ?>
</nav>
(我已经删除了保存内容的选项,以便于阅读)。注意这一点:$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
我也尝试过将其作为 'page' 而不是 'paged' 并且没有任何效果。
此函数显示我需要的内容:我要加载的帖子数量,它似乎正确地获得了分页,并且分页的 URL 正确,但是点击任何分页 link 生成什么都不做.
我试过 Chris Coyier 关于 $temp = wp_query... etc
的修复,然后恢复它,但这也不起作用。
有什么想法可以让它发挥作用吗?非常感谢您!我每天都在扯头发好几个小时,但几乎一无所获。
编辑:这个例子(下面)直接从 Codex 中提取,生成编号的 links,但是 虽然它们有正确的 path/URL 用于分页 实际上不会进入第 2 页、第 3 页等。
$big = 999999999; // need an unlikely integer
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $my_query->max_num_pages
) );
它给了我 1、2、3 下一个的 links - 但即使认为 url 附加 &page=2
,links 也不起作用。
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
那可能是你的问题 - 你可以简单地尝试...
$paged = isset($_GET['paged']) ? $_GET['paged'] : 1;
您的分页链接需要引用 paged then 而不是 page。