Woocommerce Archive 产品查询将缺货产品推送到最后

时间:2021-07-09 17:25:02

标签: php wordpress woocommerce

我使用下面的代码在最后显示缺货的产品。 但是我收到了 wordpress 通知。

我该如何解决?

这是通知;

Notice: Trying to get property 'ID' of non-object in .../public/wp-includes/class-wp-query.php on line 4044    
Notice: Trying to get property 'post_title' of non-object in .../public/wp-includes/class-wp-query.php on line 4046    
Notice: Trying to get property 'post_name' of non-object in .../public/wp-includes/class-wp-query.php on line 4048

这是代码;

function _nok_order_by_stock_status( $posts_clauses, $query ) {
    // only change query on WooCommerce loops
    if ( $query->is_main_query() && ( is_product_category() || is_product_tag() || is_product_taxonomy() || is_shop() ) ) {
        global $wpdb;

        $posts_clauses['join'] .= 
        " LEFT JOIN ( 
            SELECT post_id, meta_id, meta_value FROM $wpdb->postmeta 
            WHERE meta_key = '_stock_status' AND meta_value <> '' 
        ) istockstatus ON ($wpdb->posts.ID = istockstatus.post_id) ";

        $posts_clauses['orderby'] = 
        " CASE istockstatus.meta_value WHEN 
            'outofstock' THEN 1 
            ELSE 0 
        END ASC, " . $posts_clauses['orderby'];
    }

    return $posts_clauses;
}
add_filter( 'posts_clauses', '_nok_order_by_stock_status', 2000, 2 );

0 个答案:

没有答案