基于类别的搜索结果

时间:2014-10-29 21:25:56

标签: php wordpress

所以我通过邮政类型过滤器进行了下面的吐痰,但我怎么能使用类别或自定义字段呢?

 $categories = array(
        'post' => 'Articles',
        'mobile-experience' => 'Mobile',
        'staff-profiles' => 'Staff Profiles',
        'events' => 'Events',
        'page' => 'Page Content',);

我只想更改wordpress搜索结果页面以填充其类别。

EG 。搜索关键字Cars。

第1类

汽车(此类汽车项目)

第2类

汽车(此类汽车项目)

第3类

未找到任何内容(此类别中未找到汽车项目)

按关键字汽车搜索。

会抓住任何关键字汽车并填充在该类别下(使用关键字汽车在2个类别下找到的项目,而不是3;找到的所有地方都会填充)

基本上不是用关键字汽车拍摄所有物品;它会显示搜索结果类别的搜索结果。

我只有3个类别。

最近的尝试(尝试2个类别)

<?php
get_header(); ?>
<div class="content">
            <?php
                $s = get_search_query();
            ?>
    <div class="search">
        <div class="categoryThumbs">
        <?php if (have_posts()) : ?>
            <h3><?php printf( __( 'Search Results for: %s'), '<span>' . get_search_query() . '</span>' ); ?></h3>
        <?php endif;?>
            <?php query_posts("s='$s'&category_name=build"); ?>
                <?php if (have_posts()) : ?>
                    <?php $blogResults=0; ?>
                <?php while (have_posts()) : the_post(); ?>
                    <?php
                        $blogResults++;
                    ?>
                <?php endwhile; ?>
                    <h4><?php echo $blogResults; ?> Results in BLOG</h4>
                    <?php while (have_posts()) : the_post(); ?>
                    <div class="films">
                        <div class="thumb">
                            <a href="<?php the_permalink() ?>"><?php the_post_thumbnail(); ?></a>
                        </div>
                        <h3 id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
                        <div class="entry">
                            <?php the_excerpt() ?>
                        </div>
                    </div>
                    <?php endwhile; ?>
                <?php endif;?>
                <?php query_posts("s='$s'&category_name=apps"); ?>
                <?php if (have_posts()) : ?>
                    <?php $blogResults=0; ?>
                <?php while (have_posts()) : the_post(); ?>
                    <?php
                        $blogResults++;
                    ?>
                <?php endwhile; ?>
                    <h4><?php echo $blogResults; ?> Results in Films</h4>
                    <?php while (have_posts()) : the_post(); ?>
                    <div class="films">
                        <div class="thumb">
                            <a href="<?php the_permalink() ?>"><?php the_post_thumbnail(); ?></a>
                        </div>
                        <h3 id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
                        <div class="entry">
                            <?php the_excerpt() ?>
                        </div>
                    </div>
                    <?php endwhile; ?>
                <?php endif;?>
        <div class="spacer"></div>
        </div>
    </div>
</div>
<?php get_footer(); ?>

2 个答案:

答案 0 :(得分:0)

如果你有另一个数组,让我们说$ categories2,你可以这样做:

$ result = array_merge($ categories,$ categories2);

答案 1 :(得分:0)

只需使用jquery,

将隐藏的字段添加到搜索表单中

每个类别都有自己独特的正文类,您可以使用该类只为不同类别添加不同的隐藏字段,

您可以使用Jquery prepend或append,

(function($){ 

    //First Category
    $('.your-category-body-class .your-search-form-class').prepend('<input type="hidden" id="foo" name="category_name" value="your-category-slug" />');

    //Second Category

    $('.your-second-cat-body-class .your-search-form-class').prepend('<input type="hidden" id="foo" name="category_name" value="your-second-cat-slug" />')

})(jQuery)

默认的wordpress表单看起来像这样

<form method="get" class="search-form" action="http://your-site.com/" role="search">
    <input type="search" name="s" placeholder="Search Movie...">
    <input type="submit" value="Search">
</form>

你也可以像这样http://your-site.com/?post_type=your-custom-post&category_name=your-category-slug&post_tag=your-tag

进行网址查询

当您进行搜索时,它会返回此http://your-site.com/?s=Your+Search+Phrase

之类的网址

,您的目标是在搜索结果中添加预定义的附加参数,以返回http://your-site.com/?s=Your+Search+Phrase&category_name=category-slug

之类的内容

所以你需要你的搜索表格是这样的

<form method="get" class="search-form" action="http://your-site.com/" role="search">
    <input type="search" name="s" placeholder="Search Movie...">
    <input type="hidden" id="foo" name="category_name" value="your-category-slug" />
    <input type="submit" value="Search">
</form>

你可以通过我上面提供的jquery实现这一点,你只需要获得正确的选择器

或者只是创建自己的搜索表单

function my_custom_search_form() {
    echo '<form method="get" class="search-form" action="http://your-site.com/" role="search">'."\n";
    echo '<input type="search" name="s" placeholder="Search Movie...">'."\n";
    if( is_category('your-category-slug-or-id') ) {
        echo '<input type="hidden" id="foo" name="category_name" value="your-category-slug" />'."\n";
    } elseif(is_category('your-second-slug-or-id')) {
        echo '<input type="hidden" id="foo" name="category_name" value="your-second-slug-or-id" />'."\n";
    }
    echo '<input type="submit" value="Search">'."\n";
    echo '</form>';
}

然后只需使用my_custom_search_form()而不是wordpress默认搜索表单

修改

您可以通过在表单上添加隐藏的输入字段来自定义搜索查询参数,

如果你想搜索整个数据库,那就是默认的wordpress搜索框, 像这样http://your-site.com/?s=Your+Search+Phrase

返回网址

如果您想在特定类别中进行搜索,则需要使用搜索表单返回此类网址http://your-site.com/?s=Your+Search+Phrase&category_name=your-category-slug

如果您想在两个类别中进行搜索,那么您需要使用搜索表单返回此http://your-site.com/?s=Your+Search+Phrase&cat=1,2的网址,其中 1 2 是您的类别ID,或组合类别slug http://your-site.com/?s=Your+Search+Phrase&category_name=your-first-category-slug,second-category-slug

您只需在搜索表单上添加隐藏值,即可添加符合您需求的参数