Woocomells-在归档页面中按浮动属性订购产品

时间:2018-07-16 作者:javiregpa

我试图通过float属性(pa\\U od)在前端订购产品,我有此代码,但订单不正确

add_action( \'woocommerce_product_query\', \'imcar_custom_product_query\' );
function imcar_custom_product_query( $query ) {

    if( ! $query->is_main_query() )
        return;

    $query->set( \'orderby\', \'pa_od\' );
    $query->set( \'order\', \'ASC\' );

    return $query;
}
订单不是ASC,第一个产品的pa\\U od值为25,第二个为12,第三个为20。

谢谢

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

好啊首先,`$query->set(\'orderby\',\'pa\\u od\');\'很可能什么都不会做。你不能按字符串排序,以为WordPress会猜出那是什么。

以下是可能的orderby 值:

https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters

如果要按自定义字段订购,则必须按以下方式进行:

$query->set( \'meta_key\', \'pa_od\' );
$query->set( \'orderby\', \'meta_value\' );
$query->set( \'order\', \'ASC\' );
因为您想将该元值视为数字,所以这才是您真正想要的:

$query->set( \'meta_key\', \'pa_od\' );
$query->set( \'orderby\', \'meta_value_num\' );
$query->set( \'order\', \'ASC\' );
你的函数是一个动作,所以你不需要返回任何东西-返回的值无论如何都会被忽略。。。下面是所有代码:

add_action( \'woocommerce_product_query\', \'imcar_custom_product_query\' );
function imcar_custom_product_query( $query ) {

    if( ! $query->is_main_query() )
        return;

    $query->set( \'meta_key\', \'pa_od\' );
    $query->set( \'orderby\', \'meta_value_num\' );
    $query->set( \'order\', \'ASC\' );
}

结束

相关推荐

如何在wp-Query中比较不同的时间戳以获取事件自定义帖子类型?

我有一个带有自定义元数据库的自定义帖子类型(as seen on wptheming.com) 并且希望进行查询以显示即将发生的事件,例如在侧边栏中,过去的日期被忽略。但我需要一个当前时间的值来和事件开始时间进行比较。现在我从current_time(\'mysql\') 看起来是这样的:2012-02-16 13:15:31元的开始时间如下所示:201108121100如何使这两个日期具有可比性?我可以在查询中执行吗?或者是否有其他解决方案?以下是我到目前为止的查询(值留空,时间戳回显):<?ph