У меня есть такой запрос, который отлично работает
$paged = 1;
$filter_min_price = 5;
$filter_max_price = 300;
$products5_cat_term_id = 368;
$filter_brand = "Now, Garmin";
$sort_order = "ASC";
$the_query = array(
'post_type' => 'products5', // name of post type.
'tax_query' => array(
array(
'taxonomy' => 'products5_categories', // taxonomy name
'field' => 'term_id', // term_id, slug or name
'terms' => $products5_cat_term_id,
)
),
'posts_per_page' => 100,
'paged' => $paged,
'post_status' => 'publish',
'meta_query' => array(
'relation' => 'AND',
'price_clause' => array(
'key' => 'kixx_product_price',
'value' => array( $filter_min_price, $filter_max_price ),
'type' => 'DECIMAL(10, 2)',
'compare' => 'BETWEEN',
),
array(
'relation' => 'OR',
'brand_clause' => array(
'key' => 'kixx_product_brand',
'value' => $filter_brand,
'compare' => 'IN',
),
),
),
'orderby' => array(
'price_clause' => $sort_order,
'brand_clause' => $sort_order,
),
);
Так что запрос на самом деле выглядит так:
SELECT SQL_CALC_FOUND_ROWS
{$wpdb->prefix}posts.ID FROM {$wpdb->prefix}posts
LEFT JOIN {$wpdb->prefix}term_relationships ON ({$wpdb->prefix}posts.ID = {$wpdb->prefix}term_relationships.object_id)
INNER JOIN {$wpdb->prefix}postmeta ON ( {$wpdb->prefix}posts.ID = {$wpdb->prefix}postmeta.post_id )
INNER JOIN {$wpdb->prefix}postmeta AS mt1 ON ( {$wpdb->prefix}posts.ID = mt1.post_id )
WHERE 1=1
AND ( {$wpdb->prefix}term_relationships.term_taxonomy_id IN (368))
AND ( ( {$wpdb->prefix}postmeta.meta_key = 'kixx_product_price' AND CAST({$wpdb->prefix}postmeta.meta_value AS DECIMAL(10,2)) BETWEEN '5' AND '300' )
AND (( mt1.meta_key = 'kixx_product_brand' AND mt1.meta_value IN ('Now','Garmin') )))
AND {$wpdb->prefix}posts.post_type = 'products5'
AND (({$wpdb->prefix}posts.post_status = 'publish'))
GROUP BY {$wpdb->prefix}posts.ID
ORDER BY CAST({$wpdb->prefix}postmeta.meta_value AS DECIMAL(10,2)) ASC,
CAST(mt1.meta_value AS CHAR) ASC
LIMIT 0, 100
У меня есть плагин ThirstyAffiliates, и я хочу отсортировать этот запрос поколичество кликов ThirstyAffiliates ...
Таблица кликов ThirstyAffiliates выглядит следующим образом:
id (AutoIcrement) |link_id (целое число - идентификатор сообщения) |date_clicked (дата / время, когда произошел клик)
Когда я запускаю этот запрос, я получаю ссылки ThirstyAffiliate, отсортированные по кликам:
$query = "SELECT link_id,COUNT(*) as count FROM {$wpdb-prefix}ta_link_clicks GROUP BY link_id ORDER BY count DESC";
$results = $wpdb->get_results( $query, ARRAY_A );
... и я получаю все сообщения, отсортированные по количеству кликов(и это прекрасно работает), когда я запускаю это утверждение в одиночку, но мой вопрос: как объединить этот вид с $ the_query, чтобы я получил этот порядок сортировки вместо текущего оператора "orderby"?
Можно ли это сделатьвнутри запроса Wp напрямую?и если нет - может кто-нибудь помочь мне, как написать пользовательский запрос SQL для достижения этой цели?