如何在woocommerce商品首页添加搜索且不跳转到默认搜索页面_WordPress教程

如何在woocommerce商品首页添加搜索且不跳转到默认搜索页面_WordPress教程

在 WooCommerce 中,直接在当前页面进行实时搜索可能需要使用 JavaScript 来处理搜索事件并更新页面内容。以下是一个示例代码,它可以帮助您实现在当前页进行实时搜索的功能: <form role="search" method="get" class="woocommerce-product-se...

在 WooCommerce 中,直接在当前页面进行实时搜索可能需要使用 JavaScript 来处理搜索事件并更新页面内容。以下是一个示例代码,它可以帮助您实现在当前页进行实时搜索的功能:

<form role="search" method="get" class="woocommerce-product-search" action="">
    <label class="screen-reader-text" for="woocommerce-product-search-field"><?php _e( 'Search for:', 'woocommerce' ); ?></label>
    <input type="search" id="woocommerce-product-search-field" class="search-field" placeholder="<?php echo esc_attr__( 'Search products...', 'woocommerce' ); ?>" value="<?php echo get_search_query(); ?>" name="sp" />
    <input type="hidden" name="post_type" value="product" />
    <button type="submit" value="<?php echo esc_attr_x( 'Search', 'submit button', 'woocommerce' ); ?>"><?php echo esc_html_x( 'Search', 'submit button', 'woocommerce' ); ?></button>
</form>

<div id="woocommerce-product-search-results"></div>

<script>
    (function($) {
        var $searchField = $('#woocommerce-product-search-field');
        var $searchResults = $('#woocommerce-product-search-results');

        $searchField.on('input', function() {
            var searchTerm = $searchField.val();

            if (searchTerm.length >= 3) {
                $.ajax({
                    url: '<?php echo esc_url( admin_url('admin-ajax.php') ); ?>',
                    type: 'GET',
                    data: {
                        action: 'woocommerce_ajax_product_search',
                        term: searchTerm
                    },
                    success: function(data) {
                        $searchResults.html(data);
                    }
                });
            } else {
                $searchResults.empty();
            }
        });
    })(jQuery);
</script>

请将上述代码添加到archive-product.php文件中,以在当前页面的顶部添加搜索框并实现实时搜索功能。

这段代码通过使用JavaScript和Ajax来监听搜索框的输入,并在输入达到指定长度时(这里设置为3个字符)发起搜索请求。搜索请求将通过Ajax发送到WordPress后端,并返回搜索结果,然后将结果显示在id为”woocommerce-product-search-results”的元素中。

或者不适用js来实现,将以下代码加入到主题的functions.php文件里:

function woo_custom_pre_get_posts_query( $q ) {
if ( ! $q->is_main_query() ) return;

if ( ! $q->is_post_type_archive() ) return;


if ( ! is_admin() && is_shop() && isset($_GET['sp']) && $_GET['sp'] ) {
$q->set( 's', $_GET['sp']);
}

remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

}

add_action( 'pre_get_posts', 'woo_custom_pre_get_posts_query' );

就是在当前页面传一个sp搜索参数来获取搜索结果。

原文链接:https://www.dqzy.cn/2025/04/07/244.html,转载请注明出处。 1、本站所有源码资源(包括源代码、软件、学习资料等)仅供研究学习以及参考等合法使用,请勿用于商业用途以及违法使用。如本站不慎侵犯您的版权请联系我们,我们将及时处理,并撤下相关内容! 2、访问本站的用户必须明白,本站对所提供下载的软件和程序代码不拥有任何权利,其版权归该软件和程序代码的合法拥有者所有,请用户在下载使用前必须详细阅读并遵守软件作者的“使用许可协议”,本站仅仅是一个学习交流的平台。 3、如下载的压缩包需要解压密码,若无特殊说明,那么文件的解压密码则为:www.dqzy.cn。 4、点启资源网是一个免费且专业分享网站源码、图片素材、特效代码、教程文章、站长工具的平台。我们努力给站长提供好的资源!
0

评论0

请先
显示验证码
没有账号?注册  忘记密码?