meta_compare

Надыбал на форумах упоминания о интреснои параметре к query_posts – meta_compare. Но нигде в кодексах описания его нет (или поиск и контрал + Ф не находит).
Пробую вот так выводить только те записи у которых в поле price не указан ноль.

query_posts( $query_string . '&cat=1&meta_key=price&meta_compare=!=&meta_value=0' );

как горошох о стенку, все равно выводит проданные товары 🙂 🙁

Кто-то работал с данным параметром?

Этот параметр встречается только в user.php, поэтому могу предположить, что он имеет отношение только к метаданным юзера.

Странно, речь шла именно о записях, да и Соники в ее мегапосте о кастомфилдах есть упоминание:

Пример 19
Выводим посты с определенным произвольным полем + условие для значения произвольного поля
Нашла в Кодексе новый параметр для произвольных полей в query_posts

meta_compare= оператор для meta_value=, по умолчанию '=', другие возможные значения '!=', '>', '>=', '<', и '<='

Примеры использования:

Вывод записей и страниц с ключем произвольного поля colorи любым значением, кроме blue:


<?php query_posts('post_type=any&meta_key=color&meta_compare=!=&meta_value=blue'); ?>

Кажись я понял! Вы наверное изучали сырцы устаревших версий, а я использовал не самую последнюю версию )))
Обновлюсь и отпишусь

Если 3.2.1 уже устаревшая, тогда простите.

В файте meta.php обнаружена строка
$meta_compare = isset( $q[‘compare’] ) ? strtoupper( $q[‘compare’] ) : ‘=’;
Попробуйте не "meta_compare", а "compare".

Никак не хочет работать. Плюнул уже и пробую через кастом квери. Но тут наверное уже сказывается отсутвие нормальных знаний синтакиса:

function new_join($pjoin){ 
if(is_category()){ 
global $wpdb; 
$pjoin .= "LEFT JOIN ( SELECT * FROM $wpdb->postmeta WHERE meta_key = 'price' ) AS metasort 
ON $wpdb->posts.ID = metasort.post_id"; 
$pjoin .= "WHERE metasort.meta_value > 0";
} 
return ($pjoin); 
} 


add_filter('posts_orderby', 'new_order' ); 

function new_order( $orderby ){ 
global $wpdb; 
if(is_category()){ 
$orderby = "metasort.meta_value DESC"; 
} 
return $orderby; 
}

Кстати, тут момент еще один для веселья. Если указать is_category, то функция также исполняется для всех остальных запросов (скажем, на главной) если у нас query_posts имеет параметр cat…

Все! Описание нашел здесь http://codex.wordpress.org/Class_Reference/WP_Query

Вот так вот заработало

<?php
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();

$taxquery['themes'] = $_GET["teg"];
$taxquery['post_type'] = "post";
$taxquery['meta_key'] = "price";
$taxquery['meta_value'] = "0";
$taxquery['meta_compare'] = "=";
//$taxquery['posts_per_page'] = 5;
$taxquery['paged'] = $paged;
$wp_query->query( $taxquery ); ?>
<?php if (have_posts()) : ?>
<div id="publ">
<?php while ($wp_query->have_posts()): $wp_query->the_post(); ?>
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2><br/>
<?php endwhile; ?>
</div>
<div style="clear: both;"><?php get_template_part('navigation'); ?></div>
<?php endif; ?>
<?php $wp_query = null; $wp_query = $temp; ?>
Anonymous
Отправить
Ответ на: