Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更改显示在WooCommerce';xyz';分类页_Php_Wordpress_Woocommerce - Fatal编程技术网

Php 更改显示在WooCommerce';xyz';分类页

Php 更改显示在WooCommerce';xyz';分类页,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我有19个项目在“xyz”类别目前,但我只能看到其中的5个一次,并显示分页我不想分页 有没有办法在xyz类别的第一页显示5个以上的项目 我在模板的function.php中添加了以下代码 add_filter( 'loop_shop_per_page', create_function( '$cols', 'return 10;' ), 19 ); 但它仍然展示了5种产品 这可以在仪表板上“设置”选项卡的“读取设置”部分中更改 选项博客页面最多显示控制可以看到多少产品。将其更改为19将允许显示

我有19个项目在“xyz”类别目前,但我只能看到其中的5个一次,并显示分页我不想分页

有没有办法在xyz类别的第一页显示5个以上的项目

我在模板的function.php中添加了以下代码

add_filter( 'loop_shop_per_page', create_function( '$cols', 'return 10;' ), 19 );

但它仍然展示了5种产品

这可以在仪表板上“设置”选项卡的“读取设置”部分中更改

选项
博客页面最多显示
控制可以看到多少产品。将其更改为19将允许显示所有19种产品

编辑

另一编辑:

在woocommerce/includes/class-wc-query.php页面的第365行有以下内容

$q->set( 'posts_per_page', $q->get( 'posts_per_page' ) ? $q->get( 'posts_per_page' ) : apply_filters( 'loop_shop_per_page', get_option( 'posts_per_page' ) ) );
将其更改为:

$q->set( 'posts_per_page', $q->get( 'posts_per_page' ) ? $q->get( 'posts_per_page' ) : apply_filters( 'loop_shop_per_page', '19') );

将此代码添加到主题的function.php文件中

add_filter('loop_shop_per_page', create_function('$cols', 'return 19;'));
它对我有用。
Thakns

每个页面的
loop\u shop\u
过滤器对我不起作用,因为主题正在覆盖它。因此,我使用了
woocommerce\u product\u query
过滤器,如下所示:

<?php
add_action( 'woocommerce_product_query', 'so22835795_woocommerce_products_per_page', 1, 50 );

function so22835795_woocommerce_products_per_page( $query ) {
    if ( $query->is_main_query() ) {
        $query->set( 'posts_per_page', '5' );
    }
}

从PHP7.2开始,创建函数是。 以下过滤器可用于更改归档页面中的产品数量(我只建议使用该过滤器,如果它与设置>阅读下的wordpress设置不同)


我已经编辑了我的帖子。我认为您的
添加过滤器
有点错误。我将
10
更改为
19
,因为这是更改显示数量的值。我也尝试了这个方法。但是输出没有变化。你使用的是特定的主题还是默认的wordpress主题?@Nick我再次编辑了我的答案,试试那个方法(您可能需要去掉
functions.php
Howlin上的
add_filter
选项,非常感谢您的回答。但我发现我使用的主题为我提供了一个面板,从那里我可以显示任意多的产品。起初我没有意识到这一点,但在我的主题提供的指导下如果我能够调试这个问题。非常感谢您,您的答案对于默认模板也是正确的。创建函数在php7上被删除。2您应该能够在这里使用匿名函数解释,我刚刚注意到您在添加操作中的最后两个参数有点奇怪。1是优先级,默认值是10。第二个参数,50,将设置将从操作传递到筛选器的参数数量。默认值为1。我刚刚查看过,目前在
woocommerce\u product\u query
中最多有2个参数可用:
$q,$this
(并且您积极使用1,
$query
,因此我只需删除这两个参数,因此它将坚持默认值,并将起到相同的作用)@a-jesin-
do_action('woocommerce\u product\u query',$q,$instance);
和另一个:根据您使用的主题,您仍然可以覆盖它们的设置(如果开发人员做得很好的话)并使用
loop\u shop\u per\u page
priority
设置。第三个参数是函数的优先级,数字越低,执行越早:
add\u filter('loop\u shop\u per\u page','so22835795\u loop\u shop\u per\u page',$priority,0);
(参考答案).所以我想更高的数字会覆盖以前的设置..?我对最近的woocommerce更新有一个问题。我试图设置每页的循环,但没有效果。这个答案对我有效。每页的帖子是关键。我通过片段添加了它,所以我不需要修改模板文件
<?php
add_action( 'woocommerce_product_query', 'so22835795_woocommerce_products_per_page', 1, 50 );

function so22835795_woocommerce_products_per_page( $query ) {
    if ( $query->is_main_query() ) {
        $query->set( 'posts_per_page', '5' );
    }
}
/**
  * WC: change products per page
  * @return int
  */
function so22835795_loop_shop_per_page() {
    return -1; //return any number, -1 === show all
};
add_filter('loop_shop_per_page', 'so22835795_loop_shop_per_page', 10, 0);