我在设置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' );