php 在我自己的自定义插件中在 wordpress admin 中添加分页
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/5322266/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Add pagination in wordpress admin in my own customized plugin
提问by Yashrajsinh Jadeja
i want to display pagination in one of my page of plugin,created by me.. i tried lots of examples but no one is working..
我想在我创建的插件页面之一中显示分页..我尝试了很多示例,但没有人在工作..
i'll be vary thankful if anyone can give answer...
如果有人能给出答案,我将不胜感激...
note: i want pagination in back end(in admin) not in front end
注意:我希望在后端(在管理员中)而不是在前端进行分页
采纳答案by Yashrajsinh Jadeja
I solved this problem in different way. And solution is here
我以不同的方式解决了这个问题。解决方案在这里
I use second option which has title "How To Add Pagination To WordPress Plugin?". This gives almost same pagination functionality as WordPress has.
我使用标题为“如何将分页添加到 WordPress 插件?”的第二个选项。这提供了与 WordPress 几乎相同的分页功能。
Do not forget to download that "pagination.class.php" file, put it in your plugin folder and give appropriate path while including this file in your plugin.
不要忘记下载那个“pagination.class.php”文件,把它放在你的插件文件夹中并给出适当的路径,同时在你的插件中包含这个文件。
回答by Hemi
Easy Steps :
简单的步骤:
$pagenum = isset( $_GET['pagenum'] ) ? absint( $_GET['pagenum'] ) : 1;
Find total numbers of records
查找记录总数
$limit = 10; // number of rows in page
$offset = ( $pagenum - 1 ) * $limit;
$total = $wpdb->get_var( "SELECT COUNT(`id`) FROM {$wpdb->prefix}table_name" );
$num_of_pages = ceil( $total / $limit );
Give limit:
给予限制:
$entries = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}table_name LIMIT $offset, $limit" );
Add this code where you want pagination:
在需要分页的位置添加此代码:
$page_links = paginate_links( array(
'base' => add_query_arg( 'pagenum', '%#%' ),
'format' => '',
'prev_text' => __( '«', 'text-domain' ),
'next_text' => __( '»', 'text-domain' ),
'total' => $num_of_pages,
'current' => $pagenum
) );
if ( $page_links ) {
echo '<div class="tablenav"><div class="tablenav-pages" style="margin: 1em 0">' . $page_links . '</div></div>';
}
回答by Lawrence Cherone
Generic pagination function.
通用分页功能。
This example looks like this on a large db:
这个例子在一个大数据库上看起来像这样:
<<Previous123456789... 822823Next>>
<<Previous123456789... 822823Next>>
or
或者
<<Previous12... 815816817818819820821822823Next>>
<<Previous12... 815816817818819820821822823Next>>
or
或者
<<Previous12... 812813814815816817818... 822823Next>>
<<Previous12... 812813814815816817818...822823Next>>
enjoy...
请享用...
<?php
/*Max Number of results to show*/
$max = 10;
/*Get the current page eg index.php?pg=4*/
if(isset($_GET['pg'])){
$p = (int) $_GET['pg'];
}else{
$p = 1;
}
$limit = ($p - 1) * $max;
$prev = $p - 1;
$next = $p + 1;
$limits = (int)($p - 1) * $max;
//This is the query to get the current dataset (change api to suit)
$result = mysqli_query($res, 'SELECT * from yourtable limit '.$limits.','.$max.'');
//Get total records from db (change api to suit)
$totalres = mysqli_result($res, mysqli_query($res, 'SELECT COUNT(id) AS tot FROM yourtable"'),0);
//devide it with the max value & round it up
$totalposts = ceil($totalres / $max);
$lpm1 = $totalposts - 1;
echo pagination($totalposts, $p, $lpm1, $prev, $next);
//The function
function pagination($totalposts, $p, $lpm1, $prev, $next){
$adjacents = 3;
if($totalposts > 1)
{
$pagination .= "<center><div>";
//previous button
if ($p > 1)
$pagination.= "<a href=\"?pg=$prev\"><< Previous</a> ";
else
$pagination.= "<span class=\"disabled\"><< Previous</span> ";
if ($totalposts < 7 + ($adjacents * 2)){
for ($counter = 1; $counter <= $totalposts; $counter++){
if ($counter == $p)
$pagination.= "<span class=\"current\">$counter</span>";
else
$pagination.= " <a href=\"?pg=$counter\">$counter</a> ";}
}elseif($totalposts > 5 + ($adjacents * 2)){
if($p < 1 + ($adjacents * 2)){
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++){
if ($counter == $p)
$pagination.= " <span class=\"current\">$counter</span> ";
else
$pagination.= " <a href=\"?pg=$counter\">$counter</a> ";
}
$pagination.= " ... ";
$pagination.= " <a href=\"?pg=$lpm1\">$lpm1</a> ";
$pagination.= " <a href=\"?pg=$totalposts\">$totalposts</a> ";
}
//in middle; hide some front and some back
elseif($totalposts - ($adjacents * 2) > $p && $p > ($adjacents * 2)){
$pagination.= " <a href=\"?pg=1\">1</a> ";
$pagination.= " <a href=\"?pg=2\">2</a> ";
$pagination.= " ... ";
for ($counter = $p - $adjacents; $counter <= $p + $adjacents; $counter++){
if ($counter == $p)
$pagination.= " <span class=\"current\">$counter</span> ";
else
$pagination.= " <a href=\"?pg=$counter\">$counter</a> ";
}
$pagination.= " ... ";
$pagination.= " <a href=\"?pg=$lpm1\">$lpm1</a> ";
$pagination.= " <a href=\"?pg=$totalposts\">$totalposts</a> ";
}else{
$pagination.= " <a href=\"?pg=1\">1</a> ";
$pagination.= " <a href=\"?pg=2\">2</a> ";
$pagination.= " ... ";
for ($counter = $totalposts - (2 + ($adjacents * 2)); $counter <= $totalposts; $counter++){
if ($counter == $p)
$pagination.= " <span class=\"current\">$counter</span> ";
else
$pagination.= " <a href=\"?pg=$counter\">$counter</a> ";
}
}
}
if ($p < $counter - 1)
$pagination.= " <a href=\"?pg=$next\">Next >></a>";
else
$pagination.= " <span class=\"disabled\">Next >></span>";
$pagination.= "</center>\n";
}
return $pagination;
}
?>