Tôi nghĩ rằng một cái gì đó như thế này bạn sẽ là tốt nhất viết cho mình.
Hãy xem tại: http://www.cirthysthomes.co.uk/homes-for-sale/
Các thuộc tính được tải vào CPT và tôi có tìm kiếm tùy chỉnh của riêng mình trong thanh bên. Trong đó tìm kiếm nó tìm kiếm một số thứ như phân loại, trường tùy chỉnh và đặt hàng theo giá ngày, vv
Vậy làm thế nào để tôi đạt được điều này? Tôi gửi biểu mẫu đến một mẫu trang và từ đó tôi xử lý dữ liệu bài đăng và xây dựng WP_query mới dựa trên các tiêu chí tìm kiếm. Tôi sử dụng các phiên để lưu trữ các biến tìm kiếm để tôi có thể phân trang kết quả.
WP_Query rất mạnh mẽ. Hãy xem: http://codex.wordpress.org/Class_Reference/WP_Query
Trong đó bạn có thể sử dụng meta_query
để truy vấn nhiều trường tùy chỉnh và sử dụng tax_query
để truy vấn các nguyên tắc phân loại của bạn, ngoài ra còn có nhiều hơn nữa. Dưới đây là cách tôi được xây dựng để cung cấp cho bạn một ý tưởng.
Tệp mẫu:
<?php
$temp = $wp_query;
$wp_query = NULL;
$args = array();
?>
<?php include("functions/Homes-for-sale/propertyrawresults.php"); ?>
<?php include("functions/Homes-for-sale/propertysearchresults.php"); ?>
<?php
$args['post_type'] = "homes-for-sale";
$args['showposts'] = 10;
$args['paged'] = $paged;
$wp_query = new WP_Query($args);
?>
<?php include("functions/Homes-for-sale/propertylistlayout.php"); ?>
Kết quả thô
<?php
if($_POST['sortby']) {
$_SESSION['prop_selectedsortby'] = $_POST['sortby'];
}
switch($_SESSION['prop_selectedsortby']) {
case "name-asc": $args['order'] = "ASC"; $args['orderby'] = "title"; break;
case "name-desc": $args['orderby'] = "title"; break;
case "price-asc": $args['order'] = "ASC"; $args['orderby'] = "meta_value_num"; $args['meta_key'] = "chb_homes_for_sale_specifics_fmv"; break;
case "price-desc": $args['orderby'] = "meta_value_num"; $args['meta_key'] = "chb_homes_for_sale_specifics_fmv"; break;
case "date-asc": $args['order'] = "ASC"; break;
default: /* No need to set arguments here as wp query defaults */ break;
}
$selectedsortby[$_SESSION['prop_selectedsortby']] = " selected=\"selected\"";
?>
kết quả tìm kiếm
<?php
if( ! empty( $_SESSION['s_property_ptype'] ) ) {
$args['meta_query'][] = array(
'key' => 'chb_homes_for_sale_types_nbrs',
'value' => $_SESSION['s_property_ptype']
);
}
if( ! empty( $_SESSION['s_property_development'] ) ) {
$args['meta_query'][] = array(
'key' => 'chb_homes_for_sale_ofdevelopment',
'value' => $_SESSION['s_property_development']
);
}
if( isset( $_SESSION['s_property_area'] ) && 0 != $_SESSION['s_property_area'] ) {
$args['tax_query'][] = array(
'taxonomy' => 'areas',
'field' => 'id',
'terms' => array( (int) $_SESSION['s_property_area'] ),
);
}
$args['meta_query'][] = array(
'key' => 'chb_homes_for_sale_specifics_bedrooms',
'value' => $_SESSION['s_property_bedrooms_min'],
'compare' => '>=',
'type' => 'SIGNED'
);
$args['meta_query'][] = array(
'key' => 'chb_homes_for_sale_specifics_bedrooms',
'value' => $_SESSION['s_property_bedrooms_max'],
'compare' => '<=',
'type' => 'SIGNED'
);
$args['meta_query'][] = array(
'key' => 'chb_homes_for_sale_specifics_bathrooms',
'value' => $_SESSION['s_property_bathrooms_min'],
'compare' => '>=',
'type' => 'SIGNED'
);
$args['meta_query'][] = array(
'key' => 'chb_homes_for_sale_specifics_bathrooms',
'value' => $_SESSION['s_property_bathrooms_max'],
'compare' => '<=',
'type' => 'SIGNED'
);
$args['meta_query'][] = array(
'key' => 'chb_homes_for_sale_specifics_fmv',
'value' => $_SESSION['s_property_min_price'],
'compare' => '>=',
'type' => 'SIGNED'
);
$args['meta_query'][] = array(
'key' => 'chb_homes_for_sale_specifics_fmv',
'value' => $_SESSION['s_property_max_price'],
'compare' => '<=',
'type' => 'SIGNED'
);
?>
Danh sách bố trí
Chỉ cần một vòng lặp WP tiêu chuẩn để hiển thị các trích đoạn và thông tin bài đăng.