自定义数据库表的WP分页

时间:2017-01-15 作者:Erdinç Taze

我正在尝试为自定义数据库循环创建分页,但它不起作用。我复制下面的代码,有人告诉我怎么了吗?

global $wpdb;
$tablom = $wpdb->prefix . \'pasla\';
$tablom2 = $wpdb->prefix . \'users\';
$query = "SELECT ".$tablom.".id as id, ".$tablom.".sonuc as pasla_sonuc, ".$tablom2.".id as userID, pasla_tarih, paslanan_marka, ".$tablom.".telefon as pasla_telefon, ".$tablom.".kazanc as pasla_kazanc, ".$tablom.".ad_soyad as pasla_ad_soyad, pasla_tarih, ".$tablom2.".display_name as userPersonName FROM ".$tablom." inner join ".$tablom2." on ".$tablom2.".ID=".$tablom.".user_id where ".$tablom.".user_id=".$current_user->ID;
$total = $wpdb->get_var( "SELECT COUNT(1) FROM (${query}) AS combined_table" );
$items_per_page = 4;
$page = isset( $_GET[\'cpage\'] ) ? abs( (int) $_GET[\'cpage\'] ) : 1;
$offset = ( $page * $items_per_page ) - $items_per_page;
$myrows = $wpdb->get_results( $query . " ORDER BY pasla_tarih LIMIT ${offset}, ${items_per_page}" );                    
foreach($myrows as $row){
    if ( $row->pasla_sonuc == 0 ){
        echo \'
            <div class="col-xs-12 col-sm-12 col-md-12-col-lg-12 sonuc-kutu" style="background-color: #337ab7;">
            <span>\'. $row->pasla_ad_soyad .\' - \'. (new DateTime($row->pasla_tarih))->format("d/m/Y") .\' - #\'. $row->id .\'</span>
            <p>\'. $row->paslanan_marka .\' markasına \'. (new DateTime($row->pasla_tarih))->format("d/m/Y") .\' tarihinde talep etmiş olduğunuz #\'. $row->id .\' no\\\'lu pasla işleminiz bekleme sürecindedir. Bu paslayı satış ile sonuçlanmasını hızlandırmak için pasladığınız müşteriyi arayarak ya da görüşerek ikna edebilirsiniz. #\'. $row->id .\' no\\\'lu pasla işleminiz ile ilgili gelişmeler tekrar aktarılacaktır.</p>
            </div>
            \';
    }elseif($row->pasla_sonuc == 1  ){
        echo \'
        <div class="col-xs-12 col-sm-12 col-md-12-col-lg-12 sonuc-kutu" style="background-color: #20b979;">
        <span>\'. $row->pasla_ad_soyad .\' - \'. (new DateTime($row->pasla_tarih))->format("d/m/Y") .\' - #\'. $row->id .\'</span>
        <p>TEBRİKLER! \'. $row->paslanan_marka .\' markasına \'. (new DateTime($row->pasla_tarih))->format("d/m/Y") .\' tarihinde talep etmiş olduğunuz #\'. $row->id .\' no\\\'lu pasla işleminiz satış ile sonuçlanmıştır. Kazanç tutarınız olan \'. $row->pasla_kazanc .\' hesabınıza kazanç tutarı olarak eklenmiştir. Kazanç tutarınızı istediğiniz zaman banka hesabına aktararak kullanabilirsiniz. Güle güle harcayın...</p>
        </div>
        \';
    }elseif($row->pasla_sonuc == 2  ){
        echo \'
        <div class="col-xs-12 col-sm-12 col-md-12-col-lg-12 sonuc-kutu" style="background-color: #818181;">
        <span>\'. $row->pasla_ad_soyad .\' - \'. (new DateTime($row->pasla_tarih))->format("d/m/Y") .\' - #\'. $row->id .\'</span>
        <p>Üzgünüz! \'. $row->paslanan_marka .\' markasına \'. (new DateTime($row->pasla_tarih))->format("d/m/Y") .\' tarihinde talep etmiş olduğunuz #\'. $row->id .\' no\\\'lu pasla işleminiz malesef \'. $row->pasla_ad_soyad .\' tarafından red edilmiştir.Dilerseniz tekrardan pasladığınız kişi ile irtibat kurarak ikna edebilir ya da yeni paslalar için Kazandıran Markalar sayfamızı ziyaret edebilirsiniz.</p>
        </div>
        \';
    }
}  
echo paginate_links( array(
    \'base\' => add_query_arg( \'cpage\', \'%#%\' ),
    \'format\' => \'\',
    \'prev_text\' => __(\'&laquo;\'),
    \'next_text\' => __(\'&raquo;\'),
    \'total\' => ceil($total / $items_per_page),
    \'current\' => $page
));

1 个回复
SO网友:ravi sharma

将此代码添加到functions.php 文件:

$customPagHTML     = "";
$query             = "SELECT * FROM custom_table";
$total_query     = "SELECT COUNT(1) FROM (${query}) AS combined_table";
$total             = $wpdb->get_var( $total_query );
$items_per_page = 4;
$page             = isset( $_GET[\'cpage\'] ) ? abs( (int) $_GET[\'cpage\'] ) : 1;
$offset         = ( $page * $items_per_page ) - $items_per_page;
$result         = $wpdb->get_results( $query . " ORDER BY field DESC LIMIT ${offset}, ${items_per_page}" );
$totalPage         = ceil($total / $items_per_page);

if($totalPage > 1){
$customPagHTML     =  \'<div><span>Page \'.$page.\' of \'.$totalPage.\'</span>\'.paginate_links( array(
\'base\' => add_query_arg( \'cpage\', \'%#%\' ),
\'format\' => \'\',
\'prev_text\' => __(\'&laquo;\'),
\'next_text\' => __(\'&raquo;\'),
\'total\' => $totalPage,
\'current\' => $page
)).\'</div>\';
}
要在模板中显示输出,请使用:

echo $customPagHTML;

相关推荐

Count posts for pagination

我正在为一个网站分页<;上一页(页码)下一页>很简单,已经完成。但是现在我需要添加一个选择器来直接转到页面(例如:转到第7页),要这样做,我需要知道有多少页面,为此我需要计算在查询中找到了多少帖子。问题是这个网站有太多的帖子(>13.000),查询所有帖子都会减慢页面加载速度,这就像。。。10秒后页面才能加载。显然,这是不可接受的。分页解决了这个问题,因为一次只加载50或100篇文章,但我无法将它们全部计算在内。我可以在不加载的情况下统计某个查询中的帖子吗?或者我可以通过其他方式获得页数吗