Glob pagination rewrite url

时间:2018-06-18 13:09:03

标签: php wordpress pagination glob

更新

在Wordpress外部测试我的脚本,它的工作原理。所以这个分页的问题在于Wordpress。我做了一些研究,并将这个重写代码添加到我的函数文件中,但它仍然不起作用

function my_rewrite_globe_pagination()
{
 add_rewrite_rule('^newspaper/page/([0-9]{1,})/?', 'index.php?paged=$matches[1]', 'top');
}

add_action('init', 'my_rewrite_globe_pagination');

下一个按钮网址如下所示:domain/page-name/?page=2
点击下一步后浏览器中的网址:domain/page-name/page/2/

更新前
首先,我想说我在stackoverflow上阅读了所有类似的问题,但我找不到适合我案例的解决方案。

我想要实现的是在我的wordpress页面上的全球数字分页。在我的页面模板中,我有下面列出的代码,我有这个代码有两个问题:

  • 一个是我不知道如何将prev和next按钮更改为数字分页
  • 每当我点击下一个按钮时,我会看到与第一页相同的两个图像,尽管我的网址更改为domain / page-name / 2 /
 if (isset($_GET['page'])) {
            $page = $_GET['page'];
        } else {
            $page = 1;
        }

        $base_dir = trailingslashit(wp_upload_dir()['basedir']);
        $base_url = wp_upload_dir()['baseurl'];
        $dir_jpg  = '/newspaper/jpg/';
        $dir_pdf  = '/newspaper/pdf/';

        $images = glob($base_dir.$dir_jpg.'*.*');

        $limit = 2;
        $total =count($images);
        $total_pages = ceil($total/$limit);
        $offset = ($page-1) * $limit;

        $images = array_slice($images, $limit);


        foreach($images as $image) {
          $url = $base_url.$dir_jpg.basename($image);

          $filename = substr(basename($image), 0, -4);

          $pdfs = $base_url.$dir_pdf.$filename.".pdf";

          printf('<a href="'.$pdfs.'" target="_blank" class="newspaper-link col-xl-3"><img src="%s" alt="'.$filename.'.pdf"><div class="newspaper-hover"></div></a>', esc_url($url));
        }


        ?>

        <ul class="pagination">
          <li class="<?php if($page <= 1){ echo 'disabled'; } ?>">
            <a href="<?php if($page <= 1){ echo '#'; } else { echo "?page=".($page - 1); } ?>">Prev</a>
          </li>
          <li class="<?php if($page >= $total_pages){ echo 'disabled'; } ?>">
            <a href="<?php if($page >= $total_pages){ echo '#'; } else { echo "?page=".($page + 1); } ?>">Next</a>
          </li>
        </ul>

1 个答案:

答案 0 :(得分:0)

对于第一个问题,您只需打印$page - 1$page + 1代替“上一个”和“下一个”(并检查当前页面是第一个还是最后一个):

    <ul class="pagination">
      <li class="<?php if($page <= 1){ echo 'disabled'; } ?>">
        <a href="<?php if($page <= 1){ echo '#'; } else { echo "?page=".($page - 1); } ?>"><?php echo ($page <= 1) ? "X" : ($page - 1)?></a>
      </li>
      <li class="<?php if($page >= $total_pages){ echo 'disabled'; } ?>">
        <a href="<?php if($page >= $total_pages){ echo '#'; } else { echo "?page=".($page + 1); } ?>"><?php echo ($page >= $total_pages) ? "X" : ($page + 1)?></a>
      </li>
    </ul>

第二个问题是由于您对array_slice的错误调用引起的。 根据{{​​3}},第二个参数必须是数组的起始偏移量(在您的情况下为$offset),第三个参数必须是所需数组的长度($limit),所以这应该解决它:

$images = array_slice($images, $offset, $limit);