Разбивка на страницы в отдельной вкладке продукта woocommerce

#php #ajax #wordpress #pagination #woocommerce

#php #ajax #wordpress #разбивка на страницы #woocommerce

Вопрос:

Я пытаюсь вставить цикл post (материал wp_query) во вкладку отдельного продукта woocommerce. Идея состоит в том, чтобы показывать сообщения, связанные с продуктом, с разбиением на страницы. Однако постоянная ссылка на продукт не изменяется.

Выполнение всех работ в function.php . Сначала я добавляю вкладку.

 add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab' );
function woo_new_product_tab( $tabs ) {


if (get_post_meta(get_the_ID(), '_crowdfundingcheckboxvalue', true) == 'yes') {
    $tabs['test_tab'] = array(
        'title'     => __( 'New tab', 'woocommerce' ),
        'priority'  => 50,
        'callback'  => 'woo_new_product_tab_content'
    );
    };
    return $tabs;

}
  

Эта часть в порядке, добавлена новая вкладка. Затем функция пользовательской разбивки на страницы.

   function custom_pagination($numpages = '', $pagerange = '', $paged='') {

  if (empty($pagerange)) {
    $pagerange = 2;
  }
  global $paged;
  if (empty($paged)) {
    $paged = 1;
  }
  if ($numpages == '') {
    global $wp_query;
    $numpages = $wp_query->max_num_pages;
    if(!$numpages) {
        $numpages = 1;
    }
  }
  $pagination_args = array(
    'base'            => get_pagenum_link(1) . '%_%',
    'format'          => 'page/%#%',
    'total'           => $numpages,
    'current'         => $paged,
    'show_all'        => False,
    'end_size'        => 1,
    'mid_size'        => $pagerange,
    'prev_next'       => True,
    'prev_text'       => __('amp;laquo;'),
    'next_text'       => __('amp;raquo;'),
    'type'            => 'plain',
    'add_args'        => false,
    'add_fragment'    => ''
  );

  $paginate_links = paginate_links($pagination_args);

  if ($paginate_links) {
    echo "<nav class='custom-pagination'>";
      echo "<span class='page-numbers page-num'>Page " . $paged . " of " . $numpages . "</span> ";
      echo $paginate_links;
    echo "</nav>";
  }

}
  

Все выполнено без конфликта. Получив текущий идентификатор продукта и выполнив цикл, найдите для отображения соответствующие записи.

 function woo_new_product_tab_content() {

    // The new tab content
    echo'<div class="inner">';
        echo '<h2>New tab</h2>';
        $paged = ( get_query_var('page') ) ? get_query_var('page') : 1;
        $id = get_the_ID();
        $custom_args = array(
            'post_type' => 'fundupdate',
            'posts_per_page' => 2,
            'post_status' => 'publish',
            'meta_query' => array (
                array (
                    'key' => 'campaign_id',
                    'value' => $id
                )
            ),
            'paged' => $paged,
            'page' => $paged
        );
        $custom_query = new WP_Query( $custom_args );
        if ( $custom_query->have_posts() ) :
        while ( $custom_query->have_posts() ) : $custom_query->the_post();
            the_title();
        endwhile;

        if (function_exists(custom_pagination)) {
            custom_pagination($custom_query->max_num_pages,"",$paged);
        }
        wp_reset_postdata();
        else: 
            echo 'Sorry, no posts matched your criteria';
        endif;

    echo'</div>';
}
  

Здесь все хорошо, но есть фатальная проблема: кажется, что единственный продукт не разрешает, чтобы его постоянная ссылка содержала параметр разбивки на страницы.

Все перенаправляют обратно на исходную ссылку (например www.example.com/store/product ) хотя навигация по странице имеет свой собственный параметр разбивки на страницы (например www.example.com/store/product/page/2 ). Просто спрашиваю, можно ли это решить с помощью php? Или использовать ajax, чтобы избежать проблемы?