Добавить изображение товара в Woocommerce мой аккаунт
Я хотел бы добавить изображение на страницах порядка просмотра моего аккаунта в Woocommerce. Иногда я могу получить изображение, но его размер слишком велик, и я не знаю, где мне нужно добавить этот код:
<?php
// Get a list of all items that belong to the order
$products = $order->get_items();
// Loop through the items and get the product image
foreach( $products as $product ) {
$product_obj = new WC_Product( $product["product_id"] );
echo $product_obj->get_image();
}
?>
Любая помощь будет оценена
Вот расположение на страницах просмотра заказа, куда я хотел бы добавить изображение товара:
4 ответа
Следующая подключенная функция выполнит эту работу (вам может понадобиться добавить некоторые правила стиля CSS):
// Display the product thumbnail in order view pages
add_filter( 'woocommerce_order_item_name', 'display_product_image_in_order_item', 20, 3 );
function display_product_image_in_order_item( $item_name, $item, $is_visible ) {
// Targeting view order pages only
if( is_wc_endpoint_url( 'view-order' ) ) {
$product = $item->get_product(); // Get the WC_Product object (from order item)
$thumbnail = $product->get_image(array( 36, 36)); // Get the product thumbnail (from product object)
if( $product->get_image_id() > 0 )
$item_name = '<div class="item-thumbnail">' . $thumbnail . '</div>' . $item_name;
}
return $item_name;
}
Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.
Обратите внимание на WC_Product
методget_image()
использует Wordpress get_the_post_thumbnail()
внутренне.
Обновление: добавлено
if( $product->get_image_id() > 0 )
к коду, чтобы отобразить изображение товара, только когда оно существует.
Вместо того, чтобы получить основное изображение, вам просто нужно получить миниатюру с помощью get_the_post_thumbnail():
<?php
// Get a list of all items that belong to the order
$products = $order->get_items();
// Loop through the items and get the product image
foreach( $products as $product ) {
$product_obj = new WC_Product( $product["product_id"] );
echo get_the_post_thumbnail();
}
?>
Напишите это на woocommerce/template/order/ordr-details-item.php
echo '<div class="product-imgae">'.$product->get_image(array( 80, 80)).'</div>';
это даст вам изображение размера 80x80, измените его в соответствии с вашими потребностями.
Я знаю, что эта тема больше для изображения продукта, но как я могу загрузить логотип клиента для варианта продукта, поскольку он не был готов к загрузке. Загрузку и предварительный просмотр я сделал с помощью функции и логики страницы продукта. Но теперь мне не хватает части, чтобы обновить заказ, который не завершен. Я пробовал с этим кодом:
add_filter('woocommerce_order_item_meta_end', '_hook_order_detail_item', 30, 3);
function _hook_order_detail_item($item_id, $item, $order)
{
foreach ($order->get_items() as $inner_item)
{
if ($inner_item['_img_file_degree']&&$item_id===$inner_item->get_id())
{
$_img_file = $inner_item['_img_file'];
$_img_file_title = $_img_file[0]['title'];
//print_r($_img_file_title);
//$order_id = $order->get_order_number();$cart_items = $order->get_items( apply_filters( 'woocommerce_purchase_order_item_types', 'line_item' ) );
//echo '<pre>Hallo<br />'; print_r($cart_items);echo '<br /></pre>';
echo '<ul class="wc-item-meta" style="list-style: none; padding-left: 0; font-size: inherit;"><li><strong class="wc-item-meta-label">' . esc_html__('Bild hochgeladen:', 'woocommerce') . '</strong><span>' . $_img_file_title . '</span></li><li><strong class="wc-item-meta-label">' . esc_html__("Logo-Bilddrehung:", "woocommerce") . '</strong><span>' . $inner_item['_img_file_degree'] . '</span></li></ul>';
}
elseif (is_wc_endpoint_url( 'view-order' ))
{
$order_id = $order->get_order_number();$cart_items = $order->get_items( apply_filters( 'woocommerce_purchase_order_item_types', 'line_item' ) );
$items = $order->get_items();
foreach ( $items as $item ) {
$product_name = $item->get_name();
$product_id = $item->get_product_id();
$product_variation_id = $item->get_variation_id();
};
?><form class="variations_form" method="post"><?php display_additional_product_fields();
// echo '<pre>Hallo<br />'; print_r($product_variation_id);echo '<br /></pre>';
?><button type="submit" class="button" name="update_product" id="image_variant_upload" value="<?php esc_attr_e( 'Update product', 'woocommerce' ); ?>"><?php esc_html_e( 'Update product', 'woocommerce' ); ?>
</button>
<input type="hidden" name="product_id" value="<?php echo $product_id; ?>">
<input type="hidden" name="variation_id" class="variation_id" value="<?php echo $product_variation_id; ?>">
</form><?php
if(array_key_exists('update_product', $_POST)) {add_custom_fields_data_as_custom_cart_item_data($cart_item, $product_id);};
);
};
}
}
Этот код находится в том же файле, что и add_action для добавления логотипа в корзину в качестве загружаемого изображения варианта продукта.