Ну, я пытаюсь создать модуль со связанными продуктами, которые есть в моем магазине.В моем шаблоне есть файл по маршруту /theme-name/woocommerce/single-product/related.php.В этом мы можем увидеть некоторый код того, как он вызывает соответствующий продукт.Он использует шаблон в качестве страницы списка товаров (тот же шаблон), но когда я попытался показать эскиз или цену, он не работает.Это только показывает мне название продукта, ничего больше.
Это код, который я имею в своем шаблоне для файла /related.php
<?php
if ( $related_products ) : ?>
<section id="nm-related" class="related products">
<div class="nm-row">
<div class="col-xs-12">
<h2><?php esc_html_e( 'Related products', 'woocommerce' ); ?></h2>
<?php woocommerce_product_loop_start(); ?>
<?php foreach ( $related_products as $related_product ) : ?>
<?php
$post_object = get_post( $related_product->get_id() );
setup_postdata( $GLOBALS['post'] =& $post_object );
wc_get_template_part( 'content', 'product' ); ?>
<?php endforeach; ?>
<?php woocommerce_product_loop_end(); ?>
</div>
</div>
</section>
<?php endif;
После этого я использую "шаблон "product-product", такой как страница со списком, где у меня нет проблем.
Например, чтобы показать миниатюру продукта, я попробовал это:
<div class="nm-shop-loop-thumbnail nm-loader">
<a href="<?php echo esc_url( get_permalink() ); ?>" class="nm-shop-loop-thumbnail-link woocommerce-LoopProduct-link">
<?php
$id_pro = get_the_ID();
$pro_2 = get_post_thumbnail_id($id_pro);
$featured_image_url = wp_get_attachment_url( $pro_2 );
if(! empty( $featured_image_url )) { ?>
<?php
/**
* Hook: woocommerce_before_shop_loop_item_title.
*
* @hooked woocommerce_show_product_loop_sale_flash - 10
* @hooked woocommerce_template_loop_product_thumbnail - 10
*/
do_action( 'woocommerce_before_shop_loop_item_title' );
} else { ?>
<img src="https://cdn.mtods.ch/wp-content/uploads/sites/2/20190409092145/nopic.jpg" data-src="https://cdn.mtods.ch/wp-content/uploads/sites/2/20190409092145/nopic.jpg" data-srcset="https://cdn.mtods.ch/wp-content/uploads/sites/2/20190409092145/nopic.jpg 350w, https://cdn.mtods.ch/wp-content/uploads/sites/2/20190409092145/nopic.jpg 250w, https://cdn.mtods.ch/wp-content/uploads/sites/2/20190409092145/nopic.jpg 400w" alt="" sizes="(max-width: 350px) 100vw, 350px" width="350" height="420" class="attachment-woocommerce_thumbnail size-woocommerce_thumbnail wp-post-image lazyloaded" srcset="https://cdn.mtods.ch/wp-content/uploads/sites/2/20190409092145/nopic.jpg 350w, https://cdn.mtods.ch/wp-content/uploads/sites/2/20190409092145/nopic.jpg 250w, https://cdn.mtods.ch/wp-content/uploads/sites/2/20190409092145/nopic.jpg 400w">
<?php
}
?>
</a>
</div>
И, как я сказал, он работает для страницы со списком, но не внутри одностраничного продукта в разделе сопутствующих товаров.
Переменная $ id_pro работает на обеих страницах, она показывает идентификатор продукта, но когда я пытаюсь получить миниатюру URL с этим идентификатором, она возвращает меня "".
В первойimage Вы можете увидеть пример для страницы со списком, с другой стороны, на втором изображении вы можете увидеть пример для связанных продуктов для одной страницы продукта: