【问题标题】:Woocommerce producuts shortcode display only two products per pageWoocommerce 产品简码每页仅显示两个产品
【发布时间】:2021-04-13 20:43:31
【问题描述】:

我正在使用店面子主题构建 WooCommerce 商店。在我的商店页面 (archive-product.php) 中,我使用以下代码来展示产品:

<?php
        $filterArray = explode("/", "http://" . $_SERVER[HTTP_HOST] . $_SERVER[REQUEST_URI]);


        if(count($filterArray)>5) {
            echo do_shortcode('[products category="' . $filterArray[count($filterArray)-2] . '" per_page="30" limit="30" columns="3" paginate="true"]');
        }
        else {
            echo do_shortcode('[products per_page="30" limit="30" columns="3" paginate=true]');
        }
?>

当我没有将 category 属性传递给简码时,一切都按预期工作。但是当我添加category时,我的页面显示不是30,而是每页只有2个产品。将products 更改为product category 根本不起作用。这种奇怪行为的原因可能是什么?

编辑:我的代码有些混乱,在functions.php 中找到了以下函数:

function modify_product_cat_query( $query ) {
    if (!is_admin() && $query->is_tax("product_cat")){
        $query->set('posts_per_page', 2);
    }
}
add_action( 'pre_get_posts', 'modify_product_cat_query' );

我以为我终于找到了问题,但即使我删除了那个 sinppet 或将值从 2 更改为 30,类别页面仍然只显示两个产品...

【问题讨论】:

  • 您能否确认有多少产品分配给该类别,因为当我测试您的代码时,它对我来说可以正常工作。
  • @GautamGolakiya 是的,我有 60 多个产品,它们分为 30 多个页面,每个页面有两个产品。

标签: php wordpress woocommerce e-commerce


【解决方案1】:

尝试使用它。您在存档页面上,因此更容易获得当前学期。您不必从 url 获取它。

    $term = get_queried_object();

    if( !empty( $term ) && !is_wp_error( $term ) ) {
        echo do_shortcode('[products category="' . $term->slug . '" per_page="6" limit="30" columns="3" paginate="true"]');
    } else {
        echo do_shortcode('[products per_page="30" limit="30" columns="3" paginate=true]');
    }

您面临的产品显示不超过 2 个的问题可能是因为某些内容覆盖了 posts_per_page。

【讨论】:

  • 是的,过度验证是问题所在,但我仍然无法解决。请检查我的编辑。
  • 能否在设置->后台读取中勾选“博客页面最多显示”。
  • 我的值为 '10'
【解决方案2】:

您可以使用woocommerce_product_query 更改posts_per_page。检查下面的代码。

add_action( 'woocommerce_product_query', 'change_posts_per_page', 999 );
function change_posts_per_page( $query ) {

    if( is_admin() )
        return;

    $query->set( 'posts_per_page', 30);
    
}

【讨论】:

  • 感谢您的帮助,但它仍然每页只显示两个产品(我当然在 else 语句中更改了 post_per_page 值)。请检查我的编辑。
猜你喜欢
  • 2015-12-30
  • 2017-06-14
  • 1970-01-01
  • 2014-09-20
  • 2014-06-18
  • 2018-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多