To make both 'in_stock' and 'sortby' work in the array, you need to modify the code as follows:\n\nphp\n$idarray = array();\n$data = array(\n 'post_type' => 'qqproduct',\n 'post_status' => 'publish',\n 'orderby' => 'DATE',\n 'order' => 'DESC',\n 'posts_per_page' => $per_page,\n 'paged' => $paged,\n);\n\nforeach ($results as $key => $value) {\n\n if ($key == 'qcat') {\n if ($value) {\n if ($value != 'all') {\n\n $cat_query = array('relation' => 'OR',);\n $catos = (explode(",", $value));\n\n foreach ($catos as $cato) {\n\n $cat_query[] = [\n 'taxonomy' => 'qqcpat',\n 'field' => 'term_id',\n 'terms' => $cato,\n ];\n\n $keys[] = $cato;\n\n }\n $data['tax_query'] = array(array($cat_query),);\n\n\n }\n }\n } elseif ($key == 'offset') {\n } elseif ($key == 'in_stock') {\n\n if (!isset($data['meta_query'])) {\n $data['meta_query'] = array();\n }\n\n $data['meta_query'][] = array(\n 'key' => 'qqp_qty',\n 'value' => array('0'),\n 'compare' => '>'\n );\n\n $keys[] = 'in_stock';\n } elseif ($key == 'sortby') {\n if ($value == 'newest') {\n\n $data['orderby'] = 'DATE';\n\n } elseif ($value == 'discount') {\n\n if (!isset($data['meta_query'])) {\n $data['meta_query'] = array();\n }\n\n $data['meta_query'][] = array(\n 'key' => 'qqpd_price',\n 'value' => array(''),\n 'compare' => 'NOT IN'\n );\n\n $data['meta_key'] = 'qqpd_price';\n\n } elseif ($value == 'review') {\n\n if (!isset($data['meta_query'])) {\n $data['meta_query'] = array();\n }\n\n $data['meta_query'][] = array(\n 'key' => 'qq_product_rate',\n 'value' => array(''),\n 'compare' => 'NOT IN'\n );\n\n $data['meta_key'] = 'qq_product_rate';\n $data['orderby'] = 'meta_value_num';\n\n } elseif ($value == 'topsale') {\n\n if (!isset($data['meta_query'])) {\n $data['meta_query'] = array();\n }\n\n $data['meta_query'][] = array(\n 'key' => 'qq_total_views',\n 'value' => array(''),\n 'compare' => 'NOT IN'\n );\n\n $data['meta_key'] = 'qq_total_views';\n $data['orderby'] = 'meta_value_num';\n\n }\n\n $keys[] = $value;\n\n }\n}\n\n\nI have added a check to see if the 'meta_query' key is already set in the data array. If not, it will be initialized as an empty array. Then, the 'in_stock' and 'sortby' conditions will be added to the 'meta_query' array, allowing both to work together.

How to make 'in_stock' and 'sortby' work together in WordPress Query

原文地址: https://www.cveoy.top/t/topic/qd8w 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录