正在创建Wordpress URL重定向



我在设置Wordpress URL重定向时遇到了一些问题。

我和WooCommerce一起设计了一个电子商务网站,我想添加一个搜索栏,让我可以搜索商店中的过滤产品。我添加了默认的Wordpress搜索功能,效果很好,但它可以显示整个网站的所有类型的内容(帖子、页面、产品等(。

如果我当前搜索,URL如下:

devsite/?s=searchterm

然而,为了显示商店页面,我需要的URL是这样的:

devsite/?s=searchterm&post_type=product

我已经设法拼凑出以下代码,并将其放在functions.php文件中。然而,当我用搜索词按下搜索键时,网站会出现一个错误,说它被重定向了太多次。

function fb_change_search_url_rewrite() {
if ( is_search() && ! empty( $_GET['s'] ) ) {
wp_redirect( home_url( "?s=" ) . urlencode( get_query_var( 's' ) ) . ( "&post_type=product" ) );
exit();
}   
}
add_action( 'template_redirect', 'fb_change_search_url_rewrite' );

请有人解释一下为什么网页会出现太多重定向错误,以及我可以做些什么来纠正这个问题。我的PHP知识正在增长,但有限,所以任何帮助都将不胜感激。

谢谢。

问题出在您的IF条件下,您正在检查URL是否包含get参数,并且get参数$_GET['s']不为空,并且在IF函数内,您将再次重定向到包含`$_get['s']的URL,该URL带有一个附加的get参数post_type。

试着用下面的方法来做,只需添加另一个检查来检查是否没有指定帖子类型,这不是最好的解决方案,但它可以解决你的问题。

function fb_change_search_url_rewrite() {
if ( is_search() && ! empty( $_GET['s'] ) && empty($_GET['post_type')) ) {
wp_redirect( home_url( "?s=" ) . urlencode( get_query_var( 's' ) ) . ( "&post_type=product" ) );
exit();
}   
}
add_action( 'template_redirect', 'fb_change_search_url_rewrite' );

相关内容

  • 没有找到相关文章