Название продукта при оформлении заказа (просмотр заказа) для ссылки на продукт - PullRequest
0 голосов
/ 17 июня 2020

У меня есть код, который я нашел в Интернете, который я немного изменил, чтобы лучше соответствовать теме, с которой я работаю. Чего я не могу понять, так это того, как связать реальный продукт.

Другими словами; название продукта должно быть интерактивным (ссылаться) на страницу продукта. Это происходит на странице корзины, но не при оформлении заказа.

Код, который я использую:

add_filter( 'woocommerce_cart_item_name', 'product_thumbnail_on_checkout_order_review', 20, 3 );
function product_thumbnail_on_checkout_order_review( $product_name, $cart_item, $cart_item_key ){

    if (is_checkout()){

    $thumbnail = $cart_item['data']->get_image(array( 80, 80));

    $image_html = '<div class="product-item-thumbnail">'.$thumbnail.'</div> ';

    $product_name = $image_html . $product_name;

    }

    return $product_name;
}

Я попытался исправить это, посмотрев на шаблон корзины, в котором я нашел это:

$product_permalink = apply_filters( 'woocommerce_cart_item_permalink', $_product->is_visible() ? $_product->get_permalink( $cart_item ) : '', $cart_item, $cart_item_key );

Затем я добавил это в код, превратив его в следующее:

add_filter( 'woocommerce_cart_item_name', 'product_thumbnail_on_checkout_order_review', 20, 3 );
function product_thumbnail_on_checkout_order_review( $product_name, $cart_item, $cart_item_key ){

    if (is_checkout()){

    $thumbnail = $cart_item['data']->get_image(array( 80, 80));

    $image_html = '<div class="product-item-thumbnail">'.$thumbnail.'</div> ';

    $product_name_link = $product_permalink = apply_filters( 'woocommerce_cart_item_permalink', $_product->is_visible() ? $_product->get_permalink( $cart_item ) : '', $cart_item, $cart_item_key );

    $product_name = $image_html . $product_name_link;

    }

    return $product_name;
}

Но это дало мне ошибку, и теперь я застрял.

Notice: Undefined variable: _product

1 Ответ

0 голосов
/ 17 июня 2020

_product не определено, поэтому примечание

Этого должно быть достаточно, комментарий с пояснением добавлен к коду

function product_thumbnail_on_checkout_order_review( $product_name, $cart_item, $cart_item_key ) {
    // Returns true on the checkout page.
    if ( is_checkout() ) {
        // Get product
        $product = $cart_item['data'];

        // Get image - thumbnail
        $thumbnail = $product->get_image(array( 80, 80));

        // Output
        $image_html = '<div class="product-item-thumbnail">' . $thumbnail . '</div>';                   

        // Product name + link
        $product_name_link = '<a href="' . $product->get_permalink() . '">' . $product_name . '</a>';

        // Output
        $product_name = $image_html . $product_name_link;
    }

    return $product_name;
}
add_filter( 'woocommerce_cart_item_name', 'product_thumbnail_on_checkout_order_review', 20, 3 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...