Step 1
First create a form into header file or where you want to show your form
ex(header.php) or you can create a custom search form in wordpress like this.
<form method="get" id="advanced-searchform" role="search" action="<?php echo esc_url( home_url( '/' ) ); ?>">
<input type="hidden" name="search" value="advanced">
<select name="citysearch" id="search" class="themebtnsearch">
<option value="City1"><?php _e( 'City1', 'textdomain' ); ?></option>
<option value="City2"><?php _e( 'City2', 'textdomain' ); ?></option>
</select>
<input type="text" value="" placeholder="<?php _e( 'Type the Product Name', 'textdomain' ); ?>" name="productname" class="home_searchbox" />
<input type="submit" id="searchsubmit" value="Search" />
</form>
Step 2 -
then to add a custom field in your woocommerce seller registration add these functions into your function.php
add_action( 'register_form', 'adding_custom_registration_fields' );
function adding_custom_registration_fields( ) {
//lets make the field required so that i can show you how to validate it later;
$city = empty( $_POST['city'] ) ? '' : $_POST['city'];
?>
<div class="form-row form-row-wide">
<label for="reg_city"><?php _e( 'city', 'woocommerce' ) ?><span class="required">*</span></label>
<input type="text" class="input-text" name="city" id="reg_city" size="30" value="<?php echo esc_attr( $city ) ?>" />
</div>
<?php
}
//Updating use meta after registration successful registration
add_action('woocommerce_created_customer','adding_extra_reg_fields');
function adding_extra_reg_fields($user_id) {
extract($_POST);
update_user_meta($user_id, 'city', $city);
update_user_meta($user_id, 'billing_city', $city);
update_user_meta($user_id, 'shipping_city', $city);
}
function wpse_load_custom_search_template(){
if( isset($_REQUEST['search']) == 'advanced' ) {
require('advanced-searchresult.php');
die();
}
}
add_action('init','wpse_load_custom_search_template');
Step 3 Now create a Advance search result page
<?php
/*
Template Name: Search Page
*/
?>
<?php get_header(); ?>
<div id="wrap">
<div id="content">
<div class="clearfix"></div>
<?php
// Get data from URL into variables
$_name = $_GET['productname'] != '' ? $_GET['productname'] : '';
$seller_city = $_GET['citysearch'] != '' ? $_GET['citysearch'] : '';
//$_model = $_GET['sortby'] != '' ? $_GET['sortby'] : '';
//$_orderby = $_GET['orderby'] != '' ? $_GET['orderby'] : '';
echo "<h3 class='heading-head'> Search Reslts for : $_name</h3>";
global $wpdb;
global $post;
global $wp_query;
global $seller;
// Pagination Setup
/*
$posts_per_page = 20;
$start = 0;
$paged = get_query_var( 'paged') ? get_query_var( 'paged', 1 ) : 1; // Current page number
$start = ($paged-1)*$posts_per_page;
*/
$search_query = "SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_title LIKE '%$_name%' OR wp_posts.post_content LIKE '%$_name%' AND wp_posts.post_type = 'product' AND wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private'";
//echo $search_query;
/*
if {
$search_query = "SELECT SQL_CALC_FOUND_ROWS wplc_posts.ID FROM wplc_posts INNER JOIN wplc_postmeta ON ( wplc_posts.ID = wplc_postmeta.post_id and wplc_postmeta.meta_key='price' ) INNER JOIN wplc_postmeta AS mt1 ON ( wplc_posts.ID = mt1.post_id and wplc_postmeta.meta_key='price' ) WHERE 1=1 AND (wplc_posts.post_title LIKE '%$_name%' OR wplc_posts.post_content LIKE '%$_name%') OR ( wplc_postmeta.meta_key = 'price' AND ( ( ( mt1.meta_key = 'price' AND CAST(mt1.meta_value AS CHAR) LIKE '%$_name%' ) OR ( mt1.meta_key = 'manufacturer' AND CAST(mt1.meta_value AS CHAR) LIKE '%$_name%' ) ) ) ) AND wplc_posts.post_type = 'product' AND (wplc_posts.post_status = 'publish' OR wplc_posts.post_status = 'private') GROUP BY wplc_posts.ID ORDER BY wplc_posts.post_title $_orderby ";
}
*/
function get_url_var($name)
{
$strURL = $_SERVER['REQUEST_URI'];
$arrVals = split("/",$strURL);
$found = 0;
foreach ($arrVals as $index => $value)
{
if($value == $name) $found = $index;
}
$place = $found + 1;
return $arrVals[$place];
}
$page = get_url_var('page');
if(is_numeric($page))
{
$countpage=$page;
}else { $countpage = 1; }
// ends here
//next pagination starts
$total_record = count($wpdb->get_results($search_query, ARRAY_A));
$paged = !empty($countpage) ? $countpage: 1;
$post_per_page = get_option('posts_per_page');
$offset = ($paged - 1)*$post_per_page;
$max_num_pages = ceil($total_record/ $post_per_page);
$pagenew = get_query_var('page') ? get_query_var('page') : 1;
//echo "<pre>"; echo "paged = $paged"; echo "post_per_page = $post_per_page"; echo "offset $offset"; echo "max_num = $max_num_pages"; echo "pagenew = $pagenew";
//echo "<pre>"; print_r($page);
//paged = 1post_per_page = 10offset 0max_num = 5
$wp_query->found_posts = $total_record;
// number of pages
$wp_query->max_num_pages = $max_num_pages;
$limit_query = " LIMIT ".$post_per_page." OFFSET ".$offset;
//echo $search_query.$limit_query;
// $result = $wpdb->get_results($search_query.$limit_query,OBJECT);// return OBJECT
$result = $wpdb->get_results($search_query,OBJECT);// return OBJECT
if($result){
?><div class="contain_all_search_data"> <div class="int_store_container"> <?php
$is_result_none=0;
foreach ($result as $rowpost):
//setup_postdata($post);
$row_pro_id = $rowpost->ID;
$row_pro_author = $rowpost->post_author;
$author = get_user_by( 'id', $row_pro_author );
$authorname = $author->user_nicename; //echo "<pre>"; print_r($author);
$user_id = $row_pro_author;
$key = 'city';
$single = true;
$user_last = get_user_meta( $user_id, $key, $single );
if($user_last==$seller_city)
{
$is_result_none=1;
$price="";
$sale_price="";
$price_array = get_post_meta( $row_pro_id, '_regular_price');
$sale_price_array = get_post_meta( $row_pro_id, '_sale_price');
if($price_array!="") { $price = $price_array[0]; } else { $price=""; }
if($sale_price_array!="") {$sale_price = $sale_price_array[0]; } else { $sale_price=""; }
$row_post_details = get_post($row_pro_id); //echo "<pre>"; print_r($row_post_details);
$post_pro_title = $row_post_details->post_title;
$thumb=""; $url="";
$thumb = get_the_post_thumbnail( $row_pro_id, 'thumbnail' );
if (strlen($post_pro_title) > 35) {
$product_title = substr($post_pro_title, 0, 35);
$product_title = substr($product_title, 0, strrpos($product_title, ' ')) . " ...";
} else {
$product_title = $post_pro_title;
}
//echo "<p>$row_pro_id</p>";
?>
<div class="col-sm-3 product_wrapper">
<div>
<div class="product_image_container">
<a title="<?php echo $product_title; ?>" href="<?php echo $row_post_details->guid; ?>" class="product_thumb_link" id="id-<?php echo $row_pro_id; ?>">
<?php echo $thumb; ?>
</a>
</div>
</div>
<div class="title_wrapper">
<a class="nodecor" href="<?php echo $row_post_details->guid; ?>" rel="bookmark" title="Permanent Link to <?php echo $product_title; ?> "><?php echo $product_title; ?></a>
<div class="manu_title"><?php if(!empty($meta_manufacturer)) { echo $meta_manufacturer; } ?></div>
</div>
<p class="price_wrapper"> <?php if($price!="" && $sale_price!="" && $sale_price < $price){ echo "<b>$sale_price</b> <span style='text-decoration: line-through;'>$price</span>"; } else { echo $price; } ?></p>
<p class="sellername"><?php echo $authorname; ?></p>
<p class="add_tocart_cls"><a class="button product_type_simple add_to_cart_button ajax_add_to_cart" data-product_sku="" data-product_id="<?php echo $row_pro_id; ?>" data-quantity="1" href="/?add-to-cart=<?php echo $row_pro_id; ?>" rel="nofollow">Add to cart</a></p>
</div>
<?php } ?>
<?php
endforeach;
?>
<?php if($is_result_none==0) { echo "<h3>404 Nothing here. Sorry.</h3>"; } ?>
</div></div>
<div class="navigation" style="margin-bottom:20px;"><?php wp_pagenavi(); wp_reset_query(); ?></div>
<?php
//next pagination ends here
} else{
?>
<h3>404 Nothing here. Sorry.</h3>
<?php } ?>
</div>
</div>
<?php //get_sidebar(); ?>
</div><!--/wrap-->
<?php get_footer(); ?>
Custom Search Page with search by location Wordpress Is Very Helpful. Thanks for such Information
ReplyDeleteLooking for WordPress Support Visit :
WordPress Support
WordPress Technical Support
WordPress Support Phone Number
Superb Information
ReplyDeleteWP Support
Awesome Information
ReplyDelete24/7 WordPress Support
24/7 WP Support