в моем плагине 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>
Но к сожалению, выводится не то, что надо, а просто последние записи, подскажите может, я не правильно функцию подключил?