Как разбить на страницы с помощью цифровых загрузок woocommerce PHP - PullRequest
0 голосов
/ 20 февраля 2019

Так что я знаю, что Wordpress имеет много функций разбиения на страницы, но они, похоже, работают только с постами.На странице моей учетной записи пользователя woocommerce есть раздел «Доступные загрузки».Я продаю цифровые загрузки, и у некоторых клиентов так много таких цифровых загрузок, что они либо не могут больше загружать страницу своего аккаунта, либо загрузка занимает очень много времени.Я надеялся, что есть какой-то простой способ добавить нумерацию страниц в этот раздел, но я ничего не могу найти там.Я перепробовал несколько вариантов.В woocommerce есть PHP-файл с именем my-downloads.php, который получает доступ к загрузкам пользователей в массив через:

$downloads = WC()->customer->get_downloadable_products()  

Внутри файла он проходит по массиву и отображает их ссылку для скачивания.

<ul class="digital-downloads">
<?php foreach ( $downloads as $download ) : ?> 
<li><?php echo apply_filters( 'woocommerce_available_download_link', '<a class="dropdown-item" href="' . esc_url( $download['download_url'] ) . '"><i class="fa fa1 fa-download"></i>' . $download['product_name'] . '</a>', $download ); ?></li>
</ul>

Как мне успешно добавить нумерацию страниц на этой странице в цикле foreach?

Я попытался добавить это после инициализации массива $ downloads

$page = ! empty( $_GET['page'] ) ? (int) $_GET['page'] : 1;
$total = count( $downloads ); //total items in array    
$limit = 5; //per page    
$totalPages = ceil( $total/ $limit ); //calculate total pages
$page = max($page, 1); //get 1 page when $_GET['page'] <= 0
$page = min($page, $totalPages); //get last page when $_GET['page'] > 
$totalPages
$offset = ($page - 1) * $limit;
if( $offset < 0 ) $offset = 0;

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

I затемпопытался добавить ссылки на страницы внизу файла:

$link = '/my-account/?page=%d';
$pagerContainer = '<div style="width: 300px;">';   
if( $totalPages != 0 ) 
{
  if( $page == 1 ) 
  { 
    $pagerContainer .= ''; 
  } 
  else 
  { 
    $pagerContainer .= sprintf( '<a href="' . $link . '" style="color: #c00"> &#171; prev page</a>', $page - 1 ); 
  }
  $pagerContainer .= ' <span> page <strong>' . $page . '</strong> from ' . $totalPages . '</span>'; 
  if( $page == $totalPages ) 
  { 
    $pagerContainer .= ''; 
  }
  else 
  { 
    $pagerContainer .= sprintf( '<a href="' . $link . '" style="color: #c00"> next page &#187; </a>', $page + 1 ); 
  }           
}                   
$pagerContainer .= '</div>';

echo $pagerContainer;

Я чувствую, что я близко, но я не могу заставить его работать на 100% так, как я хочу.Любая помощь будет принята с благодарностью.

...