将组合框添加到WordPress搜索表单

时间:2012-06-12 23:44:16

标签: wordpress search combobox

enter image description here


我想用四个组合框替换WordPress搜索表单中的默认文本框,如上图所示。我需要允许我的用户根据组合框中选择的值搜索帖子。

每个组合框都会提取自定义字段的值。例如,属性类型应该检查property_type自定义字段中的值。

我的头痛是如何使表单看起来像上面的图像,以及如何使用这些标准的组合正确查询帖子。例如。搜索房产类型:联排别墅应该给我所有帖子" Townhouse"在property_type自定义字段中。

我真的很感激我能得到的任何帮助。

感谢。

1 个答案:

答案 0 :(得分:1)

要使您需要创建自定义查询,并从组合的组合框中获取查询字符串。

此查询还取决于您的搜索字词的排序方式。

例如“物业类型”是一个类别?一个标签?分类?自定义字段??

这比一个简单的答案要复杂一点。

例如,如果您希望搜索字词包含“类别”(假设“属性类型”是类别,则可以执行此操作:

<form role="search" method="get" id="searchform" action="<?php bloginfo('siteurl'); ?>">
  <div>
    <label class="screen-reader-text" for="s">Search for:</label>
    <input type="text" value="" name="s" id="s" />
    in <?php wp_dropdown_categories( 'show_option_all=All Categories' ); ?>
    <input type="submit" id="searchsubmit" value="Search" />
  </div>
</form>

或作为一种功能:

function wp_combo_search_form($form) {
$form = '<form method="get" id="searchform" action="' . get_option('home') . '/" >
<div><label class="hidden" for="s">' . __('Search for:') . '</label>
<input type="text" value="' . attribute_escape(apply_filters('the_search_query', get_search_query())) . '" name="s" id="s" />
<input type="submit" id="searchsubmit" value="'.attribute_escape(__('Search')).'" />
<br />
'.wp_dropdown_categories('show_option_all=All Categories&hide_empty=0&echo=0&selected='.intval($_GET['cat']).'').'
</div>
</form>';
return $form;
}

//uncomment following line for automatic filtering your theme
//add_filter('get_search_form', 'wp_combo_search_form'); 

用法:

<?php echo wp_combo_search_form(''); ?>

但老实说 - 从问题的类型和它的“风格”来判断 - 我建议你搜索一个插件来为你做这件事。 SEARCH HERE

编辑我 仍然有很多方法和方法(jQuery,Json,直接查询..)但是:

现在你说你需要自定义字段 -

从wp3.1起,您可以将meta_query添加到query_posts。

<?php
$args = array(
    'post_type' => 'your_post_type', //typically "post"
    'meta_query' =>
        array(
            'key' => 'your_key',
            'value' => 'your_value',
            'compare' => 'NOT LIKE' //just an example
        ),
        array(
            'key' => 'your_key_2"',
            'value' => array( 20, 100 ), //value can be array
            'type' => 'numeric', //just an example
            'compare' => 'BETWEEN' //just an example
        )
)
query_posts( $args );
?>

首先捕获search.php中的变量,如$_GET['field name'];

$p_type = $_GET['property_type'];
$p_city = $_GET['property_city'];
$n_bedrooms = $_GET['no_bedrooms'];
$n_bathrooms = $_GET['no_batrhooms'];

然后将其传递给查询数组

$args = array(
    'meta_query' => array(
        'relation' => 'AND',
array(
            'key' => $p_type,
 'value' => $whatever,

        ),
        array(
            'key' => $p_city,
 'value' => $whatever,

        )
    ) // etc.etc...
 ); 

现在您只需要使用正确的值填充下拉列表。

你可以在这里看到一个例子(搜索字段 - 不是下拉列表 - 但它是相同的):

http://dev.matthewaprice.com/

并阅读它是如何完成的:

http://matthewaprice.com/search-multiple-custom-fields-in-wordpress/

另请阅读:http://www.wp1stop.com/wordpress-101-guide-search-multiple-custom-fields-in-wordpress-custom-field-search-custom-query-part-1/