Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

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 }?>
share|improve this question
add comment

1 Answer

up vote 1 down vote accepted

A simple hack. Edit: putting the featured post ids in an array and checking that array in the main loop.

global $post;
$post_IDs = array();
foreach($post_info as $post_info_obj) {
    $post_IDs[] = $post_info_obj->ID;        
}

$featured_IDs = array();
$query1 = new WP_Query(array('meta_key'=>'sticky','meta_value'=>'featured','post__in'=>$post_IDs));

while($query1->have_posts()) {
    $query1->the_post();
    $featured_IDs[] = $post->ID;
    get_property_info_li($post);
}

First thing do to in the main loop: if the post is featured, skip it.

if(in_array($post_info_obj->ID,$featured_IDs)) { continue; }
share|improve this answer
    
Works fine. Thank you very much offroff. –  Shklyar Sergio Apr 23 '12 at 3:59
    
Nor would you add to this code Do_not_duplicate in search results ? –  Shklyar Sergio Apr 23 '12 at 4:01
    
Yeah, I made a small edit to avoid duplicates. –  offroff Apr 23 '12 at 8:30
    
Thank you very much. You saved me :) –  Shklyar Sergio Apr 23 '12 at 11:27
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.