установить вывод на базе нескольких meta_value в wordpress

ETNO
На сайте с 16.06.2008
Offline
117
1547

в ВП есть интересная функция query_post на основе значений custom fields. Примерно она выглядит так:

<?php query_posts($query_string . "&meta_key=ratings_score&meta_value=9") ?> 

где meta_key - наше поле, meta_value - его значение.

Задача сделать так, чтобы можно было указывать не одно значение, а несколько. т.е. должно быть так meta_value=1,2,3,4,5 - но такая штука не работает. берется только первое значение, остальные значения после запятой игнорятся

вот так

$query = array(

'meta_key' => array('ratings_score'),
'meta_value' => array('1', '2'),
'order' => 'ASC'

тоже самое, идет проверка только первого значения, т.е. 1, а 2 - игнорируется.

как правильно записать?

Wordpress тема для заработка на партнерках (http://themeforest.net/item/rehub-directory-shop-coupon-affiliate-theme/7646339). Создание каталогов с фильтрацией, расширенный функционал обзоров, layout builder, еженедельное обновление.
!
На сайте с 29.11.2007
Offline
109
#1

ETNO, а каким плагином(способом) вы смогли задать одному ключу несколько значений? Там же по умолчанию только одно можно вроде бы. Так бы посмотрел, как можно сделать такой вывод..

.
ETNO
На сайте с 16.06.2008
Offline
117
#2

wp post rating - там значение одно, но оно постоянно меняется, в этом-то и проблема. Можно было бы заюзать так

<?php query_posts($query_string . "&meta_key=ratings_score&meta_compare=>=&meta_value=9") ?>

но проблема в том, что значение у нас линейная величина, а не числовая. В итоге, при таком примере, значение 10 не будет подходить, так как движок считает, что 10 меньше, чем 9 (смотрит по первой цифре)

[Удален]
#3

ETNO, может такой плагин поможет.

ETNO
На сайте с 16.06.2008
Offline
117
#4

в общем, custom-field-taxonomies плагин прикольный, но я так и не понял как с помощью него создавать query_post с определенными параметрами, но было найдено другое решение как исправить то, что wp понимает значения доп полей как текст, а не как цифры.

Для этого пришлось немного поправить файлы самого двига. В файлике wp-includes/query.php на строчке 2142 (версия 2.9.2)

$where .= $wpdb->prepare("AND $wpdb->postmeta.meta_value {$q['meta_compare']} %s ", $q['meta_value']);

нужно добавить +0. будет вот так

$where .= $wpdb->prepare("AND $wpdb->postmeta.meta_value+0 {$q['meta_compare']} %s ", $q['meta_value']);

Теперь 10 не будет считаться меньше 9. (много раз подумайте, прежде чем использовать такой хак, если не знаете зачем он вам нужен)

решение найдено здесь - возможно кому-то пригодится

voodoo911
На сайте с 11.03.2008
Offline
157
#5

В custom-field-taxonomie вы сначала регистрируете в плагине переменные, по которым нужно делать выборку, а потом уже фильтруете типа ?key1=val1&key2=val2. airsoftgames.net - выборка сделана на базе этого плагина. + там можно фильтровать по диапазону параметров и т.д.

ETNO
На сайте с 16.06.2008
Offline
117
#6

ну да это я понял, но мне как раз нужно было, чтобы все данные выводились на одной странице, на одном и том же урле, а плагин создает вывод на основе разных урлов. Вот как сделать так, чтобы к примеру, ?key1=val1&key2=val2 - не добавлялось в урл, а было сделано через query post - этого я не нашел

!
На сайте с 29.11.2007
Offline
109
#7

ETNO, я поначалу решил, что такой вариант подойдет через custom fields:

http://www.sonika.ru/blog/wordpress/custom-fields-wordpress.htm

Пример 6 (Один ключ и несколько значений), но тоже нужно разобраться, как привиденный код работает..

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий