Vào một ngày đẹp trời anh nhận lời cấu hình lại một cái website dùng WooCommerce – thứ mà anh chưa bao giờ chính thức dùng. Khách hàng yêu cầu là phải sắp xếp sản phẩm mới nhất trước nhưng cái nào hết hàng rồi thì phải cho xuống dưới cùng. Tưởng là chỉ việc bấm chuột, ai dè WooCommerce không có tuỳ chọn kiểu như thế.

Anh thử cài đặt đủ thứ plugin nhưng chả có cái nào có chức năng như vậy. Vậy đành quay sang tìm code.

Vớ được một bài trên StackExchange nhưng nó chỉ xếp sản phẩm đã hết hàng ra sau cùng còn ngày tháng thì không đả động. Thế là lại phải mò vào WordPress.org xem lại cú pháp.

Kết quả là nó phải như này:

/* Show latest products first on the shop page */
add_action( 'pre_get_posts', function ( $q ) {
    if (   !is_admin()                // Target only front end
         && is_woocommerce()          // Target only WooCommerce
         && $q->is_main_query()       // Only target the main query
    ) {
        $q->set( 'meta_key', '_stock_status' );
        $q->set( 'orderby', array('meta_value' => 'ASC', 'date' => 'DESC') );
    }
}, PHP_INT_MAX );

Nhân tiện, anh đang rảnh nên sẽ nhận làm website mà không nhất thiết phải kèm theo dịch vụ chụp ảnh nhé 😀

Đăng bởi Lựợm

Lựợm là một cử nhân ngôn ngữ học thích chụp ảnh tư liệu hơn làm web. Anh kiếm sống chủ yếu bằng nghề chụp ảnh ở Hà Nội.

Gửi bình luận

Bình luận

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.