【问题标题】:Change WooCommerce products query to sort randomly将 WooCommerce 产品查询更改为随机排序
【发布时间】:2017-10-09 20:26:30
【问题描述】:

到目前为止,我发现我需要使用以下钩子来更改 WooCommerce 产品查询:

add_action( 'woocommerce_product_query', 'xxxx_product_query' );
function xxxx_product_query( $q ){

    ...do something here...
}

但是我该怎么做:

1.使查询对所有产品进行随机排序;

2.将随机排序的产品保留30天,30天到期后再次更换;

3.使所有带有自定义字段“_new”的产品始终出现在查询的开头(这些不应随机排序)。

提前感谢您的帮助!

【问题讨论】:

  • 尝试用这个 $q->set( 'orderby', 'rand' ); 修改你的查询抱歉未经测试。您可能需要在 Cron 作业中运行它并将 ID 作为数组存储在数据库中

标签: php mysql wordpress woocommerce hook-woocommerce


【解决方案1】:

您可以在您的functions.php文件中使用此代码,在产品/显示选项卡下的WooCommerce设置页面中的默认排序顺序组合框中添加一个额外的排序选项。

add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args' );

function custom_woocommerce_get_catalog_ordering_args( $args ) {
    $orderby_value = isset( $_GET['orderby'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );

    if ( 'random_list' == $orderby_value ) {
        $args['orderby'] = 'rand';
        $args['order'] = '';
        $args['meta_key'] = '';
    }
    return $args;
}

add_filter( 'woocommerce_default_catalog_orderby_options', 'custom_woocommerce_catalog_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby' );

function custom_woocommerce_catalog_orderby( $sortby ) {
    $sortby['random_list'] = 'Random';
    return $sortby;
}

为什么要使用“_new”自定义字段?您可能只使用添加产品的时间戳来确定产品是否是新产品。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2022-01-20
    • 2019-11-12
    相关资源
    最近更新 更多