WordPress.org

Ready to get started?Download WordPress

Forums

Advanced search with custom meta filtering (2 posts)

  1. madzgo
    Member
    Posted 1 year ago #

    I made a search form with <select> boxes and text fields.
    Then I created search.php to handle search results, but it doesn't work with custom fields - only processes keyword (the S variable).

    The form has select box for Property Type (its a real estate site), Location etc. And some text fields for min. and max. price.

    This is the code that is in the search.php:

    <?php
    function get_reviews_by_custom_search() {
        global $wpdb;
    
        $grad           = preg_replace( '/^[0-9a-zA-Z-]/', '', $_GET['grad'] );
        $adType         = preg_replace( '/^[0-9a-zA-Z-]/', '', $_GET['adType'] );
        $realEstateType = preg_replace( '/^[0-9a-zA-Z-]/', '', $_GET['realEstateType'] );
        $dioGrada       = preg_replace( '/^[0-9a-zA-Z-]/', '', $_GET['dioGrada'] );
        $squareFrom     = preg_replace( '/[^0-9]/', '', $_GET['squareFrom'] );
        $squareTo       = preg_replace( '/[^0-9]/', '', $_GET['squareTo'] );
        $priceFrom      = preg_replace( '/[^0-9]/', '', $_GET['priceFrom'] );
        $priceTo        = preg_replace( '/[^0-9]/', '', $_GET['priceTo'] );
        $roomsNum       = preg_replace( '/[^0-9]/', '', $_GET['roomsNum'] );
    
        // Change the defaults if not chosen
        if($squareFrom == '') { $squareFrom = '0'; }
        if($squareTo == '') { $squareTo = '10000000'; }
    
        // Define the arguments for the WP query
        $args = array(
                'post_type' => 'post',
                'relation' => 'AND',
                'meta_query' => array(
                        array(
                                'key' => 'ex_lokacija',
                                'value' => $grad ,
                                'compare' => 'LIKE'
                        ),
                        array(
                                'key' => 'ex_vrsta_oglasa',
                                'value' => $adType ,
                                'compare' => 'LIKE'
                        ),
                        array(
                                'key' => 'ex_tip_nekretnine',
                                'value' => $realEstateType ,
                                'compare' => 'LIKE'
                        ),
                        array(
                                'key' => 'ex_dio_pg',
                                'value' => $dioGrada ,
                                'compare' => 'LIKE'
                        ),
                        array(
                                'key' => 'ex_dio_pg',
                                'value' => $dioGrada ,
                                'compare' => 'LIKE'
                        ),
                        array(
                                'key' => 'et_square_footage',
                                'value' => array( $squareFrom, $squareTo ),
                                'type' => 'numeric',
                                'compare' => 'BETWEEN'
                        ),
                        array(
                                'key' => 'et_price',
                                'value' => array( $priceFrom, $priceTo ),
                                'type' => 'numeric',
                                'compare' => 'BETWEEN'
                                        )
                )
        );
    
        $searched_posts = new WP_Query( $args );
    
        return $searched_posts;
    }
    
    $searched_posts = get_reviews_by_custom_search();       
    
         get_header(); ?>
    
            <div id="content-top">
                <div id="menu-bg"></div>
                <div id="top-index-overlay"></div>
    
                <div id="content" class="clearfix">
                    <div id="main-area">
                        <?php get_template_part('includes/breadcrumbs'); 
    
                            foreach ($searched_posts as $searched_post) {
    
                                echo "<h1 class=\"entry-title\"><a href=\"" . get_permalink($searched_post->ID) . "\">" . $searched_post->post_title . "</a></h1>";
    
                                echo "Rating - " . get_post_meta($searched_post->ID,'rating',true) . "<br>";
                                echo "Audience - " . get_post_meta($searched_post->ID,'audience',true) . "<br>";
                                echo "Length - " . get_post_meta($searched_post->ID,'length',true) . "<br>";    
    
                                echo "<a href=\"" . get_permalink($searched_post->ID) . "\">Read More</a>";
    
                            }
                        ?>
    
                    </div> <!-- end #main-area -->
    
                    <?php get_sidebar(); ?>
    
        <?php get_footer(); ?>
  2. That's fairly complex; might want to ask on http://wordpress.stackexchange.com/

Topic Closed

This topic has been closed to new replies.

About this Topic