• В общем у меня такой вопрос, можно ли, как то составить query_posts таким образом, чтобы в лупе отображались посты у которых есть два определенных пользовательских поля с определенными ключами, например:

    query_posts('meta_key=video&meta_value=on&meta_key=picture&meta_value=off');

    К сожалению такая конструкция не работает и выдается результат лишь для meta_key=picture&meta_value=off

    подскажите, как правильно построить запрос, или ВП так не может отображать посты?

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • в моем плагине ads wordpress для этого используется свойи фильтр с помощью которого можно реализовать продвинутый поиск по нескольким метаполям. ну вот можешь акуратненько извлечь этот фильтр и подключить к своей теме в function.php называется он
    function ads_queryfilter($query)
    а вот инструкция к применению
    http://ili.com.ua/wordpress/poisk-po-proizvolnyim-polyam.html

    либо просто подключить плагин и в админке оставить галочку только поиск по метаполям

    Беда вся в том, что я хочу реализовать поиск по двум метаполям внутри админки, а не в темплейте блога, как с этом быть?

    Сильно код не изучал, но там та функция только для шаблона походу

    она может и в админке работать.
    вы спросили за query_posts ? если так то задействуется хук
    posts_request на который этот фильтр и навешивается
    только надо бут поправить строчку
    if(!(is_category() OR is_homepage OR is_tags) OR is_page() OR isset($_REQUEST['ads_basecat']) ) return $query;
    а то в админке не сработает

    да, я за query_posts спрашиваю.

    вот например, у меня запрос типа:

    posts_per_page=10&meta_key=video&meta_value=on&meta_key=pictures&meta_value=off&orderby=modified

    и хотелось бы, чтобы в мой плагин можно было вставить функцию.

    Вы говорите, что нужно использовать function ads_queryfilter($query)

    Тогда подскажите привильно ли я вас понял, что можно просто вставить в код моего плагина:

    Большой код удалил. Прочтите уже правила!
    — Atrax

    то все будет работать? И подскажите пожалуйста, как правильно заменить строку if(!(is_category() OR is_homepage OR is_tags) OR is_page() OR isset($_REQUEST['ads_basecat']) ) return $query;

    в php я просто не силен и очень надеюсь на вашу помощь.

    Народ помогите подправить функцию от stur.

    Вот она:
    http://wordpress.pastebin.com/F9E46FYt

    Задача: У меня есть плагин который в таблице выводит в адменке записи.
    Нужно реализовать вывод по запросу: query_posts('meta_key=video&meta_value=on&meta_key=picture&meta_value=off');

    Проблема вся в том, что стандертно отображается результат идетничный последнему пользовательскому полю: meta_key=picture&meta_value=off
    перосты из первого при этом не отображаются.

    Помогите реализовать плиз.

    ой обманул я тебя, немного все посложнее будет, кроме того, что описал надо еще придумать как эти поля передать в этот фильтр сейчас это делается через $_REQUEST, можно какой-то глобальный массив заколбасить и через него передавать данные, вообщем-то так даже все упрощается намного

    function ads_queryfilter($query)
    {
        global $wp_query, $wpdb, $arrMetaVar;
        if(!sizeof($arrMetaVar)) return  $query;
        //далее остальной  код  фильтра

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

    $arrMetaVar['video'] = 'on';
    $arrMetaVar['picture'] = 'off';
    query_posts();

    Для теста попробовал просто вот так добавить:

    <?php
    function ads_queryfilter($query)
    {
    global $wp_query, $wpdb, $arrMetaVar;
    if(!sizeof($arrMetaVar)) return  $query;
    $arrMetaVar['video'] = 'on';
    $arrMetaVar['picture'] = 'off';
    query_posts();
    }
    
    query_posts('posts_per_page=5');
    add_filter('posts_request', 'ads_queryfilter');
    
    ?>
    <table>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    
    <tr><td><?php the_title_attribute(); ?></td></tr>
    <?php endwhile; ?>
    <?php endif; ?>
    </table>

    Но к сожалению, выводится не то, что надо, а просто последние записи, подскажите может, я не правильно функцию подключил?

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Тема «Подсажите по query_posts» закрыта для новых ответов.