Отключить одну страницу продукта для определенных продуктов в WooCommerce - PullRequest
0 голосов
/ 13 мая 2018

Как бы мы отключили страницу одного продукта для определенных продуктов?

Например, у нас есть некоторые продукты, которые имеют различные варианты. В этом случае мы используем одну страницу продукта. Но для продуктов, у которых нет вариантов, мы просто используем ссылку «добавить в корзину» на целевых страницах и пропускаем страницу с одним продуктом, которая просто добавляет дополнительный шаг для покупателя.

Я нашел это сообщение , в котором рассказывается, как отключить ВСЕ отдельных страниц товара. Но я хотел бы ориентироваться на страницы, которые отключены. Либо по номеру продукта или, возможно, тип продукта список, т.е. переменная, не переменная.

Каков наилучший способ сделать это, не нарушая WooCommerce и не вызывая проблем с SEO?

Чтобы уточнить: под отключенным я имею в виду удаление ссылки на страницу из таких областей, как корзина и т. Д.

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

В следующих функциях вам придется определить один или несколько идентификаторов продукта внутри кода.

Эта первая подключенная функция удалит продукт из каталога продукции:

add_filter( 'woocommerce_product_is_visible', 'filter_product_is_visible', 20, 2 );
function filter_product_is_visible( $is_visible, $product_id ){
    // HERE define your products IDs (or variation IDs) to be set as not visible in the array
    $targeted_ids = array(37, 43, 51);

    if( in_array( $product_id, $targeted_ids ) )
        $is_visible = false;

    return $is_visible;
}

Чтобы удалить ссылку из элементов корзины на странице корзины, вы можете использовать следующее

add_filter( 'woocommerce_cart_item_name', 'filter_cart_item_name', 20, 3 );
function filter_cart_item_name( $product_name, $cart_item, $cart_item_key ) {
    // HERE define your products IDs (or variation IDs) to be set as not visible in the array
    $targeted_ids = array(37, 43, 51);

    if( in_array( $cart_item['data']->get_id(), $targeted_ids ) && is_cart() )
        return $cart_item['data']->get_name();

    return $product_name;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Протестировано и работает.

Также возможно перенаправить страницы целевых продуктов в основной магазин.

0 голосов
/ 13 мая 2018

Вы можете добавить оператор if, возвращающий false. Вы можете либо проверить идентификатор продукта (страницы), либо я бы добавил к ним тег (или категорию, либо настраиваемое поле), а затем в операторе if можно проверить этот тег и, если он там, вы вернете false;

...