我已经try 了下面的URL参数,orderby参数工作正常,显示所有按日期排序的产品,但我只想显示前3个产品(limit参数不工作):

../shop/?orderby=date&limit=3

有人成功了吗?

推荐答案

这可以通过在woocommerce_product_query操作钩子中挂钩的函数来完成.

  1. 使用posts_per_page参数:

当将3设置为posts_per_page参数时,它每页(so not convenient)显示3个产品.
如果我们另外将nopaging参数设置为FALSE,则显示所有产品时不会分页.

  1. 使用post__in参数(the right way):

这需要使用您定义的"Limit"URL参数预先查询按日期排序的产品ID.前3个产品显示时没有分页.

密码:

add_action( 'woocommerce_product_query', 'enable_query_var_limit', 10, 2 );
function enable_query_var_limit( $query, $q ) {
    error_log(print_r($query, true));
    if ( ! is_admin() && isset($_GET['limit']) && isset($_GET['orderby']) 
    && is_numeric($_GET['limit']) && $_GET['orderby'] === 'date' ) {
        $query->set( 'post__in', wc_get_products( [
            'status'    => 'publish',
            'limit'     => intval($_GET['limit']), 
            'orderby'   => 'date',
            'return'    => 'ids',
        ] ) );
    }
}

代码将在子主题的functions.php文件中(或插件中).

测试和工作与?orderby=date&limit=3查询字符串(URL variables).

Php相关问答推荐

尽管包含目标日期,但日期范围比较仍有意外输出

使用WooCommerce本机产品短码时不考虑价格筛选(_SHORT CODE)

根据用户组或登录状态显示或隐藏定价后添加的文本

Msgraph-sdk-php v2如何从返回对象中获取数据?

RediSearch PHP希望我在每次使用时定义所有字段

在PHP中,如何将介于0和1之间(包括0和1)的浮点概率转换为数组索引?

在WooCommerce获取所有具有全球产品属性品牌的简单产品

根据发货类别在WooCommerce产品页面中显示快捷代码

上传WordPress模板中的翻译文件(.mo和.po)

隐藏WooCommerce管理子菜单;主页;来自store 经理

允许在WooCommerce管理订单列表中使用计费邮箱进行搜索

如何在其他数组php中创建具有关联数组的数组

后退按钮不起作用 laravel ajax crud

URL中包含"&"与DirectoryIterator不兼容

在WooCommerce中显示 checkout 的高级自定义字段(Advanced Custom Fields)并保存其值

Laravel:ArgumentCountError: 函数 App\Mail 的参数太少

适当的时区处理 Laravel / Carbon

PHP 日期格式:ISO8601 与 ISO8601_EXPANDED

如何在字符串constant-string-NUMBER-*中获取 NUMBER?

我想更新表格中的结果并将它们发布到浏览器,但它不起作用