Получить и отобразить связанные продукты в Woocommerce - PullRequest
0 голосов
/ 18 ноября 2018

Я включил продукты, связанные с Woocommerce, в тему со следующим:

<?php wc_get_template( 'single-product/related.php' ); ?>

Это было скопировано в мой шаблон и выполняется.

Однако, несмотря на то, что я добавил в этот продукт различные варианты продаж, переменная $related_products (используемая в цикле) равна NULL. Есть ли другие переменные в игре, чтобы начать показывать эти связанные продукты?

1 Ответ

0 голосов
/ 18 ноября 2018

Вам нужно гораздо больше (а post_id должен быть продуктом) :

global $product; // If not set…

if( ! is_a( $product, 'WC_Product' ) ){
    $product = wc_get_product(get_the_id());
}

$args = array(
    'posts_per_page' => 4,
    'columns'        => 4,
    'orderby'        => 'rand',
    'order'          => 'desc',
);

$args['related_products'] = array_filter( array_map( 'wc_get_product', wc_get_related_products( $product->get_id(), $args['posts_per_page'], $product->get_upsell_ids() ) ), 'wc_products_array_filter_visible' );
$args['related_products'] = wc_products_array_orderby( $args['related_products'], $args['orderby'], $args['order'] );

// Set global loop values.
wc_set_loop_prop( 'name', 'related' );
wc_set_loop_prop( 'columns', $args['columns'] );

wc_get_template( 'single-product/related.php', $args );

Или, короче, (что даст вам то же самое) :

global $product;

if( ! is_a( $product, 'WC_Product' ) ){
    $product = wc_get_product(get_the_id());
}

woocommerce_related_products( array(
    'posts_per_page' => 4,
    'columns'        => 4,
    'orderby'        => 'rand'
) );

Оба способа проверены и работают…

...