Перенаправляет только главную страницу магазина (исключая поиск) на другую страницу в WooCommerce

#wordpress #redirect #woocommerce

Вопрос:

Я протестировал следующий код, чтобы перенаправить главную страницу моего магазина на другую страницу, домашнюю.

Это работает, но также перенаправляет результаты поиска на главную страницу, чтобы люди не могли видеть результаты поиска.

 add_action('template_redirect', 'bc_010101_redirect_woo_pages');
function bc_010101_redirect_woo_pages() {
    if (is_shop())
   {
     wp_redirect('/');
     exit;
   }
}
 

Как это решить?

Ответ №1:

Вы можете добавить is_search() к вашему условию if, которое определяет, предназначен ли запрос для поиска.

Таким образом, вы получаете:

 function action_template_redirect() {   
    /**
     * is_shop() - Returns true when on the product archive page (shop).
     * is_search() - Determines whether the query is for a search.
     *
     * (redirect to home)
     */
    if ( is_shop() amp;amp; ! is_search() ) {
        wp_safe_redirect( home_url() );
        exit;
    }
}
add_action( 'template_redirect', 'action_template_redirect' );
 

ИЛИ, поскольку поиск товара добавляет переменную запроса ‘s’ в URL, вы можете попробовать использовать:

 function action_template_redirect() {   
    /**
     * is_shop() - Returns true when on the product archive page (shop).
     *
     * (redirect to home)
     */
    if ( is_shop() amp;amp; ! isset( $_GET['s'] ) ) {
        wp_safe_redirect( home_url() );
        exit;
    }
}
add_action( 'template_redirect', 'action_template_redirect' );