WooCommerce: удалить отзывы, если они пусты - PullRequest
1 голос
/ 31 марта 2020

Я хочу удалить раздел обзора, если нет опубликованного c обзора. Я нашел решение удалить вкладку обзора. Но я уже переместил обзоры в другое место.

Вот мой код, который перемещает содержимое обзора (я также отключил вкладку):

// display tab content elsewhere
function woocommerce_template_product_reviews() {
    woocommerce_get_template( 'single-product-reviews.php' );
}
add_action( 'woocommerce_after_single_product_summary', 'comments_template', 30 );

// remove the tab
add_filter( 'woocommerce_product_tabs', 'remove_product_tabs', 98 );
function remove_product_tabs( $tabs ) {
    unset( $tabs['reviews'] );
    return $tabs;
}

А вот код, который я нашел, чтобы удалить вкладка, если нет отзывов:

add_filter( 'woocommerce_product_tabs', 'delete_tab', 98 );
function delete_tab( $tabs ) {

    global $product;
    $id = $product->id;

    $args = array ('post_type' => 'product', 'post_id' => $id);    
    $comments = get_comments( $args );

    if(empty($comments)) {
        unset( $tabs['reviews'] );
    }

    return $tabs;
}

Нашел здесь: { ссылка }

Проблема в том, что этот код работает, только если отзывы все еще находятся в вкладка.

Я попробовал следующий код, но он не работает:

function woocommerce_template_product_reviews() {

    global $product;
    $id = $product->id;

    $args = array ('post_type' => 'product', 'post_id' => $id);
    $comments = get_comments( $args );

    if(!empty($comments)) {
        woocommerce_get_template( 'single-product-reviews.php' );
    }


}
add_action( 'woocommerce_after_single_product_summary', 'comments_template', 30 );

Есть ли другой способ скрыть обзоры, если нет опубликованного c обзора?

1 Ответ

2 голосов
/ 31 марта 2020

Вы должны сделать ту же проверку, прежде чем перемещать шаблон отзыва.

Таким образом, вы будете показывать свой шаблон, только если есть комментарий с этим кодом:

function woocommerce_template_product_reviews() {
    global $product;
    $id = $product->get_id();

    $args = array ('post_type' => 'product', 'post_id' => $id);    
    $comments = get_comments( $args );

    if(!empty($comments)) {
    wc_get_template( 'single-product-reviews.php' );
    }
}
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_template_product_reviews', 30 );

Сторона обратите внимание, я также изменил $product-> id();, который устарел до новой версии: $product->get_id();

Так что вам также нужно будет отредактировать свой код, чтобы удалить вкладку обзора на продукт без комментариев:

add_filter( 'woocommerce_product_tabs', 'delete_tab', 98 );
function delete_tab( $tabs ) {

    global $product;
    $id = $product->get_id();

    $args = array ('post_type' => 'product', 'post_id' => $id);    
    $comments = get_comments( $args );

    if(empty($comments)) {
        unset( $tabs['reviews'] );
    }

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