it-swarm.com.ru

Как отключить/скрыть страницу продукта WooCommerce?

Я пытаюсь скрыть отдельную страницу с описанием товара на моем сайте WordPress WooCommerce. Как я могу достичь этого, не нарушая функциональность woocommerce?

5
wonder

Поместите это в functions.php

//Removes links
add_filter( 'woocommerce_product_is_visible','product_invisible');
function product_invisible(){
    return false;
}

//Remove single page
add_filter( 'woocommerce_register_post_type_product','hide_product_page',12,1);
function hide_product_page($args){
    $args["publicly_queryable"]=false;
    $args["public"]=false;
    return $args;
}
9
Vitaly Gritsienko

Вы можете удалить привязку, созданную на странице магазина, которая никогда не будет перенаправлять пользователя на одну страницу. Для этого вам нужно вставить этот код в ваш файл functions.php.

remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );

Этот код удалит ссылку, но после этого вы также удалите закрывающий тег якоря, только он не нарушит ваш HTML

remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );
9
Ibad Shah

Вы можете зарегистрировать ловушку, которая возвращает 404 в случае страниц продукта, используя вспомогательную функцию is_product()

function prevent_access_to_product_page(){
    global $post;
    if ( is_product() ) {
        global $wp_query;
        $wp_query->set_404();
        status_header(404);
    }
}

add_action('wp','prevent_access_to_product_page');

Решение проверено и работает.

Примечание: решение было каким-то образом основано на некоторой информации из ответа @ ale.

2
MhdSyrwan

Одна страница - это то, что предоставляется из WordPress, и ее невозможно отключить. Но есть несколько способов запретить доступ к одной странице продукта. 

Первый - отредактировать шаблон вашего магазина (products-archive) и удалить все места, где у вас есть ссылка на одну страницу. 

Во-вторых, необходимо проверить каждую загрузку страницы, является ли страница отдельной страницей продукта, и перенаправить пользователя туда, куда вы хотите:

add_action('init','prevent_access_to_product_page');
function prevent_access_to_product_page(){
    if ( is_product() ) {
        wp_redirect( site_url() );//will redirect to home page
    }
}

Вы можете включить этот код в файл functions.php вашего каталога child-themes. Имейте в виду, что я не проверял код.

1
Ale