未找到产品结果时将搜索重定向到表单

时间:2020-06-17 作者:imatec

网站有内部产品搜索。如果查询没有结果,我想重定向到联系人表单,并将查询传递到表单中的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\' );

1 个回复
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\' );

相关推荐

Wp-query and column blocks

也许这要求太高了,但新的块提供了一种简单的方法来添加响应良好的列。ie您只需将图像拇指放入列块中,它们就可以在移动和桌面上完美工作。有没有办法让WP查询输出the_post_thumbnail 如我在3列行中的参数(12篇x类已发布帖子)所述?