在保留主搜索功能的同时在自定义页面上进行自定义搜索

时间:2018-05-01 作者:theMaertin

Wordpress-在自定义页面上进行自定义搜索,同时保留标准搜索功能。

大家好,

我想在主搜索功能顶部的自定义页面上创建自定义搜索。另外一个应该只关注产品。

搜索产品。php

$product_type = $_GET[\'post_type\'];

$args = array(
    \'post_type\' => $product_type,
    \'posts_per_page\' => -1
);

$the_query = new WP_Query($args);

/* Start the Loop */
while ($the_query -> have_posts() ) : $the_query -> the_post(); ?>


<h5><?php the_title(); ?></h5>

<?php endwhile; wp_reset_query(); ?>
形式:

<form role="search" method="get" class="search-form" action="<?php echo esc_url(home_url(\'/search-products/\')); ?>">
        <div class="row align-items-center">
        <input type="hidden" name="post_type" value="product">
        <input type="text" name="productname" value="" autocomplete="off" placeholder="Product Name..." class="searchForm form-control"> 


            <button type="submit" class="btn btn-primary">Szukaj</button>

        </div>
    </form>
当我在php文件中定义post类型时,它会按预期显示查询。但我希望能够使用URL说明修改此页面上的查询,但是如果我执行以下操作:http://localhost/wordpress/search-product/?post_type=product

WP使用不同的模板返回“未找到页面”页面。我相信这是默认的“搜索”模板。

现在我知道我可以/应该修改搜索。php文件来完成整个工作,但是,我不想修改主搜索。php(主查询?)。

我想保存主要的搜索功能,并在其上有另一个自定义功能。

我还使用了template\\u include函数作为过滤器-但是这会返回一个页面,该页面在视觉上与我期望的一致,但是标题仍然是“未找到页面”。

我还尝试使用“pre\\u get\\u posts”挂钩,但也没有成功。

我花了很多时间在这个页面上寻找解决方案,但所有的答案都包括修改标准搜索。php文件,但如前所述,我不想修改主搜索模板。

谢谢

1 个回复
最合适的回答,由SO网友:theMaertin 整理而成

事实证明,以下解决了我的问题:

function search_rewrite_rules()
{
    global $wp_rewrite;
    $wp_rewrite->search_base        = \'Search Product\';
}
add_action(\'init\', \'search_rewrite_rules\');
这个钩子将search\\u base移动到给定的页面,从而实现我想要实现的一切。

此查询中的人将获得积分:Custom slug in front of search URL

结束

相关推荐

Search Issue in the theme

如果我的理解没有错的话☻search.php 负责渲染部分和serachform.php 负责触发搜索事件,对吗?示例searchform.php 可能看起来像这样→<form role=\"search\" method=\"get\" class=\"search-form\" action=\"<?php echo home_url( \'/\' ); ?>\"> <label> <span class=\"scree