使用WooCommerce在一个页面上显示所有产品

时间:2013-02-25 作者:harryg

我正在运行WooCommercethis store.

虽然默认情况下是在一个页面上显示12种产品,但客户端要求使用“全部显示”按钮,以防止用户使用分页来访问其他产品。

是否有一个函数可以在当前页面上运行,该函数将重新运行循环,但会更改查询以提供更多的“每页帖子”?我对WooCommerce模板文件进行了一番探讨,但不清楚如何做到这一点。

我在考虑通过php考试GET 变量,并对其进行测试以确定是否运行修改后的查询,如(循环外):

<a href="<?php 
echo get_permalink( $post->ID ) . "?showall=1"; 
?>">Show all</a>
然后在模板文件循环之前执行类似的操作

<?php if($_GET[\'showall\'] = 1){ //something here to modify the query (wp_query perhaps?? or a woocommerce filter) } ?>
//the loop as normal
我走对了吗?这是不是很容易通过这种方式实现。如能就如何实施提供任何指导,将不胜感激。

Edit:好的,我对WooCommerce模板进行了更多的挖掘。看起来像是archive-product.php 是我要覆盖的文件。

现在,我已经在我的主题函数中使用过滤器指定了每页的产品。php如下:

add_filter( \'loop_shop_per_page\', create_function( \'$cols\', \'return 12;\' ), 20 );
我在archive-product.php 已复制到的文件my theme folder/woocommerce 要覆盖默认值,请执行以下操作:

        <?php if($_GET[\'showall\']==1){ 
            add_filter( \'loop_shop_per_page\', create_function( \'$cols\', \'return 8;\' ), 30 ); 
        } ?>
当我访问时shop_page/?showall=1 筛选器无法执行。过滤器的功能。php似乎占据主导地位,尽管优先级较低。

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

只需将条件检查添加到functions.php 文件:

if( isset( $_GET[\'showall\'] ) ){ 
    add_filter( \'loop_shop_per_page\', create_function( \'$cols\', \'return -1;\' ) ); 
} else {
    add_filter( \'loop_shop_per_page\', create_function( \'$cols\', \'return 12;\' ) );
}

SO网友:Caspar

迟到了,但如果您不必考虑php 5.2,那么使用闭包更安全、更有效:

add_filter( \'loop_shop_per_page\', function ( $cols ) {
    return - 1;
} );
(参见php manual 在…上create_function.)

SO网友:Sormano

读一下你的主题,

我已经为此创建了一个插件,创建了一个下拉框,供访问者选择他/她想要看到的产品数量。

http://wordpress.org/plugins/woocommerce-products-per-page/

希望你能在你的情况下使用这个。

结束

相关推荐

Google Map在Tab Plugins的第二个选项卡上无法使用

我正在使用postTabs plugin 和Comprehensive Google Map Plugin, 我的问题是,当我在第二个选项卡上有我的谷歌地图时,地图没有按预期加载。但是如果我把它移到第一个标签上,效果会非常好。。有没有办法让地图在第二个选项卡上工作?实际上,无论我使用哪个选项卡插件,地图都不会正确加载到第二个选项卡上。。欢迎提出任何建议。谢谢:)