WooCommerce中的分页

时间:2014-06-14 05:35:31

标签: php mysql woocommerce

我正在使用此短代码在页面上显示产品类别。但是当我们使用它时,它并没有显示分页。因为我们的产品类别很多。

我们使用以下代码:

[product_category category="snowpeak" per_page="12" columns="4" orderby="date" order="desc"]

4 个答案:

答案 0 :(得分:4)

您可以投票支持此功能,以便在此处实现为WooCommerce Shortcode: http://ideas.woothemes.com/forums/133476-woocommerce/suggestions/4146798-add-pagination-support-for-list-of-products-render

否则,您可以创建自定义产品循环(http://docs.woothemes.com/document/sample-products-loop/)并在WP_Query中为分页添加自定义arg:

例如

    <ul class="products">
        <?php
        global $paged;

            $paged = ( get_query_var('page') ) ? get_query_var('page') : 1;
            $args = array(
                'post_type' => 'product',
                'posts_per_page' => 4,
                'paged' => $paged


                );
            $loop = new WP_Query( $args );
            if ( $loop->have_posts() ) {
                while ( $loop->have_posts() ) : $loop->the_post();
                    woocommerce_get_template_part( 'content', 'product' );
                endwhile;
            } else {
                echo __( 'No products found' );
            }
        ?>


    <nav>
        <ul>
            <li><?php previous_posts_link( '&laquo; PREV', $loop->max_num_pages) ?></li> 
            <li><?php next_posts_link( 'NEXT &raquo;', $loop->max_num_pages) ?></li>
        </ul>
    </nav>

    <?php wp_reset_postdata(); ?>
    </ul><!--/.products-->

答案 1 :(得分:1)

您可以在Post页面中使用的产品页面中使用相同的分页。 对于一个实例

在functions.php文件中添加以下代码

    function custom_pagination() {
    global $wp_query;
    $big = 999999999;
    $pages = paginate_links(array(
        'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
        'format' => '?page=%#%',
        'current' => max(1, get_query_var('paged')),
        'total' => $wp_query->max_num_pages,
        'prev_next' => false,
        'type' => 'array',
        'prev_next' => TRUE,
        'prev_text' => '&larr; Previous',
        'next_text' => 'Next &rarr;',
            ));
    if (is_array($pages)) {
        $current_page = ( get_query_var('paged') == 0 ) ? 1 : get_query_var('paged');
        echo '<ul class="pagination">';
        foreach ($pages as $i => $page) {
            if ($current_page == 1 && $i == 0) {
                echo "<li class='active'>$page</li>";
            } else {
                if ($current_page != 1 && $current_page == $i) {
                    echo "<li class='active'>$page</li>";
                } else {
                    echo "<li>$page</li>";
                }
            }
        }
        echo '</ul>';
    }
}

下一步是调用该功能,在帖子或产品页面中进行分页工作

有关wp_query

的示例
<?php 

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$wp_query = new WP_Query("category_name='prayer'&paged=$paged&posts_per_page=12"); 
?>

<?php if ( $wp_query->have_posts() ) : ?>



    <!-- the loop -->
    <?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>

        <?php get_template_part('prayer-loop'); ?>

    <?php endwhile; ?>
    <!-- end of the loop -->

    <div class="row" style="clear: both;">
        <?php custom_pagination(); ?>
    </div>


    <?php wp_reset_postdata(); ?>

<?php else : ?>
    <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>

如果您将bootstrap添加到您的网站,这个分页将会很有效。

答案 2 :(得分:0)

您可以尝试一下。

[products per_page="4" columns="2" paginate="true"]

答案 3 :(得分:-1)

<ul class="products">
      <?php
      global $paged;
          $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
          $args = array(
              'post_type' => 'product',
              'posts_per_page' => 4,
              'paged' => $paged


                );
            $loop = new WP_Query( $args );
            if ( $loop->have_posts() ) {
                while ( $loop->have_posts() ) : $loop->the_post();
                    woocommerce_get_template_part( 'content', 'product' );
                endwhile;
            } else {
                echo __( 'No products found' );
            }
        ?>


    <nav>
        <ul>
            <li><?php previous_posts_link( '&laquo; PREV', $loop->max_num_pages) ?></li> 
            <li><?php next_posts_link( 'NEXT &raquo;', $loop->max_num_pages) ?></li>
        </ul>
    </nav>

    <?php wp_reset_postdata(); ?>
    </ul><!--/.products-->