如何使用功能将默认搜索设置为仅针对产品?

时间:2019-07-01 17:12:58

标签: wordpress

我需要将搜索设置为主题的一部分,仅搜索产品。目前,它会搜索整个平台。

这不是自定义表单,我只需要能够更改默认搜索操作即可。因此,它不是转到/ s?green,而是在URL中包含“产品”代码,因此仅搜索产品。

add_filter( 'pre_get_posts', 'custom_pre_get_posts' );
function custom_pre_get_posts( $query ) {
    if ( is_search() ) {
        $query->set('post_type', 'product');
    }

    return $query;
}

我们只希望它在产品图块中显示产品,而不是博客结果。

2 个答案:

答案 0 :(得分:0)

如果仅在网站上搜索product帖子类型,则可以创建自己的searchform.php模板以包含此隐藏字段:

<input type="hidden" name="post_type" value="product" />

您可以将其放置在form HTML标记内的任何位置。如果没有searchform.php文件,并且您使用的是HTML5表单支持,则以下是WP默认输出的内容。

<form role="search" method="get" class="search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>">
    <input type="hidden" name="post_type" value="product"/>
    <label>
        <span class="screen-reader-text"><?php _e( 'Search for:', 'label' ); ?></span>
        <input type="search" class="search-field" placeholder="<?php esc_attr_e( 'Search &hellip;', 'placeholder' ); ?>" value="<?php echo get_search_query(); ?>" name="s"/>
    </label>
    <input type="submit" class="search-submit" value="<?php esc_attr_e( 'Search', 'submit button' ); ?>"/>
</form>

您可以将以上代码添加到自己的searchform.php中,并将其添加到THEME目录的根目录。

答案 1 :(得分:0)

它在根主题区域的功能文件中。我们直接针对它,他们将其取出,将其置于子主题中,在代码中编辑了Form标记,然后它起作用了。