【问题标题】:Get and display related products in WooCommerce在 WooCommerce 中获取和显示相关产品
【发布时间】:2019-04-20 17:08:09
【问题描述】:

我已将 WooCommerce 相关产品包含在具有以下内容的主题中:

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

这已被复制到我的模板中并正在执行。

然而,即使我已经对该产品添加了各种追加销售,$related_products 变量(在循环中使用)为 NULL。为了开始展示这些相关产品,是否还有其他变量在起作用?

【问题讨论】:

  • @LoicTheAztec - 完成了伙计,非常感谢您的帮助,毫无疑问,您将来会出现在我标记 woocommerce 的任何内容上。 :)

标签: php wordpress loops woocommerce product


【解决方案1】:

你需要的远不止这些(并且 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'
) );

两种方式都经过测试并且有效……

【讨论】:

  • 在您的 woocommerce_related_products() 函数中,您使用了 3 个右括号而不是 2 个。您当前的代码将不起作用,您只需要 2 个右括号。否则,代码有效。
  • @anthonyCam 对不起,但我在 woocommerce_related_products() 函数代码中只看到 2 个闭合曲线括号,而不是 3 个……我认为你在混淆。
  • 最后一个速记对我不起作用,上面那个对我有用
  • 速记代码对我有用,但它会导致 HTML 结构错误。第一个链接未关闭。我该如何解决?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
相关资源
最近更新 更多