Перенаправление на определенную страницу c, когда поиск продукта WooCommerce возвращает "продукт не найден" - PullRequest
1 голос
/ 16 июня 2020

В Woocommerce я пытаюсь использовать следующий фрагмент кода для перенаправления на определенную c страницу моего сайта вместо того, чтобы показывать «результат не найден» при поиске пустого продукта.

Теперь шорткод [insert page id="99"] не работает и отображает [insert page id="99"] как обычный текст. Если я использую шорткод, любой шорткод, например '[recent_products per_page="4"]', отображает продукты.

remove_action( 'woocommerce_no_products_found', 'wc_no_products_found' );
add_action( 'woocommerce_no_products_found', 'show_products_on_no_products_found', 20 );
function show_products_on_no_products_found() {
    echo '<h4>' . __( 'Are u looking for this?', 'domain' ) . '</h4>';
    echo do_shortcode( '[insert page id="99"]' );
}

Но я хочу перенаправить на определенную c страницу WordPress с идентификатором публикации 99.

Как перенаправить пользователя на определенную c страницу, когда поиск продукта возвращает «продукт не найден»?

1 Ответ

2 голосов
/ 16 июня 2020

Используя ловушку template_redirect, вы можете перенаправить пользователя на определенную страницу c, когда при поиске по запросу продукта «результаты не найдены», например:

add_action( 'template_redirect', 'no_products_found_redirect' );
function no_products_found_redirect() {
    global $wp_query; 
    if( isset($_GET['s']) && isset($_GET['post_type']) && 'product' === $_GET['post_type'] 
    && ! empty($wp_query) && $wp_query->post_count == 0 ) {
        wp_redirect( get_permalink( 99 ) );
        exit();
    }
}

Код входит в функции. php файл вашей активной дочерней темы (или активной темы). Проверено и работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...