网站有内部产品搜索。如果查询没有结果,我想重定向到联系人表单,并将查询传递到表单中的product name字段。我遇到的问题是条件语句。我编写了一些代码来确定查询是否是搜索,以及是否有结果。当我使用&;编写If语句时&;它的计算结果始终为false。如果我像下面那样嵌套它们,它会起作用,但这并不理想。我相信答案很简单,但我对php语法不是很熟悉。谢谢
function no_products_found_redirect($query) {
$search = $query->query[\'s\'];
if ( $query->is_search() ){
if ( have_posts() ) {
echo \'dont do anything\';
}
else{
wp_redirect ( home_url(\'/request-quote/?product_name=\')) . $search;
exit;
}
}
}
add_action( \'pre_get_posts\', \'no_products_found_redirect\' );
SO网友:tousignant.christopher
pre_get_posts
在运行查询之前激发,用于在运行查询之前自定义查询。
请参见此处的挂钩列表,它们是按执行顺序列出的。https://codex.wordpress.org/Plugin_API/Action_Reference
我建议使用一个在查询运行后激发的钩子,例如,template_redirect
在运行查询后立即激发。
function no_products_found_redirect() {
global $wp_query;
if ( $wp_query->is_search && !have_posts() ){
wp_redirect ( home_url(\'/request-quote/?product_name=\' . get_search_query() ) );
exit;
}
}
add_action( \'template_redirect\', \'no_products_found_redirect\' );