Вывод записей по алфавиту и мета полю
есть тип записи product, есть мета поле vip, которое может быть равно 0 или 1, как сделать сортировку вот такого типа:
что б записи у которых в мета поле vip=1 сначала выводились по алфавиту, а потом vip=0 но тоже по алфавиту, и если vip=1 нет таких записей, выводились бы vip 0 по алфавиту.
и второй вопрос как реализовать смену цвета background-color если стоит vip=1?
не знаю то или нет, но вот что получилось. я не силен в познаниях вп
Array ( [where] => AND ( wp_term_relationships.term_taxonomy_id IN (63) ) AND ( wp_postmeta.meta_key = 'vip' ) AND wp_posts.post_type = 'company' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') [groupby] => wp_posts.ID [join] => LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) [orderby] => wp_posts.post_title ASC [distinct] => [fields] => wp_posts.* [limits] => LIMIT 0, 10 )
Тут можно фильтрануть orderby, но тебе нужно будет прописать условия чтобы на другие запросы не повлияло. Поэтому лучше неверное попробовать через параметры запроса указать сортировку, там возможностей тоже хватает. Что-то я сразу об этом не подумал. Скинь сюда код самого запроса, вместе с параметрами как ты указываешь. Попробую поправить его.
Ну а через этот фильтр можно так сделать:
add_filter( 'posts_clauses', 'filter_function_name_1687', 10, 2 ); function filter_function_name_1687( $clauses, $this ){ // ВАЖНО нужны проверки чтобы другие запросы не затронуть $clauses['orderby'] = 'wp_postmeta.meta_value DESC, wp_posts.post_title ASC'; return $clauses; }
<?php global $query_string; // параметры базового запроса query_posts( $query_string. '&orderby=title&order=ASC'); // базовый запрос + свои параметры if( have_posts() ){ while( have_posts() ){ the_post(); ?> <?php } /* конец while */ ?> <?php } // конец if else echo "<h2>Записей нет.</h2>";?>
Сейчас у меня просто по алфавиту сортируются записи
Спасибо решил свою проблему, оказалось все очень элементарно и просто
изменил просто свой запрос.
Сделай запрос WP_Query с параметром метаполя vip и сюда покажи что находится в фильтре posts_clauses