WooCommerce定制循环,展示所有产品

时间:2013-06-05 作者:HamzStramGram

我目前在一家电子商务网站上工作,遇到了一个问题。我的客户想要一个页面电子精品店,展示所有产品类别,然后是三个促销产品和一个“全部展示”按钮。

这个“全部显示”按钮应该显示商店包含的所有产品,并使用默认的woocommerce排序和分页。

首先,我不知道我做得对。到目前为止,我看到的是显示产品类别的页面,当我在该页面上单击“全部显示”按钮时,我会用GET 论点/?all=1 并展示产品。

<a class="product-category-view-all" href="?all=1"><?php _e(\'View all\'); ?></a>
I copied the idea from this post, 这是我的代码:

<div id="content" class="hfeed">
<h1><?php _e(\'The E-boutique\'); ?></h1>

<?php
if (isset($_GET[\'all\']))
{
    $args = array(
        \'post_type\' => \'product\',
        \'orderby\' => $orderby,
    );
    $wp_query = new WP_Query($args);
    ?>

    <?php do_action(\'woocommerce_before_shop_loop\'); // woocommerce sorting ?>

    <div class="clear"></div>
    <ul class="products-list">
        <?php woocommerce_product_subcategories(); ?>

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

            <?php woocommerce_get_template_part(\'content\', \'product\'); ?>

            <?php
        endwhile; // end of the loop. 
        wp_reset_query(); 
        ?>
    </ul>
    <div class="clear"></div>

    <?php do_action(\'woocommerce_after_shop_loop\'); // woocommerce pagination   ?>

    <?php
}
else
{
    // Code to display the product categories with thumbnails.
}
?>

产品显示良好,可看到分拣选择。当我想更改排序时,页面会重新加载,但顺序没有更改,分页设置为每页3个产品,但不受尊重。(不显示分页按钮)。

我想补充一点,这是我第一个使用WordPress和WooCommerce的网站。

2 个回复
最合适的回答,由SO网友:HamzStramGram 整理而成

我没有完全解决我的问题。我的客户改变了主意,不再需要分类了。

但关于分页,我在查询中添加了一个新的参数,从而使其正常工作,下面是使其正常工作的代码:

<?php
    $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;

    $args = array(
        \'post_type\' => \'product\',
        \'paged\' => $paged,
    );
    $wp_query = new WP_Query($args);

    if (isset($_GET[\'all\']))
    {
        ?>

        <?php do_action(\'woocommerce_archive_description\'); ?>

        <?php if (have_posts()) : ?>

            <?php
            // I don\'t want the sorting anymore
            //do_action(\'woocommerce_before_shop_loop\');
            ?>

            <ul class = "products-list">
                <?php while (have_posts()) : the_post(); ?>

                    <?php woocommerce_get_template_part(\'content\', \'product\'); ?>

                <?php endwhile; // end of the loop.   ?>
            </ul>

            <?php
            /*  woocommerce pagination  */
            do_action(\'woocommerce_after_shop_loop\');
            ?>

        <?php elseif (!woocommerce_product_subcategories(array(\'before\' => woocommerce_product_loop_start(false), \'after\' => woocommerce_product_loop_end(false)))) : ?>

            <?php woocommerce_get_template(\'loop/no-products-found.php\'); ?>

        <?php endif; ?>
        <?php
    }
    else
    {
        // Code to display the product categories with thumbnails.
    }
?>
The$paged 变量帮助我通过get获取URL中传递的当前页面。

再一次,我不知道这是否是最好的方法。但它为我做了工作。

我希望它能帮助别人。

SO网友:Rynoceris

在$args数组中,您应该能够添加\'posts_per_page\' => -1 显示所有产品。结果如下所示:

$args = array(
    \'post_type\' => \'product\',
    \'paged\' => $paged,
    \'posts_per_page\' => -1
);

结束

相关推荐

Resort get_categories

我有一个get\\u categories数组$args=array( \'orderby\' => \'id\', \'order\' => \'ASC\', \'taxonomy\' => \'wpsc-variation\', \'hierarchical\' => 1, \'hide_empty\' => 0 ); $variationCategories=get_cate