Замените название продукта на SKU в WooCommerce магазине, корзине и страницах оформления заказа - PullRequest
1 голос
/ 27 апреля 2019

Используя Woocommerce, я хотел бы добавить SKU вместо названия продукта на следующих страницах: страница магазина, страница корзины и страница оформления заказа.

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

add_action( 'woocommerce_shop_loop_item_title', 'sku_before_title', 9 );
function sku_before_title()  {

    global $product;

    $sku = $product->get_sku();
    echo '<p class="name product-title">Product ' . $sku . '</p>';
}

Какой правильный код должен иметь SKU вместо названия продукта и сохранять ту же ссылку и CSS, что и название продукта? Код для страницы магазина и страницы корзины и страницы оформления заказа.

1 Ответ

1 голос
/ 28 апреля 2019

Для замены названия продукта на sku на страницах архива WooCommerce вы будете использовать:

// Frontend: On shop and archives pages
add_action( 'woocommerce_shop_loop_item_title', 'sku_replace_title_on_loop', 9 );
function sku_replace_title_on_loop()  {
    global $product;

    // Remove the product title
    remove_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title', 10 );

    $sku = $product->get_sku();

    // Replace the title by the Sku if is not empty
    $title = empty($sku) ? get_the_title() : $sku;

    // Output
    echo '<h2 class="' . esc_attr( apply_filters( 'woocommerce_product_loop_title_classes', 'woocommerce-loop-product__title' ) ) . '">' . $title . '</h2>';
}

Для страниц корзины и оформления заказа вы будете использовать:

// Frontend: on cart, minicart and checkout
add_filter( 'woocommerce_cart_item_name', 'sku_replace_title_on_cart_checkout', 10, 3 );
function sku_replace_title_on_cart_checkout( $item_name, $cart_item, $cart_item_key ) {
    if( $sku = $cart_item['data']->get_sku() ) {
        if( is_cart() ) {
            $item_name = sprintf( '<a href="%s">%s</a>', esc_url( $cart_item['data']->get_permalink( $cart_item ) ), $sku );
        } else {
            $item_name = $sku;
        }
    }
    return $item_name;
}

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

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