WordPress:高级搜索自定义帖子类型和自定义字段

时间:2016-02-01 12:36:32

标签: php wordpress advanced-custom-fields wp-query

我有以下问题。我正在尝试用wordpress创建一个房地产网站。我创建了一个自定义帖子类型,我在高级自定义字段中包含以下字段:列表类型(选择:出售,出租),物业类型(选择:公寓,住宅),价格(数量),城市(字段类型:选择)

我有以下查询来获取值:

<?php
  $args = array(
            'post_type' => 'properties',
            'posts_per_page' => 10,
            'posts_per_page' => -1,
            'meta_query' => array(
                    array(
                        'key'     => 'property_type',
                        'value'   => 'Apartment',
                    ),
                ),
        );
  $loop = new WP_Query( $args );
  while ( $loop->have_posts() ) : $loop->the_post();
  ?>
  <?php
    $property_type = get_field('property_type');
            $property_price = get_field('price');
            $property_location = get_field('location');
            $property_description = get_field('description');
    ?>
    <div class="propert_list">
        <h1><?php the_title(); ?></h1>
        <div class="property_type">
            Location - <strong><?php echo $property_type; ?></strong>
        </div>
        <div class="property_price">
            Price - <strong><?php echo $property_price; ?></strong>
        </div>
        <div class="property_location">
            Location - <strong><?php echo $property_location['address']; ?></strong>
        </div>
        <div class="property_description">
            Property Description - <strong><?php echo $property_description; ?></strong>
        </div>
    </div>
    <br /><hr />
    <?php endwhile; ?>

我可以在何处以及如何创建我的搜索表单,按'property_type'和'location'过滤属性。

3 个答案:

答案 0 :(得分:1)

一种解决方案是安装Search & Filter。 它允许您根据给定的帖子类型,元字段等过滤搜索,并且非常强大。缺点是您可能需要支付Pro版本。

另一种解决方案是将隐藏的输入字段添加到PHP搜索表单中。例如:

<input type="hidden" name="post_type[]" value="properties" />

仅搜索属性,并对过滤元值执行相同操作。这很容易实现,但不太灵活,我更喜欢将视图逻辑分开。

第三种解决方案是使用pre_get_posts过滤器。然后你可以写例如。

if ( $post_types ) $query->set( 'post_type', 'properties' );

...等等,在此过滤器内。有很多例子可以告诉你如何做到这一点。只需在Google上搜索过滤器名称: - )

答案 1 :(得分:0)

如果您希望在同一页面模板下进行搜索,可以使用可搜索的HTML数据表和JavaScript来实现。只需将您的值封装在表中即可。您可以参考这些链接,例如代码:

http://www.vijayjoshi.org/2011/01/03/searching-text-in-a-html-table-using-jquery/

https://www.datatables.net/examples/data_sources/js_array.html

我还注意到你忘了重置wp查询。以wp_reset_query();

结尾始终是安全的

希望你这有帮助。

答案 2 :(得分:0)

为什么不为此使用插件?

尝试:https://wordpress.org/plugins/ultimate-wp-query-search-filter/

这将是完美的..