Wordpress自定义搜索帖子类型,元键和&分类

时间:2016-01-02 12:48:34

标签: php wordpress

昨天我问了这个问题,但我没有得到答案。所以我认为人们不理解我的问题。所以我在这里编辑并详细解释它:

我的WordPress有一个帖子类型的产品

我的产品有2个自定义字段名称Color&位置产品还启用了Category&标签字段。

现在我的搜索看起来像这样:

<form action="/" method="get">
    <label>Keyword: </label> <input type="text" name="s" placeholder="Keyword"> <br />
    <label>Color: </label> <input type="text" name="color" placeholder="Color"> <br />
    <label>Location: </label> <input type="text" name="location" placeholder="Location"> <br />
    <label>Category: </label> <select name="category"><option value="1">Shirt</option><option value="1">Pant</option><option value="1">Pajama</option></select> <br />
    <label>Tags: </label> <input type="text" name="location" placeholder="Tags"> <br />
    <input type="Submit" value="Search">
</form>

因此,如果有人在关键字字段中键入衬衫并在颜色字段中写入红色,则搜索结果将按标题&amp;中的衬衫显示帖子。来自任何类别的meta_key中的红色..

如果人们留下空白关键字字段并输入红色&amp;孟加拉国的Color&amp;位置字段然后只有包含Red&amp;的帖子。孟加拉国任何类别的Meta值。

因此,人们可以按颜色,位置,类别和范围过滤搜索。标签

我尝试在search.php中使用这种搜索查询但不起作用。

    <?php
        $color = $_GET['color'];
        $location = $_GET['location'];
        $args = array(
                'post_type' => 'any',
                'meta_query' => array(
                'relation' => 'AND',
                    array(
                        'key' => color,
                        'value' => $color,
                    ),
                    array(
                        'key' => location,
                        'value' => $location,
                    )
            )
         );  
    ?>
      <h3>Your Search For <?php echo $color; ?> <?php if(!empty($location) OR isset($location) OR $location !== NULL ){echo '';} else { echo "and".$location; } ?></h3>

    <?php $query = new WP_Query( $args ); if(have_posts()) : ?>
    <?php while(have_posts()) : the_post() ?>

                <h3><?php the_title(); ?></h3>
                <?php if(get_field('color')): ?>
                    <b>Color:</b> <?php the_field('color'); ?>
                <?php endif; ?>
                <?php if(get_field('location')): ?>
                    <b>Location:</b> <?php the_field('location'); ?>
                <?php endif; ?>

  <?php endwhile; ?>

  <?php else: ?>
        <p class="notice_msg"><?php _e( 'Sorry, but nothing matched your search criteria.'); ?></p>
  <?php endif; ?>

请帮帮我一个人。我真的需要这个帮助。

谢谢

1 个答案:

答案 0 :(得分:1)

您需要更正Add-AzureAccount中的颜色和'key' => color,中的位置,它们应该是'color'和'location'之类的字符串,否则它们将被视为常量,同时在每个中添加compare参数标准。

e.g。

'key' => location