I’m trying to stick a post in the search results for the value and meta_key meta_value. If the search results in the post is meta_key – sticky and meta_value – fatured, the display on top of these posts.
This is my search.php :
<?php get_header(); ?>
<?php if (is_paged()) $is_paged = true; ?>
<div class="wrapper" >
<div class="clearfix container_border">
</div>
<?php
$is_search = 0;
global $wpdb;
$totalpost_count = 0;
$all_pids = $wpdb->get_var("SELECT group_concat(ID) FROM $wpdb->posts where post_status='publish'");
$all_pids_arr = explode(',',$all_pids);
if($_REQUEST['srch_location'])
{
$is_search = 1;
$srch_location = $_REQUEST['srch_location'];
//$location_pids = $wpdb->get_var("SELECT group_concat(tr.object_id) FROM $wpdb->term_taxonomy tt join $wpdb->term_relationships tr on tr.term_taxonomy_id=tt.term_taxonomy_id where tt.term_id="$srch_location"");
$location_pids = $wpdb->get_var("select group_concat(post_id) from $wpdb->postmeta where meta_key like 'add_location' and meta_value like "$srch_location"");
$location_pids_arr = explode(',',$location_pids);
$all_pids_arr = array_intersect($all_pids_arr,$location_pids_arr);
}
if($is_search && !$all_pids_arr)
{
$all_pids_arr[0] = 'nopost';
}
if($_REQUEST['srch_property_id'])
{
$post_ids_str = $_REQUEST['srch_property_id'];
$sub_cat_sql .= " and p.ID in ($post_ids_str) ";
}else
{
if($all_pids_arr)
{
$post_ids_str = implode(',',$all_pids_arr);
if($post_ids_str)
{
$sub_cat_sql .= " and p.ID in ($post_ids_str) ";
}
}
}
$featurecat = get_cat_id_from_name(get_option('ptthemes_featuredcategory'));
if($featurecat)
{
$srch_feature_pids = $wpdb->get_var("SELECT group_concat(tr.object_id) FROM $wpdb->term_taxonomy tt join $wpdb->term_relationships tr on tr.term_taxonomy_id=tt.term_taxonomy_id where tt.term_id in ($featurecat)");
$srch_feature_pids = '';
}
$blogcat = get_cat_id_from_name(get_option('ptthemes_blogcategory'));
$blogcatcatids = get_sub_categories($blogcat,'string');
if($blogcatcatids)
{
$srch_blog_pids = $wpdb->get_var("SELECT group_concat(tr.object_id) FROM $wpdb->term_taxonomy tt join $wpdb->term_relationships tr on tr.term_taxonomy_id=tt.term_taxonomy_id where tt.term_id in ($blogcatcatids)");
}
if($srch_blog_pids && $srch_feature_pids)
{
$sub_cat_sql .= " and p.ID not in ($srch_blog_pids,$srch_feature_pids) ";
}elseif($srch_blog_pids && $srch_feature_pids=='')
{
$sub_cat_sql .= " and p.ID not in ($srch_blog_pids) ";
}elseif($srch_blog_pids=='' && $srch_feature_pids)
{
$sub_cat_sql .= " and p.ID not in ($srch_feature_pids) ";
}
$srch_sql = "select p.* from $wpdb->posts p $post_meta_join where p.post_status='publish' and p.post_type='post' $sub_cat_sql";
if($srch_feature_pids)
{
$feature_srch_sql = "select p.* from $wpdb->posts p where p.post_status='publish' and p.post_type='post' and p.ID in ($srch_feature_pids)";
$srch_sql = " select * from (($feature_srch_sql) union ($srch_sql))";
}
$totalpost_count = $wpdb->get_var("select count(p.ID) from $wpdb->posts p $post_meta_join where p.post_status='publish' and p.post_type='post' $sub_cat_sql");
global $posts_per_page,$paged;
if($paged==''){$paged=1;}
$startlimit = $posts_per_page*($paged-1);
$srch_sql .= " order by p.ID desc limit $startlimit , $posts_per_page";
$post_info = $wpdb->get_results($srch_sql);
?>
<div class="contentarea">
<h5>
<?php
if($_REQUEST['s'] == 'viewmore')
{
_e(LATEST_PROPERTIES_TEXT);
}
elseif(is_category() && $_REQUEST['search']=='')
{
echo single_cat_title();
}else
{
//echo __(SEARCH_TEXT). get_search_param();
echo get_search_param();
}
?></h5>
<?php if($post_info) { ?>
<ul class="display ">
<?php
$count=0;
foreach($post_info as $post_info_obj)
{
$count++;
$post = $post_info_obj;
get_property_info_li($post);
if($count%3==0)
{
?>
<li class="blank"></li>
<?php
}
}
?>
</ul>
<?php
}else
{
_e(NO_PROPERTY_AVAILABLE_MSG);
if($_POST['search']=='search')
{
echo get_search_param();
}
}
?>
<?php if($post_info) { ?>
<div class="pagination">
<?php if (function_exists('wp_pagenavi')) { ?><?php wp_pagenavi(); ?><?php } ?>
</div>
<?php }?>
A simple hack. Edit: putting the featured post ids in an array and checking that array in the main loop.
First thing do to in the main loop: if the post is featured, skip it.