WooCommerce 中是否有所有可能排序字段的列表?

cyt*_*nny 4 php wordpress product woocommerce woocommerce-theming

我发现可以添加自定义字段以在 WooCommerce 中对产品进行排序(例如这个问题)从示例中复制:

add_filter( 'woocommerce_get_catalog_ordering_args', 'enable_catalog_ordering_by_modified_date' );
function enable_catalog_ordering_by_modified_date( $args ) {
    if ( isset( $_GET['orderby'] ) ) {
        if ( 'modified_date' == $_GET['orderby'] ) {
            return array(
                'orderby'  => 'modified',  //This is the custom field to be sorted by, and what I am asking for
                'order'    => 'DESC',
            );
        }
    }
    return $args;
}
Run Code Online (Sandbox Code Playgroud)

是否有可用于排序的所有字段的列表?


PS:感谢您的评论,但我需要的不是对 WordPress 中的普通帖子进行排序,而是对 WooCommerce 中的产品进行排序。

muj*_*nly 5

这些是可用 orderby 选项的默认列表( id, title, relevance, rand, date, price, popularity, rating)。开关盒的外壳可能就是您正在寻找的。

switch ( $orderby ) {
        case 'id':
            $args['orderby'] = 'ID';
            break;
        case 'menu_order':
            $args['orderby'] = 'menu_order title';
            break;
        case 'title':
            $args['orderby'] = 'title';
            $args['order']   = ( 'DESC' === $order ) ? 'DESC' : 'ASC';
            break;
        case 'relevance':
            $args['orderby'] = 'relevance';
            $args['order']   = 'DESC';
            break;
        case 'rand':
            $args['orderby'] = 'rand'; // @codingStandardsIgnoreLine
            break;
        case 'date':
            $args['orderby'] = 'date ID';
            $args['order']   = ( 'ASC' === $order ) ? 'ASC' : 'DESC';
            break;
        case 'price':
            $callback = 'DESC' === $order ? 'order_by_price_desc_post_clauses' : 'order_by_price_asc_post_clauses';
            add_filter( 'posts_clauses', array( $this, $callback ) );
            break;
        case 'popularity':
            add_filter( 'posts_clauses', array( $this, 'order_by_popularity_post_clauses' ) );
            break;
        case 'rating':
            add_filter( 'posts_clauses', array( $this, 'order_by_rating_post_clauses' ) );
            break;
    }
Run Code Online (Sandbox Code Playgroud)

上面的代码来自woocommerce/includes/class-wc-query.php第586行...