As you can see in the documentation, neither leasenum
nor an arbitrary meta key is a valid value for orderby
.
If you want to sort by a single meta value, you should set meta_key
to that key, and then you can set orderby
to meta_key
(or meta_value_num
if the value is numeric) to sort by that key. This is also described in the documentation:
Note that a
meta_key=keyname
must also be present in the query. Note
also that the sorting will be alphabetical which is fine for strings
(i.e. words), but can be unexpected for numbers (e.g. 1, 3, 34, 4, 56,
6, etc, rather than 1, 3, 4, 6, 34, 56 as you might naturally expect).
Usemeta_value_num
instead for numeric values. You may also specify
meta_type
if you want to cast the meta value as a specific type.
Possible values are ‘NUMERIC’, ‘BINARY’, ‘CHAR’, ‘DATE’, ‘DATETIME’,
‘DECIMAL’, ‘SIGNED’, ‘TIME’, ‘UNSIGNED’, same as in$meta_query
.
When using ‘meta_type’ you can also use ‘meta_value_*’ accordingly.
For example, when using DATETIME as ‘meta_type’ you can use
‘meta_value_datetime’ to define order structure.
You are currently already using the meta_key
property to filter the results by a value, but this can be moved to a meta_query
so that you can use meta_key
for sorting:
$args = array(
'post_type' => 'shop',
'posts_per_page' => -1,
'order' => 'ASC',
'orderby' => 'meta_value_num',
'meta_key' => 'leasenum',
'meta_query' => array(
array(
'key' => 'mall',
'value' => $getvalue,
),
),
);
$the_query = new WP_Query( $args );